LOGMINER (Hayat Kurtarmanın Hızlı Yolu)

28/08/2010, 10:53 | RECOVERY kategorisinde yayınlandı | 1 Yorum
Etiketler: , ,

LOGMINER (Hayat Kurtarmanın Hızlı Yolu)

 Oracle’da veri kurtarmak için kullanılabilecek ,kullanımı oldukça kolay olan ve hızlı bir şekilde sonuç alabileceğiniz bir yöntem; LOGMINER.

Kullanımı bu kadar basit olmasına  rağmen çok fazla bilinmediğini ve kullanılmadığını düşünüyorum.

Aslında bu yazıyı yaklaşık bir ay önce yazmaya karar vermiştim. Çünkü iki gün üst üste iki farklı canlı veritabanında kullanmak zorunda kaldım. Her iki durum da, müşteri uygulamalarından yanlışlıkla kayıt sildiklerini ve silinen bu kayıtları kurtarmak için farklı bir  ortama veritabanını Point In Time (PIT) recovery yapmak için benden destek istemeleri ile başladı.

         Olayı inceledikten sonra kayıtları silen personeli dinledikten sonra buna gerek olmadığını çok uzun sürecek Point In Time recovery yerine logminer kullanacağımı ve kısa sürede silinen kayıtları kurtarabileceğimizi anlattım.

         Bu yöntemi kullanabilmek için öncelikle bir takım ön koşullar var .

Bunlar;

1-işlemin hangi tablodan yapıldığı bilmek;  

Bu olmazsa olmaz değil fakat işimizi hızlandıracaktır. Sorgulama yaparken seg_name ‘e göre arama yapabiliriz.

2-ilgili tablonun logging mode’unun enabled olması.

Tablo’nun logging modu’ enabled değilse o tablo üzerinde yapılacak delete , insert ve update işlemleri redo.log lara  yazılmayacağı için logminer kullanamayız.

3-işlemin yaklaşık olarak ne zaman yapıldığının bilinmesi,

Bize  hangi redo.log veya arşiv logları kullanacağımız hakkında fikir verecektir ve arama alanımızı kısıtlayacağı için daha hızlı sonuç alabiliriz.

LOGMINER ile kurtarma:

Veritabanına yapılan tüm değişiklik işlemleri redolog.lara oradan da arşiv.loglara aktarılmaktadır. Logminer ile de bu loglardaki yapılan işlemlere bakarak işlemleri geri alabiliriz.

İşlemin hangi saat aralığında yapıldığını tespit ettikten sonra alert.loga bakarak o saatler arasında işlemlerin hangi arşiv.loglarda veya redo.log da olduğu bulup bir kenara not ediyoruz.

Veritabanında hangi schema ait işlem yapıldığını ve tablo adını da aldıktan sonra işleme başlayabiliriz. İşlemlerimiz elbette yetkili bir kullanıcı ile yapıyoruz. Ben sys kullanıcısını kullandım.

Log dosyalarının logminer’a tanıtılması;

Bu kısımda  aradığımız işlemi barındırdığını düşündüğümüz redo.log ve arşiv.log dosyaları logminer’a tanıtılır.

BEGIN

  dbms_logmnr.add_logfile(‘/oracle/oradata/TEST/redo03.log’);

END;

/

Benim örneğimde kayıtların silinmesi redo03.log dosyasında olduğu düşünülerek sadece bu eklenmiştir.

Lomgminer işlemi başlatılır.

EXEC dbms_logmnr.start_logmnr(options=> dbms_logmnr.dict_from_online_catalog);

Aradığımız kayıtların bulunması;

Tanıtmış olduğumuz redo03.log dan sorgulama yapılır. Burada benim kullandığım yöntem sorgulama yaparken bulunan kayıtların , tekrar sorgulama için bir tabloya yazdırılmasıdır.

Create table verikurtar as SELECT * FROM v$logmnr_contents  WHERE seg_owner=’SCHEMA_USER’ AND seg_name=’TABLO_ADI’   and operation =’DELETE’ ;

Buarada asıl amaç v$logmnr_contents in sorgulanmasıdır.

seg_owner=’SCHEMA_USER’      , tablonun sahibi olan kullanıcı

seg_name=’TABLO_ADI’            , kaydın silindiği tablo adı  

operation =’DELETE’ ;                , aradığımız işlem

sorgulama işlemi tamamlandıktan sonra

SQL_REDO  kolonunda yapılan delete işlemi bulunur.

SQL_UNDO  kolonunda ise yapılan delete işlemini geri almak için kullanacağımız INSERT işlemi bulunur.

Sql_redo kolonundaki kayıtlar incelenerek yanlışlıkla silinen kayıtlar bulunur, bu Kayıların sql_undo sütünündaki insert cümleleri alınarak veritabanına uygulanır ve silinen kayıtlarınızı kurtarırız.

Logminer işlemi sonlandırılır.

exec dbms_logmnr.end_logmnr;    

Komutu çalıştırılarak işlemimiz sonlanmış olur.

Anlattığım örnekten de anlaşılacağı gibi , logminer yöntemi kullanılabiliyorsa Point In Time recovery kullanarak verilerimizi kurtarmak için harcayacağımız zaman ile kıyaslanamayacak  kısa ve kolay bir yöntemdir.

Caner BAŞTÜRK

1 Yorum »

RSS feed for comments on this post. TrackBack URI

  1. Logminer ile ilgili bilgiler çok güzeldi. Açıklayıcı ve kolay uygulanabilir. Özellikle Ahmet abi (kayıtları silen arkadaş) çok sevindi. Teşekkürler.


Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s

WordPress.com'da ücretsiz bir web sitesi ya da blog oluşturun.
Entries ve yorumlar feeds.

%d blogcu bunu beğendi: