Oracle’ın çalışabilmek
için gerek duyduğu temel bazı öğeleri, parametre dosyalarında tutarız.
Oracle ilk başladığında parametre dosyalarını okur
ve sisteme dair birçok
ayara buradan ulaşır. Aynı anda çalışabilecek
işlem adedi (*.processes); arşiv dosyalarının lokasyonunun
neresi olacağı (*.log_archive_dest); kaç dakikada bir arşive
çıkılacağı (*.archive_lag_target); control file’ların lokasyonları (*.control_files); backgroud dump, user dump
gibi klasörlerin nerelerde konumlandırıldığı
(*.background_dump_dest, *.user_dump_dest) vb. bilgiler
parametre dosyaları içinde saklanır. Bu değişkenlere parametre denmektedir ve hep birlikte parametre dosyasını oluştururlar.
2. Oracle PFILE (Parameter File)
Kullanıcıların üzerinde değişiklik yapabildiği, metin tabanlı
dosyalardır.
Bu parametreler, veritabanının hangi ayarlarla
başlatılacağını belirler.
Örneğin, control_files parametresi, kontrol dosyalarının
dizinlerini tutarken; audit_file_dest parametresi
audit dosyalarının dizinlerini tutmaktadır. open_cursors parametresi aynı anda açık
olabilecek maksimum cursor sayısını tutarken processes parametresi aynı anda çalışabilecek işlem sayısını tutmaktadır.
Oracle parametrelerini tutan
PFILE bir metin dosyasıdır. İçerisine girip,
dilediğiniz değişiklikleri yapabilirsiniz. PFILE init<SID>.ora ya da init.ora şeklinde geçer ve $ORACLE_HOME/dbs/ klasörü altında bulunur.
(Windows kullanıyorsanız, ORACLE_HOME\database\ altına bakmanız gerekebilir.yada C:\app\Administrator\admin\orcl\pfile )
3. Oracle SPFILE (Server Parameter File)
Oracle 9i ile gelen parametre dosyası tipidir. PFILE,
text-based yapıdayken ve üzerinde herhangi bir metin editörü ile değişiklik
yapabilirken; SPFILE, binary yapıya sahiptir ve değişiklikler sadece ALTER SYSTEM SET komutlarıyla gerçekleştirilebilir.
Oracle'ın otomatik performans
iyileştirme yöntemleri için SPFILE kullanımı
tavsiye edilmektedir.Ayrıca RMAN sayesinde,
SPFILE’larınızın otomatik olarak yedeklenmesi
sağlanabilir; sizin kopyalamanız gerekmez. Böylece
parametrelerle ilgili değişiklik yaptığınız her
seferde tekrar tekrar yedek almanız
gerekmez. Her yedek alınmasında SPFILE’in
yedeği de alınacaktır.
***Veritabanını
kapatıp açmaya gerek duymadan kalıcı parametrelerin değerlerini
değiştirebiliriz. Böylece veritabanı gerçek zamanlı olarak yeni parametrelere
göre davranabilir. Ayrıca veritabanı kapatılıp açıldıktan sonra da aynı şekilde
korunmaya devam eder. PFILE dosyalarındaki değişiklikler, sistem yeninden
başlatılınca siliniyordu.
***SPFILE sayesinde automatic tuning
rahat ve hızlı bir şekilde içsel olarak yapılabiliyor. SPFILE kullanmıyorsanız
automatic tuning yapılamaz.
SPFILE’ların tutulduğu klasör
yine $ORACLE_HOME/dbs/ altıdır. Dosya
isimlendirmesinde de spfile<SID>.ora veya spfile.ora kullanılır.
The Parameter File at Startup Time
Oracle Spfile parameterini Pfile ye gore tercih eder.
Oracle Database startup oldugu zaman Oracle Parameter directory’nin contents
control eder. ($ORACLE_HOME/database Windows uzerinde yada Linux directory ismi $ORACLE_HOME/dbs),Ve
asagidaki file’leri sirasi ile arastirir:
* spfileSID.ora
* spfile.ora
* initSID.ora
* init.ora
Eger
directory hicbirine ayit degilse ozaman startup fail olacak.
8. PFILE/SPFILE Kullanımına Dair Detaylar
Kullandığınız veritabanının hangi parametre dosyasını kullandığını merak
ediyorsanız aşağıdaki plsql komutunu çalıştırabilirsiniz.
SELECT DECODE(value, NULL, 'PFILE', 'SPFILE') "Init File Type"
FROM sys.v_$parameter
WHERE name = 'spfile';
Eğer value kolonundaki tüm
değerler null ise PFILE değilse SPFILE kullanılıyordur.
Sisteminiz SPFILE ile çalışıyorsa, SPFILE’in lokasyonunu da saptayabilirsiniz. Bunun için
yine v$parameter görüntüsünden yararlanırız:
SELECT VALUE FROM v$parameter WHERE NAME='spfile';
Parametrelerin değiştirilmesi
SQL> ALTER SYSTEM SET PARAMETER_NAME=VALUE;
Eğer parametre dosyası olarak SPFILE kullanıyorsanız, yukarıda girdiğiniz değer hep geçerli olacaktır. Veritabanı
tekrar başladığında yine ayar girmeniz gerekmez;
çünkü spfile dosyasında girmiş olduğunuz değer
tutulur. Bu durumu, PFILE ile sağlamak mümkün değildir.
Yaptığınız bir değişikliği PFILE’a girmeyi
unutursanız, problem yaratabilir; hâlbuki SPFILE
için böyle bir problem olmadığını görüyoruz.
4. PFILE (Parameter File) ve SPFILE (Server Parameter File) Yönetimi
Aktif oturuma ait parametre değerlerini aşağıdaki gibi alabilirsiniz;
SQL> SHOW PARAMETER
[PARAMETRE_ADI];
Örneğin aynı anda çalışabilecek
sga_max_size sayısını görmek istersek show
parameter komutundan yararlanırız:
SQL> SHOW PARAMETER
SGA_MAX_SIZE;
İkinci bir yöntem ise, v$parameter sistem bilgileri görüntüsünden (view) yararlanmaktır.
v$parameter içerisinde bütün parametre simlerini, taşıdıkları değerle birlikte gösterir. Parametre görüntüsüne ait sütunları aşağıdaki gibi görebilirsiniz:
SQL> DESC V$PARAMETER;
Diğer bir yöntem ise, spfile dosyasının içeriğini metin dosyası formatında bir pfile’a dönüştürmektir.
SQL> CREATE SPFILE ='spfile adresiniz/spfile.ora' FROM PFILE='pfile adresiniz/init.ora';
Oluşturulacak olan pfile dosyasını $ORACLE_HOME/dbs altında init<SID>.ora
şeklinde bulabilirsiniz. Bu dosyayı farklı
lokasyonlarda oluşturmakta mümkündür. Örneğin, /tmp/ klasörü altında VEYSI.text adıyla da oluşturabilirsiniz:
SQL> CREATE PFILE='/TMP/VEYSI.TEXT' FROM SPFILE;
5. SPFILE Değerlerini Değiştirmek
SPFILE binary formatta bir dosya türüdür ve bir metin editöründe açıp değiştirilmesi olanaklı Değildir
.Bu yuzden icini acip degisiklip yapma imkanimiz yoktur.
Oracle veritabanı birçok parametrenin online olarak değişmesine olanak vermektedir. Bunun
anlamı, parametre değişikliklerinin
geçerli olması için işletim sisteminin
yeniden başlatılmasına
gerek olmamasıdır. Bu oldukça yararlı ve
gerekli bir özellik!
ALTER SYSTEM SET dedikten sonra parametre adı belirtip, yeni değer veriyoruz. SCOPE kısmında üç değer verilebilir;
‐ MEMORY: Ayarlanan değer
sadece geçerli olan Oracle
'instance' için ayarlanacaktır. Bunun anlamı,
veritabanını yeniden başlattığınızda girmiş olduğunuz
değerin kaybolayacağıdır.Ancak Oracle kapanana kadar girilen değer kalır. ‐ SPFILE: Girdiğiniz değer veritabanının bir sonraki başlamasında geçerli olacaktır.
‐ BOTH: Verilen değer, hem hemen
uygulamaya alınacak, hem de Oracle’in bundan
sonraki açılışlarında da geçerliliğini
koruyacaktır. Bir nevi (MEMORY+SPFILE) şeklinde
üşünebiliriz.
Eğer scope değerini girmezseniz, değeri BOTH olarak kabul edilecektir.
sql> SHOW PARAMETER SGA;
sql> ALTER SYSTEM SET SGA_MAX_SIZE=800M;
sql> ALTER SYSTEM SET SGA_MAX_SIZE=800M SCOPE=MEMORY;
sql> ALTER SYSTEM SET SGA_MAX_SIZE=800M SCOPE=SPFILE;
sql> ALTER SYSTEM SET SGA_TARGET=500M;
SQL
> ALTER SYSTEM SET open_cursors=341 SCOPE=SPFILE SID=’*’ ;
SID parametresi ise RAC
sistemlerde kullanılır. Değişikliklerden hangi instance ların etkileneceğini
belirler. SID=’*’ ile bu güncellemenin tüm instance lar için geçerli olacağını
ANLARIZ…
Parameter
File Search Order in Oracle RAC
Oracle veritabaninda RAC SySTEMINDE BULUNAN PARAMETER FILER!
1. $ORACLE_HOME/dbs/spfilesid.ora
2. $ORACLE_HOME/dbs/spfile.ora
3. $ORACLE_HOME/dbs/initsid.ora
6. SPFILE’i, PFILE’dan Yararlanarak Yeniden Oluşturmak
Veritabanında bir karar alındı ve bir takım değişiklikler yapmanız gerekiyor diye düşünelim. Örneğin arşive çıkılacak dosyaları /data2/archive yerine artık, /data5/archive
altına kopyalamamız gereksin.
Bu gibi bir durumda
spfile’i bir pfile’a dönüştürmek; ardından pfile
içinde değişiklik yapmak ve son olarak pfile’dan tekrar spfile yaratmak gerekir. Adım adım aşağıdaki işlemleri uygulayalım.
1.
SPFILE dosyasından, metin formatında bir PFILE oluşturuyoruz:
SQL> CREATE PFILE='/TMP/VEYSI_DENEME.TEXT' FROM SPFILE;
2.
PFILE dosyasını açıp, log_archive_dest parametresinde ilgili değişiklikleri yapıyoruz.
SQL> ! vi /tmp/VEYSI_deneme.text
...
3.
Çalışmakta olan bir veritabanının spfile'ini ezemeyeceğimiz için veritabanını kapatıyoruz.
SQL> SHUTDOWN IMMEDIATE;
4.
Değişiklik yaptığımız pfile'i kullanarak yeni bir spfile oluşturuyoruz.
SQL> CREATE SPFILE FROM PFILE='/TMP/VEYSI_DENEME.TEXT';
5. Veritabanını açıyoruz.:
SQL> ALTER DATABASE OPEN;
SPFILE’i
direkt değiştiremediğimiz için, onu önce
bir PFILE’a dönüştürüp, ilgili değişikliği
yaptık
ve sonrasında yeni bir SPFILE yarattık.
NOTE:Oracle PFILE’in, $ORACLE_HOME/dbs altında init.ora olarak kaydedilmesi
de mümkündür.
Gerek PFILE, gerekse SPFILE farklı lokasyonlardan, farklı isimlerle de kullanılabilir
SPFILE’IN YEDEGINI
ALMAK
SQL> CREATE SPFILE='/DATA2/SPFILE_YEDEK.ORA' FROM PFILE='/TMP/VEYSI_DENEME.TEXT';
9. Veritabanını PFILE ile Açmak
SQL> STARTUP
PFILE='/TMP/VEYSI_DENEME.TEXT';
STARTUP PFILE=$ORACLE_HOME/dbs/initsid.ora
Oracle veritabanındaki V$Parameter viewını ve parametrelerin hangilerinin Session
hangilerinin System bazında değiştirlebileceğini ve hangilerini değiştirmek
için database’i restart etmemiz gerektiğini Gorelim. Oracle veritabanında
parametrelerin nasıl değiştirildiğini (Alter Session set
Param_name=value; vb) artik biliyoruz.
Bildiğiniz üzere V$Parameter view ını database deki parametrelerin değerlerini ve
türlerini görmek için kullanıyoruz. Bu view daki alanlar bize o parametrenin
hangi bazda değiştirilebileceğini gösteriyor.
IsSess_Modifiable alanı bu parametrenin bir session bazında değiştirilip
değiştirilemeyeceğini gösterir. TRUE veya FALSE değerlerine göre değişip
değişmeyeceğini anlıyoruz.
IsInstance_Modifiable alanı bu parametrenin doğrudan databasede değiştirilip
değiştirilemeyeceğini gösterir. Doğrudan değiştirmekten kasıt, scope=SPFILE demeden, yani bir parametrenin değerini system bazında
değiştirebiliyor ve bu değişiklik anında geçerli oluyor ise bu alanının
değerini TRUE olarak görüyorsunuz. FALSE değerine sahip parametreler için database
restart edilmelidir.
IsSys_Modifiable alanı 3 değer alır. FALSE, IMMEDIATE, DEFERRED.
False o parametrenin SPFILE da değiştirilebileceğini,
IMMEDIATE o parametrenin değeri değiştirildiği andan itibaren
geçerli olacağını,
DEFERRED ise o parametrenin değerinin database kapatılmadan
değiştirilebileceğini ama değişiklik yapıldığı andan sonraki sessionlar için
geçerli olacağını gösterir.
IsDeprecated
alanı o parametrenin artık kullanılıp
kullanılmadığını gösterir.