Şirket bünyesinde kullanmakta olduğumuz önemli bir database’ imizin eşleniği prod ortamdan çıkan archiveların disaster tarafına manuel olarak apply edilmesi ise tutuluyor. Hafta sonu yaptığımız prod database’ in upgrade’ i (10gR1 den 11gR2 ye) öncesinde disasterdaki bu ortamıda son çıkan archive’ ı apply ederek herhangi bir olumsuz durumda ayağa kaldıracak şekilde hazır tutmaktı. Ancak disaster tarafındaki bu standby database’ imiz son archive’ ları apply ederken bir anda ORA-00308: cannot open archived log hatası verip sonrasında 1,5 sene önceki bir archive’ ı isteyerek hata verdi. Sonrasında konuyu biraz araştırdıkdan sonra benzer sorunların control file dosyasında oluşan corruption dan kaynaklanabileceğini tespit ettik. Control file dosyası içerisinde database tarafından üretilen archive’ ler ile ilgili bilgilerde tutulduğundan prod ortamdan standby control file create edip, disaster tarafındaki control file’ leri ezerek yenilerini prod ortamdan tekrar atmış oluşturmuş olduk. Yapılan bu işlemler ile ilgili scriptler ve adımlara ait detayları aşağıdaki adım adım anlatmaya çalıştım.
Archive apply operasyonun hatanın Alertlog a yansıması ;
Media Recovery Log /oraarchive/archive1/PROD/arch_2_253549_613399947.arc
Sat Nov 6 19:05:21 2010
Media Recovery Log /oraarchive/archive1/PROD/arch_1_753285_613399947.arc
Sat Nov 6 19:05:30 2010
Media Recovery Log /oraarchive/archive1/PROD/arch_2_253550_613399947.arc
Sat Nov 6 19:05:40 2010
Media Recovery Log /oraarchive/archive1/PROD/arch_1_443919_613399947.arc
Errors with log /oraarchive/archive1/PROD/arch_1_443919_613399947.arc
ORA-279 signalled during: alter database recover automatic standby database…
Sat Nov 6 18:27:20 2010
Shutting down instance: further logons disabled
Sat Nov 6 18:27:20 2010
Shutting down instance (immediate)
License high water mark = 18
Sat Nov 6 18:27:20 2010
Hatanın sql satırındaki çıktısı ;
— database’ i nomount modda açıyoruz
startup nomount
— aşağıdaki komut ile database’ i mount moda çekiyoruz.
alter database mount standby database
— Apply’ ların işlemek için ;
alter database recover automatic standby database
ERROR at line 1:
ORA-00279: change 3272640680169 generated at 09/17/2009 15:21:07 needed for thread 1
ORA-00289: suggestion : /oraarchive/archive1/PROD/arch_1_443919_613399947.arc
ORA-00280: change 3272640680169 for thread 1 is in sequence #443919
ORA-00278: log file ‘/oraarchive/archive1/PROD/arch_1_443919_613399947.arc’ no longer needed for this recovery
ORA-00308: cannot open archived log ‘/oraarchive/archive1/PROD/arch_1_443919_613399947.arc’
ORA-27037: unable to obtain file status
IBM AIX RISC System/6000 Error: 2: No such file or directory
Additional information: 3
— Çözüm olarak Prod ortamdan standby control file create etmek için;
alter database create standby controlfile as ‘/oracle/stby/control01.ctl
— alınan bu standby control file disaster tarafında ilgili lokasyonlara kopyalanır.
startup nomount
ORACLE instance started.
Total System Global Area 4311744512 bytes
Fixed Size 1334488 bytes
Variable Size 1667998504 bytes
Database Buffers 2634022912 bytes
Redo Buffers 8388608 bytes
SQL> alter database mount standby database;
Database altered.
SQL> alter database recover automatic standby database;
Ve apply olması gereken archive dosyasından işleme kaldığı yerden devam eder.