(ORA-00313) Redolog grublarından biri (veya birkaçı) Kaybedildiğinde Yapılması Gerekenler

Database’ in olmazsa olmaz koşullarından biri en 2 gruplu bir redolog grubunuzun olmasıdır. Redolog’ lar sistemin son ana döndürülmesinde kritik bir önem taşıdığından dolayı groupların memberlanması son derece önemlidir. Redologların nasıl memberlanacağı ile ilgili http://kamilturkyilmaz.blogspot.com/2010/11/redolog-group-tanmlama-degisiklik-yapma.html

gerekli bilgiyi daha önceki yazımda detaylı olarak anlatmıştım. Redologlarınız member’ lı değilse ve herhangi birini kaybetdiyseniz  veritabanını kurtarmak için aşağıdaki işlemleri yapmamız gerekir. Ancak burada unutumaması gereken nokta; commit edilmemiş tüm transactionların geri getirilemeyeceği yani veri kaybı yaşanacağıdır. 

Benzer bir case’ i oluşturabilmek için database’ imizi shutdown immediate ile kapatıyoruz.

SQL> shutdown immediate;

Veritabanı kapatıldı.

Veritabanı kullanıma kapatıldı.

ORACLE anı kapatıldı.

SQL>

Redologlardan birini, yer aldığı dizinden siliyorum; Şimdi bu haliyle database’ i açmayı deniyorum (hatayı görebilmek için) ;

SQL> startup

ORACLE anı başlatıldı.

Total System Global Area  612368384 bytes

Fixed Size                  1250428 bytes

Variable Size             222301060 bytes

Database Buffers          381681664 bytes

Redo Buffers                7135232 bytes

Veritabanı kullanıma açıldı.

ORA-00313: 1 günlük grubunun (thread 1) üyeleri açılamadı

ORA-00312: çevrimiçi günlük 1, thread 1:

‘C:\ORACLE\10GR2\ORADATA\TEST\REDO01.LOG’

Database redologlardan redo01.log dosyasını bulamadığı için açamadı. Ve mount modda kaldı. (hatırlayınız; database’ e startup komutu verildiğinde son aşaması datafile’ leri ve redologları açtığı nokta idi, bu aşamayı geçemediğinden dolayı mount modda kalıyor.)  Kontrol etmek için ;

SQL> select open_mode from v$database;

OPEN_MODE

———-

MOUNTED

Bu durumdan kurtulmak için şimdi komut satırından database’ i recover ediyoruz. Bu işlem ile kayıp olan redolog dosyası otomatikl olarak daha önce olduğu lokasyona aynı isimle system tarafından otomatik olarak create ediliyor. Bu işlemi “recover database until cancel” komutu ile yapmamızın nedeni gelebildiğimiz kadar son noktaya gelmeye çalıştığımızdan dolayıdır.

SQL> recover database until cancel;

Ortam kurtama tamamlandı.

Bu işlemi başarıyla gerçekleştirdikden sonra yine unutlmaması gereken bir nokta incomplete recovery işlemlerinden sonra mutlaka database’ i open resetlogs komutu ile açabilmemizdir. Zaten open ile açmayı denediğinizde aşağıdaki hatayı alırsınız.

SQL> alter database open ;

alter database open

*

1 satırında HATA:

ORA-01589: veritabanı açma için RESETLOGS veya NORESETLOGS seçeneği  kullanılmalı

Rsetlogs ile açıyoruz.

SQL> alter database open resetlogs;

Veritabanı değiştirildi.

Bu şekilde database’ imizi kurtarmış olduk.  Bu işlemi yapabilmek için database’ in archive modda olmasına gerek yoktur.  Çünkü bu problemi düzeltmek için archive loglara ihtiyaç bulunmamaktadır.

Bu tarz disaster durumlarında veri kaybı çoğu zaman kabul edilebilir bir nokta olmakdan çıkıyor, dolayısıyla yazımın başında belirtmiş olduğum gibi önlemlerimizi zamanında ve doğru bir şekilde alıyor olmamız gerekiyor.

Be Sociable, Share!

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


× 7 = yedi