ControlFile Yönetimi
Controlfile veritabanının en önemli dosyalarından biridir hatta en önemlisidir, veri tabanının kimliği olarak tanımlayabiliriz. Her instance ın en az bir adet controlfile ı vardır, tavsiye edilen farklı fiziksel disklerde en az iki adet bulundurulmasıdır. Defaultta 3 adet geliyor, bunları farklı disklere dağıtmakta fayda var.
Controlfile’ lar datafile, redolog file isimleri lokasyonları, current log sequence numaraları, backup set bilgileri, ve en önemlisi de "system change number” (SCN),bilgisini tutar. Binary bir dosyadır kullanıcılar bu numaraları görüp değiştiremez.
Controlfile’ ın çoğaltılması
2 farklı şekilde yapabiliriz.
1- Veritabanı açıkken
Veri tabanı oluşturulurken controlfile ların yeri belirtilmezse 3′ ünü de aynı yere oluşturuyor (/u01/app/oracle/oradata/SID_ISMI/).
1 2 3 4 |
ALTER SYSTEM SET control_files = '/u01/app/oracle/oradata/smp/control01.ctl', '/u01/app/oracle/oradata/smp/control02.ctl', '/u01/app/oracle/oradata/smp/control03.ctl', '/u02/IndexData/smp/control04.ctl' scope=spfile; |
1 |
shutdown immediate |
1 |
[oracle@rhel ~]$ cp /u01/app/oracle/oradata/smp/control01.ctl /u02/IndexData/smp/control04.ct |
1 |
startup |
Değişikliklerimizin geçerli olup olmadığını kontrol edelim.
1 2 3 4 5 6 7 |
select name from v$controlfile; NAME -------------------------------------------------------------------------------- /u01/app/oracle/oradata/smp/control01.ctl /u01/app/oracle/oradata/smp/control02.ctl /u01/app/oracle/oradata/smp/control03.ctl /u02/IndexData/smp/control04.ctl |
1 |
show parameter control_files ; |
komutu ile değişiklikleri görebiliriz.
2- Pfile Kullanarak Controlfile ın çoğaltılması
1 |
shutdown immediate |
1 |
create pfile from spfile; |
komutu ile pfile oluşturuyoruz.
"/u01/app/oracle/product/10.2.0/db_1/dbs/" dizininde "initSID_ISMI.ora" (bizim örneğimizde initSMP.ora )adında oluşturacaktır.
1 |
[oracle@rhel ~]$ cp /u01/app/oracle/oradata/smp/control01.ctl /u03/smp/control05.ctl |
initsmp.ora vi ile ya da winscp nin editörü ile aşağıdaki satırı kendimize göre düzenliyoruz.
1 2 |
*.control_files='/u01/app/oracle/oradata/smp/control01.ctl', '/u01/app/oracle/oradata/smp/control02.ctl'... |
pfile ile işimiz bittikten sonra pfile dan spfile oluşturuyoruz.
1 2 |
create spfile from pfile; startup |
Komutu ile veri tabanını açıp. Kontrol ediyoruz.
1 2 3 4 5 6 7 8 |
select name from v$controlfile; NAME -------------------------------------------------------------------------------- /u01/app/oracle/oradata/smp/control01.ctl /u01/app/oracle/oradata/smp/control02.ctl /u01/app/oracle/oradata/smp/control03.ctl /u02/IndexData/smp/control04.ctl /u03/smp/control05.ctl |
Oracle controlfile lardan birini okuyamadığı zaman veritabanını açmayacaktır bu durumda sorunlu controlfile ı silip, sorunsuz olan birini aynı lokasyona kopyalayıp ismini değiştirerek sorunu çözebiliriz.
İkinci yolda diğer disklerdeki controlfile lar sağlam ise arızalı conftrolfile spfile dan silerek (pfile oluşturma yöntemi ile) de sorunu çözebiliriz.
Controlfile Bilgilerine Erişim
V$CONTROLFILE : İsimlerini ve statulerini içeriri
V$PARAMETER : Statulerini ve lokasyonlarını içerir.
V$CONTROLFILE_RECORD_SECTION : Veri dosyaları vb. objelerin kayıtlarını içerir (record_size,
records_total gibi)
aşağıda verilen örnek performans view lar bilgileri controlfile dan alır.
• V$BACKUP
• V$DATAFILE
• V$TEMPFILE
• V$TABLESPACE
• V$ARCHIVE
• V$LOG
• V$LOGFILE
• V$LOGHIST
• V$ARCHIVED_LOG
• V$DATABASE