“Cold backup” ı alınan ve archive log dosyaları yedeklenen bir sistemin
çökmesi ve erişilemez hale gelmesi durumunda veritabanı kurtarması nasıl
yapılır? Bu durumda elimizde çalışan sisteme ait controlfile dosyası ve Online
Redo Log dosyaları bulunmayacaktır. Elimizdeki Cold Backup ve archive log
dosyalarını kullanarak da kurtarma işlemi yapılabilir. Bunun için izlenmesi
gereken yol şudur:
1) “Cold Backup” ile alınan dosyalar (Datafile , controlfile, online redo log
dosyaları) ve Archive Log dosyaları yeni sistemde ait oldukları klasörlere
kopyalanır.
2) “oracle # sqlplus / as sysdba” komutuyla sqlplus programı
çalıştırılır.
3) SQL> startup mount; ile veritabanı “mount”
modunda başlatılır.
4) RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
komutuyla kurtarma işlemi başlatılır. Bu komutta normal kurtarma işleminden
farklı olarak “USING BACKUP CONTROLFILE” parametleri kullanılır. Çünkü elimizde
çöken sisteme ait son controlfile dosyaları yoktur. Hangi datafile dosyasına
hangi Archive Log dosyasının işleneceği bilinememektedir. Bu komut sayesinde
hangi archive log dosyalarının kullanılacağının kararı datafile dosyalarının
“header” bölümünde bulunan bilgiler kullanılarak karar verilir.
Komut çalışıtırıldığında aşağıdaki gibi bir sonuç verir.
ORA-00279: 347898987 değişikliği (03/20/2008 14:01:18
içinde oluşturulan) thread 1 için gerekli
ORA-00289: öneri: /opt/oracle/product/10gR2/dbs/arch/1_2_649864014.dbf
ORA-00280: 347898987 numaralı değişiklik (1 thread’i için), 2 numaralı sırasında
Günlüğü belirtin: {<RET>=önerilen | dosya adı | AUTO | CANCEL}
Bu aşamada sistem bize 4 farklı seçenek sunar.
a) ENTER tuşuna basarak önerdiği
archive log dosyasını işler.
b) Hangi archive log dosyasının
işleneceğini yazabiliriz.
c) AUTO yazıp enter a basarak
sormadan sırasıyla bütün archive log dosyalarının işlenmesini sağlar.
d) CANCEL yazıp enter a basarak
kurtarma işlemini bitirilmesini sağlar.
Bu komutlardan 3.sünü uygulayalım yani AUTO yazıp enter tuşuna basarak
archive log dosyalarının işlenmesini başlatalım. Sistemde mevcut en son archive
log dosyasına kadar bütün archive log dosyaları sisteme işlenir. En son dosyayı
işledikten sonra aşağıdaki gibi bir hata verir.
ORA-00308: arşivlenmiş
‘/opt/oracle/product/10gR2/dbs/arch/1_2_649864014.dbf’
günlüğü açılamaz
ORA-27037: dosya staüsü elde edilemiyor
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Artık bütün archive log dosyaları işlenmiştir ve sıradaki archive log
dosyasını bulamadığı için hata vermiştir.
5) Archive log dosyalarını işledikten sonra veritbanını “ALTER DATABASE OPEN
RESETLOGS” komutuyla başlatırsak aşağıdaki gibi bir hata verir.
ALTER DATABASE OPEN RESETLOGS
*ERROR at line 1:
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: 'system01.dbf'
Bu hatanın sebebi “RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL; “
komutunun archive log dosyalarını işleme işleminin CANCEL komutuyla bitirilmesi
gerekliliğidir. Bu yüzden “ALTER DATABASE OPEN RESETLOGS” komutunu çalıştırmadan
önce tekrar “RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL; ” komutunu
çalıştırarak kurtarma işlemini başlatmamız ve komut olarak ta “CANCEL” komutunu
vermemiz gerekir.
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
ORA-00279: 347898987 değişikliği (03/20/2008 14:01:18
içinde oluşturulan) thread 1 için gerekli
ORA-00289: öneri: /opt/oracle/product/10gR2/dbs/arch/1_2_649864014.dbf
ORA-00280: 347898987 numaralı değişiklik (1 thread’i için), 2 numaralı sırasında
Günlüğü belirtin: {<RET>=önerilen | dosya adı | AUTO | CANCEL}
CANCEL
6) Kurtarma işlemi tamalanmıştır. veritabanının RESETLOG parametresi ile
açılması gerekmektedir. Çünkü çöken sisteme ait son Online Redo Log dosyaları
elimizde yoktur. “Cold Backup” tan gelen Online Redo Log dosyaları kurtarılmış
veritabanıyla uyumsuzdur.
SQL> ALTER DATABASE OPEN RESETLOGS;
Artık veritbanı kutarılmıştır. Burada dikkat edilmesi gereken bir husus da,
çöken sistemden Online Redo Log dosyaları alınamadığından ve bu Online Redo Log
dosyalarının içinde bulunan ve arşivlenmemiş işlemler olduğundan, bu
arşivlenmemiş işlemler kaybedilmiş olacaktır. Online Redo Log dosyalarının
boyutları bu yüzden önem kazanmaktadır. Büyük boyutlu olması “Log switch”
işleminin ve Arşivleme işleminin daha az olmasını sağlarayarak performans artışı
getirirken, Kurtarma durumlarında daha fazla bilginin kaybolmasına sebep
olmaktadır. Bu yüzden Online Redo Log dosyalarının boyutlarının ayarlarken bu
konuya da dikkat edilmesi gerekir.
backup controlfile yazmamızdaki temel neden, veritabanının, control filelarda kayıtlı olan sequence numaralarını atlayabilmesini sağlamaktır. Ayrıca control filelarının kayıp olduğu bir ortamda zaten en son redologlardan da bahsedilmesi mümkün değildir. Redologlarla ilgili ve backupla ilgili çok güzel bir yazı olmuş elinize sağlık.
Yorum�Yorumlar yazan: Ogan Özdoğan — Ağustos 20, 2008 @ 1:06 pm