Hurriyet

7 Ekim 2013 Pazartesi

Oracle Veritabanı: Log Miner Kurulumu - Ayarlanması - Kullanılması

LogMiner archived redo logs'ların kullanılmasını, analiz edilmesini, okunmasını sağlar. Bize tarihsel olarak bir ilerleme görüntüsü verir. Bununla birlikte undo operasyonları yapmamıza sağlar ve mantıksal hatalarda yapılmaması gereken işlemlerde geri dönüşü sağlar.

LogMiner özellikle yanlışlıkların ve hataların tespit edilmesinde yararlı olur. Redo log dosyaları incelendikten ve sonuçları anlamları bir bilgiye çevrildikten sonra v$logmnr_contents tablosundan  inceleme yapabiliriz.  Kullanılan Sql'lerle birlikte bunların undo sql'leri gösterilir ve bunlardan da geri çevirme işlemi yapılabilinir.

Bundan başka LogMiner ile bir tablonun değişikliklerinin takip edilmesi,  b  ir kullanıcı tarafından yapılan değişikliklerin izlenilmesi işlemleri de yapılabilinir.

LogMiner paketi database ile birlikte gelir. "Advanced" kurulum sırasında yüklenip yüklenmemesi opsiyon olarak sorulur.

LogMiner Kullanım Amaçları:

-Bir database olayını belirlemek için.
-Kullanıcılar tarafından gerçekleştirilen işlemleri bulmak için.
-Veri değişikliğine karşı undo transaction'ları gerçekleştirme.
-Veritabanında gerçekleştirilen operasyonların audit'lenmesi.

LogMiner Konfigürasyonu ve Dictionary File'ın Yaratılması:

LogMiner var olan verileri kullanmak için bir "dictionary file" kullanır. LogMiner'ın kullandığı veriler "raw data" olduğu için bu bilgileri daha anlamlı hale getirmek için bir dictionary file gerekir. Bu da bir parametrenin aktifleştirilmesiyle olur.

 UTL_FILE_DIR=/u01/app/oracle/oradata/LogMıner

Yukarıda LogMiner için klasörümüzü belirttikten sonra aşağıda da kullanacağımız dictionary file dosyasını belirtiriz. Paketi çalıştırıp dosyamızı belirtilen klasörün altında yaratırız.

BEGIN  
  DBMS_LOGMNR_D.build (  
   dictionary_filename => 'dictfile.ora',  
   dictionary_location => '/u01/app/oracle/oradata/LogMıner');  
 END;  
 /  


LogMiner Kullanacağı Logların Belirtilmesi: 

Analiz edilecek loglar da paketin yardımıyla eklenmelidir. dbms_logmnr.new opsiyonu ile bir liste oluşturulur.

 BEGIN  
  DBMS_LOGMNR.add_logfile (  
   options   => DBMS_LOGMNR.new,  
   logfilename => '/u01/app/oracle/oradata/archive/berkeArchive00001');  
    /  

dbms_logmnr.addfile opsiyonu ile var olan listeye logfile eklenir.

 EXECUTE DBMS_LOGMNR.ADD_LOGFILE( 
 LOGFILENAME => '/u01/app/oracle/oradata/archive/berkeArchive00001', -  
 OPTIONS => dbms_logmnr.addfile);  

dbms_logmnr.removefile opsiyonu ile log dosyaları kaldırılır.

 EXECUTE DBMS_LOGMNR.ADD_LOGFILE( 
 LOGFILENAME => '/u01/app/oracle/oradata/archive/berkeArchive00001', 
 OPTIONS => dbms_logmnr.removelogfile);  

LogMiner'ı  Başlatmak:

LogMiner'ı başlatmak için birden fazla opsiyon bulunmaktadır. Belirli bir SCN numarası, zaman aralığı verilerek ya da bütün logları kullanarak  analiz yaptırabiliriz.

 BEGIN  
  -- Start using all logs  
  DBMS_LOGMNR.start_logmnr (  
   dictfilename => '/u01/app/oracle/oradata/LogMıner/dictfile.ora');  
   


SCN Aralığı:

  DBMS_LOGMNR.start_logmnr (  
   dictfilename => '/u01/app/oracle/oradata/LogMıner/dictfile.ora',  
   startscn   => 98231321,  
   endscn    => 98298845);  
 END;

Zaman Aralığı:

  DBMS_LOGMNR.start_logmnr (  
   dictfilename => '/u01/app/oracle/oradata/LogMıner/dictfile.ora',  
   starttime  => TO_DATE('01-JAN-2013 00:00:00', 'DD-MON-YYYY HH:MI:SS'),  
   endtime   => TO_DATE('01-MAR-2013 10:00:00', 'DD-MON-YYYY HH:MI:SS'));  
   


Analiz Edilen Loglarla İlgil Bilgilerin Sorgulanması:

LogMiner tarafından kullanılan başlıca tablolar aşağıdaki gibidir.


 DBA_LOGMNR_LOG       
 DBA_LOGMNR_PURGED_LOG       
 DBA_LOGMNR_SESSION       
 GV$LOGMNR_CALLBACK                Synonym for GV_$LOGMNR_CALLBACK  
 GV$LOGMNR_CONTENTS                Synonym for GV_$LOGMNR_CONTENTS  
 GV$LOGMNR_DICTIONARY                Synonym for GV_$LOGMNR_DICTIONARY  
 GV$LOGMNR_DICTIONARY_LOAD        Synonym for GV_$LOGMNR_DICTIONARY_LOAD  
 GV$LOGMNR_LATCH                    Synonym for GV_$LOGMNR_LATCH  
 GV$LOGMNR_LOGFILE                    Synonym for GV_$LOGMNR_LOGFILE  
 GV$LOGMNR_LOGS                    Synonym for GV_$LOGMNR_LOGS  
 GV$LOGMNR_PARAMETERS            Synonym for GV_$LOGMNR_PARAMETERS  
 GV$LOGMNR_PROCESS                Synonym for GV_$LOGMNR_PROCESS  
 GV$LOGMNR_REGION                    Synonym for GV_$LOGMNR_REGION  
 GV$LOGMNR_SESSION                    Synonym for GV_$LOGMNR_SESSION  
 GV$LOGMNR_STATS                    Synonym for GV_$LOGMNR_STATS  
 GV$LOGMNR_TRANSACTION            Synonym for GV_$LOGMNR_TRANSACTION  
 V$LOGMNR_CALLBACK                    Synonym for V_$LOGMNR_CALLBACK  
 V$LOGMNR_CONTENTS                Synonym for V_$LOGMNR_CONTENTS  
 V$LOGMNR_DICTIONARY                Synonym for V_$LOGMNR_DICTIONARY  
 V$LOGMNR_DICTIONARY_LOAD            Synonym for V_$LOGMNR_DICTIONARY_LOAD  
 V$LOGMNR_LATCH                    Synonym for V_$LOGMNR_LATCH  
 V$LOGMNR_LOGFILE                    Synonym for V_$LOGMNR_LOGFILE  
 V$LOGMNR_LOGS                        Synonym for V_$LOGMNR_LOGS  
 V$LOGMNR_PARAMETERS                Synonym for V_$LOGMNR_PARAMETERS  
 V$LOGMNR_PROCESS                    Synonym for V_$LOGMNR_PROCESS  
 V$LOGMNR_REGION                    Synonym for V_$LOGMNR_REGION  
 V$LOGMNR_SESSION                    Synonym for V_$LOGMNR_SESSION  
 V$LOGMNR_STATS                    Synonym for V_$LOGMNR_STATS  
 V$LOGMNR_TRANSACTION                Synonym for V_$LOGMNR_TRANSACTION 


Bunlardan:

  •  v$logmnr_dictionary: kullanılan dictionary dosyasını gösterir.
  • v$logmnr_parameters: Logminer için geçerli parametreler.
  • v$logmnr_logs: kullanılan logları gösterir.  Bu loglara göre istediğimiz ayrımları, istediğimiz zaman aralıklarını yapabiliriz.
  • v$logmnr_contents: incelenen log dosyalarının içeriklerini gösterir.
Aşağıdaki sorguyla hem gönderilen sorguyu hem de bunun redosunu görebiliriz. 


 SELECT scn, operation, sql_redo, sql_undo  
 FROM  v$logmnr_contents;  


LogMiner'ın kapatılması:

LogMiner'ın kullanımı bittikten sonra kapatılması gerekmektedir.


 BEGIN  
  DBMS_LOGMNR.end_logmnr;  
 END;  
 /


Hangi tabloların ne zaman, ne kadar erişildiğini de LogMiner'ın v$logmnr_contents tablosunu sorgulayarak bulabiliriz.

 SELECT seg_owner, seg_name, count(*) AS Hits FROM  
 v$logmnr_contents WHERE seg_name NOT LIKE '%$' GROUP BY  
 seg_owner, seg_name;  

Referans:
http://www.oracle-base.com/articles/8i/logminer.php
http://www.oracle-class.com/?page_id=589
http://docs.oracle.com/cd/B19306_01/server.102/b14215/logminer.htm
http://www.oracleflash.com/24/How-to-read-or-analyze-redo-log-files-using-LogMiner.html
http://psoug.org/reference/dbms_logmnr.html
http://www.oracle-base.com/articles/11g/flashback-and-logminer-enhancements-11gr1.php
http://docs.oracle.com/cd/A87860_01/doc/server.817/a76956/archredo.htm#12680
http://turkceoracle.com/2011/05/log_miner-kurulumu-konfigurasyonu-ve-kullanimi.html

















Hiç yorum yok:

Yorum Gönder