Merhaba,
Bu yazımda Oracle veritabanında önemli bir yer tutan parametre dosyalarını anlatacağım. Bu parametre dosyaları Oracle instance sı açılırken ortaya çıkar ve sonradan bu parametre dosyalarının içeriğini dinamik yada statik olarak değiştirebiliriz.Oracle Veritabanımızda SPFILE ve PFILE olmak üzere birbirinin aynısı 2 parametre dosyası vardır bu 2 parametre dosyasının görevleri aynı olsada yapısal ve kullanımsal olarak bazı farklılıkları vardır bu yüzden her ikisini aşağıda ayrı ayrı irdeleyeceğim.
SPFILE (Server Parameter File): Oracle instance sı açılırken instance ın konfigüre edilebilmesi için gereken parametrelerin saklandığı binary formatlı .ora uzantılı fiziksel bir dosyadır. Linux tabanlı Sunucular üzerinde genellikle $ORACLE_HOME/dbs dizini altında bulunur. Spfile dosyası işletim sistemi üzerinde spfile<ORACLE_SID>.ora formatıyla bulunur. Ayrıca bu dosyanın yerini veritabanından aşağıdaki gibi öğrenebilirsiniz.
bash-4.1$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Mon May 6 10:41:35 2013 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> show parameter spfile; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string /oracle/product/11.2.0/db/dbs/spfileTESTDB.ora SQL>
Bu dosya veritabanı açılırken nomount adımında kullanılır, burda aşağıda göstereceğim parametreler okunarak instance yapılanır. Spfile yada pfile dosyası olmadan instance başlatılamaz çünkü veritabanının beyni olan controlfile ın adresi bu parametre dosyasında bulunur. Bu dosya binary formatta olduğu için direk açamayız ancak aşağıdaki gibi strings ifadesini kullanarak kullanıcının anlayacağı hale dönüştürebiliriz. Spfile ın önemini anlatmak için bu parametre dosyasındaki parametrelerin neler olduğunu aşağıdaki gibi listeleyeceğim.
bash-4.1$ strings /oracle/product/11.2.0/db/dbs/spfileTESTDB.ora TESTDB.__db_cache_size=184549376 TESTDB.__java_pool_size=4194304 TESTDB.__large_pool_size=4194304 TESTDB.__oracle_base='/oracle'#ORACLE_BASE set from environment TESTDB.__pga_aggregate_target=2764046336 TESTDB.__sga_target=536870912 TESTDB.__shared_io_pool_size=0 TESTDB.__shared_pool_size=331350016 TESTDB.__streams_pool_size=0 *.audit_file_dest='/oracle/admin/TESTDB/adump' *.audit_trail='db' *.compatible='11.2.0.0.0' *.control_files='/oracle/data/TESTDB/control01.ctl','/oracle/data/TESTDB/control02.ctl' *.db_block_size=8192 *.db_domain='' *.db_file_name_convert='/oracle/data/TESTDB/','/oracle/data/TESTDG/' *.db_name='TESTDB' *.db_recovery_file_dest_size=2070572032 *.db_recovery_file_dest='/oracle/recovery_area' *.db_unique_name='TESTDB' *.db_writer_processes=1 *.diagnostic_dest='/oracle' *.dispatchers='(PROTOCOL=TCP) (SERVICE=TESTDBXDB)' *.fal_server='TESTDG' *.log_archive_config='DG_CONFIG=(TESTDB,TESTDG,)' *.log_archive_dest_1='LOCATION=/oracle/ARCH' *.log_arc hive_dest_2='SERVICE=TESTDG LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TESTDG' *.log_archive_dest_state_1='ENABLE' *.log_archive_dest_state_2='ENABLE' *.log_archive_format='%t_%s_%r.arc' *.log_archive_max_processes=30 *.log_file_name_convert='/oracle/data/TESTDB/','/oracle/data/TESTDG/' *.open_cursors=300 *.pga_aggregate_target=2762997760 *.processes=150 *.remote_login_passwordfile='EXCLUSIVE' *.sga_target=536870912 *.undo_tablespace='UNDOTBS1' bash-4.1$
Yukarda ki parametrelerden çok önemli olanlarından bazılarını kırmızı kalın harflerle belirttim, bu parametreleri Oracle okumadan instance ayağa kalkamaz. Veritabanı ilk başladığı zaman mutlaka olması gereken ve çok önemli olan parametreleri veritabanından aşağıdaki gibi sorgulayabiliriz.
bash-4.1$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Mon May 6 10:55:50 2013 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> select name from v$parameter where isbasic='TRUE'; NAME -------------------------------------------------------------------------------- processes sessions nls_language nls_territory sga_target control_files db_block_size compatible log_archive_dest_1 log_archive_dest_2 log_archive_dest_state_1 NAME -------------------------------------------------------------------------------- log_archive_dest_state_2 cluster_database db_create_file_dest db_create_online_log_dest_1 db_create_online_log_dest_2 db_recovery_file_dest db_recovery_file_dest_size undo_tablespace instance_number ldap_directory_sysauth remote_login_passwordfile NAME -------------------------------------------------------------------------------- db_domain shared_servers remote_listener db_name db_unique_name open_cursors star_transformation_enabled pga_aggregate_target 30 rows selected. SQL>
PFILE ( Parameter File ): Pfile parametre dosyası içerik ve görev yönüyle Spfile ile aynıdır fakat pfile işletim sistemi üzerinde binary olarak değil normal karakter formatında tutulur. PFile dosyası işletim sistemi üzerinde init<ORACLE_SID>.ora adıyla oluşur. PFILE veritabanında olmak zorunda değildir sadece spfile ilede çalışılabilir. İlk veritabanı kurulduğunda pfile dosyası oluşmaz sadece spfile dosyası oluşur. Pfile dosyası metin içerikli olduğu için bazen bir parametreyi pfile de değiştirmek daha kolay olduğu için spfile dan pfile dosyası oluşturulur. Spfile dosyasından pfile dosyası aşağıdaki gibi oluşturulur.
bash-4.1$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Mon May 6 11:03:55 2013 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> create pfile from spfile; File created. SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options bash-4.1$ ls -l *initT* -rw-r--r-- 1 oracle oinstall 1449 May 6 11:04 initTESTDB.ora bash-4.1$
Yukarda belirttiğim gibi Oracle instance sının açılması için bunlardan birinin olması yeterlidir fakat instance açılırken her iki dosyada mevcut ise Oracle spfile ı kullanıp veritabanını açar.
Spfile dosyası metin içerikli olmadığı için burada parametreleri pfile da olduğu gibi dosyayı açıp direk değiştiremezsiniz, spfile da herhangi bir parametreyi aşağıdaki gibi SQL*Plus üzerinden değiştirebilirsiniz.
bash-4.1$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Mon May 6 11:16:52 2013 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> show parameter log_archive_max_processes; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_max_processes integer 30 SQL> alter system set log_archive_max_processes=20 scope=BOTH; System altered. SQL> show parameter log_archive_max_processes; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_max_processes integer 20 SQL>
Yukardaki parametre dinamik bir parametre olduğu için direk değiştirebildik bazı parametrelerde yukardaki gibi direk değiştirilemez bu parametreleri spfile da değiştirip veritabanını restart ettirdiğimiz zaman bu parametrenin etkisini görebiriz. Scope parametresine BOTH dediğimiz zaman hemen değişikliği yap diyoruz, dinamik parametreler yukardaki gibi değişiyor statik parametreleri ise bu şekilde değiştirince hata verir o tip parametreleri Scope=spfile diyerek değiştirebiliriz. Bu parametrelerin etkisini sistemi restart edince aşağıdaki gibi görebilirsiniz.
Aşağıda bunun örneğini 6 adımda göstereceğim. Veritabanına ait çalışan process parametresi statik bir parametredir bunu değiştirme işlemi aşağıdaki gibidir.
1.Adım: Veritabanına bağlanıp bu parametrenin ilk değerini öğreniyoruz. bash-4.1$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Mon May 6 11:20:51 2013 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> show parameter processes NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ aq_tm_processes integer 1 db_writer_processes integer 1 gcs_server_processes integer 0 global_txn_processes integer 1 job_queue_processes integer 1000 log_archive_max_processes integer 20 processes integer 150 2.Adım: Bu adımda 150 olan değeri 1000 olarak dinamik bir biçimde değiştirmek istediğimde aşağıdaki hatayı alıyorum. SQL> alter system set processes=1000 scope=BOTH; alter system set processes=1000 scope=BOTH * ERROR at line 1: ORA-02095: specified initialization parameter cannot be modified 3.Adım: Yukarda dinamik olarak değiştiremediğim parametreyi aşağıdaki gibi statik olarak değiştiriyorum. SQL> alter system set processes=1000 scope=spfile; System altered. 4.Adım: Parametrenin değerini tekrar kontrol ettiğimde statik olarak değiştirdiğim için parametrenin değiştirilmiş halini göremiyorum bunu görmem için veritabanını kapatıp açmam gerekiyor. SQL> show parameter processes; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ aq_tm_processes integer 1 db_writer_processes integer 1 gcs_server_processes integer 0 global_txn_processes integer 1 job_queue_processes integer 1000 log_archive_max_processes integer 20 processes integer 150 5.Adım: Veritabanını aşağıdaki gibi tutarlı bir şekilde kapatıp açıyorum. SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 534462464 bytes Fixed Size 2230072 bytes Variable Size 339740872 bytes Database Buffers 184549376 bytes Redo Buffers 7942144 bytes Database mounted. Database opened. 6.Adım: Veritabanı tutarli bir şekilde restart olduktan sonra tekrar parametrenin değerini kontrol ettiğimde parametrenin değiştiğini görüyorum. SQL> show parameter processes; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ aq_tm_processes integer 1 db_writer_processes integer 1 gcs_server_processes integer 0 global_txn_processes integer 1 job_queue_processes integer 1000 log_archive_max_processes integer 20 processes integer 1000 SQL>
Spfile dosyamız çok önemli olduğu için alınan full backuplarla birlikte spfile ında backup ının sürekli olarak alınması gerekmektedir. Spfile dosyasının da otomatik olarak yedeklenmesi için veritabanının otomatik yedekleme ( autobackup ) modunda olması gerekir. Bunuda aşağıdaki gibi RMAN tool u üzerinde yapabiliriz.
bash-4.1$ rman target / Recovery Manager: Release 11.2.0.3.0 - Production on Mon Oct 7 11:38:40 2013 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database: TESTDB (DBID=2602199602) RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON; using target database control file instead of recovery catalog old RMAN configuration parameters: CONFIGURE CONTROLFILE AUTOBACKUP OFF; new RMAN configuration parameters: CONFIGURE CONTROLFILE AUTOBACKUP ON; new RMAN configuration parameters are successfully stored RMAN>
Yukardaki gibi Control file ın otomatik olarak backup ının alınmasını sağladığımız takdirde her backup operasyonu gerçekleştiğinde Spfile ın kopyasıda aşağıda kırmızı kalın harfle gösterdiğim Autobackup ın set edildiği path in bulunduğu yere kopyalanır.
bash-4.1$ rman target /
Recovery Manager: Release 11.2.0.3.0 - Production on Mon Oct 7 11:41:49 2013
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: TESTDB (DBID=2602199602)
RMAN> show all;
using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name TESTDB are:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/oracle/recovery_area/ctrl_%F';
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 2 G;
CONFIGURE MAXSETSIZE TO 4 G;
CONFIGURE ENCRYPTION FOR DATABASE ON;
CONFIGURE ENCRYPTION ALGORITHM 'AES128';
CONFIGURE COMPRESSION ALGORITHM 'LOW' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE;
CONFIGURE ARCHIVELOG DELETION POLICY TO SHIPPED TO ALL STANDBY;
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/oracle/product/11.2.0/db/dbs/snapcf_TESTDB.f';
RMAN>
Ayrıca spfile içerisinde kritik bir değişiklik yapıyorsanız spfile içerisinden operasyon öncesinde farklı bir path de pfile oluşturup kendinizi garantiye alabilirsiniz.Bu durumda yaptığınız değişiklik sonrasında instance açılmadığı takdirde veritabanını operasyon öncesi almış olduğunuz pfile den açabilirsiniz. Spfile den /oracle dizini altında pfile aşağıdaki gibi oluşturulabilir.
bash-4.1$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Mon May 6 11:46:07 2013 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> create pfile='/oracle/initTESTDB.ora' from spfile; File created. SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options bash-4.1$ ls -l *initTE* -rw-r--r-- 1 oracle oinstall 1450 May 6 11:46 initTESTDB.ora bash-4.1$ pwd /oracle bash-4.1$
Böylece bu yazımın sonuna gelmiş bulunmaktayım bir sonraki yazıda görüşmek dileğiyle Esen kalın.
Oracle Exadata SQL Server Goldengate Weblogic EBS ve Linux konusunda aşağıdaki konularda 7×24 Uzman Danışmanlara yada Eğitimlere mi
İhtiyacınız var mehmet.deveci@gridgroup.com.tr adresine mail atarak Bizimle iletişime geçebilirsiniz.
– Oracle Veritabanı Danışmanlığı
– Oracle Veritabanı Bakım ve Destek
– Exadata Danışmanlığı
– Exadata Bakım ve Destek
– SQL Server Veritabanı Danışmanlığı
– SQL Server Veritabanı Bakım ve Destek
– Goldengate Danışmanlığı
– Goldengate Bakım ve Destek
– Linux Danışmanlığı
– Linux Bakım ve Destek
– Oracle EBS Danışmanlığı
– Oracle EBS Bakım ve Destek
– Weblogic Danışmanlığı
– Weblogic Bakım ve Destek
– Oracle Veritabanı Eğitimleri
– Oracle VM Server Danışmanlığı
– Oracle VM Server Bakım ve Destek
– Oracle EPPM Danışmanlığı
– Oracle EPPM Bakım ve Destek
– Oracle Primavera Danışmanlığı
– Oracle Primavera Bakım ve Destek
– Oracle Eğitimleri
– SQL Server Eğitimleri
– Goldengate Eğitimleri
– Exadata Eğitimleri
– Linux Eğitimleri
– Oracle EBS Eğitimleri
– Oracle VM Server Eğitimleri
– Weblogic Eğitimleri
– Oracle EPPM Eğitimleri
– Oracle Primavera Eğitimleri