Alert.log dosyasının içeriğinin tablo şeklinde sorgulanması
Oracle veritabanlarındaki alertSID.log dosyasının içeriğini , veritabanındaki bir tablo gibi sorgulamak mümkündür. Bunun için öncelikle alertSID.log dosyasının olduğu trace dizinini gösteren sanal dizin oluşturulmalıdır. Sonrasında log dosyasının içeriği , external table ile sorgulanabilir hale gelecektir.
Sanal dizin oluşturulması :
Aşağıdaki komut ile ORCL isimli veritabanındaki trace dizinin gösterildiği sanal dizin oluşturulabilir.
CREATE OR REPLACE DIRECTORY ALERT_LOG_DIR AS '/u01/app/oracle/diag/rdbms/orcl/ORCL/trace';
Sonrasında aşağıdaki gibi external table oluşturulabilir. External table için gerekli olan log dosyası (orcl_alert_table.log) , trace dizini altında oluşturulacaktır.
CREATE TABLE ORCL_ALERT_LOG ( MESSAGE VARCHAR2(4000 BYTE) ) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY ALERT_LOG_DIR ACCESS PARAMETERS ( records delimited by newline logfile alert_log_dir:'orcl_alert_table.log' ) LOCATION (ALERT_LOG_DIR:'alert_ORCL.log') ) REJECT LIMIT UNLIMITED;
RAC sistemlerde her instance için trace dizinleri farklı olduğundan , farklı tablolar oluşturulmalıdır.
Örneğin için ORA-12012 hatası geçen satırları aşağıdaki gibi sorgulayabilirsiniz.
SQL> set lines 1000 SQL> select * from DBA_ALERT_LOG where MESSAGE like '%ORA-12012%'; MESSAGE ---------------------------------------------------------------------------- ORA-12012: 2 işinin otomatik çalıştırılmasında hata ORA-12012: 222 işinin otomatik çalıştırılmasında hata
Yukarıdaki tablo ile herhangi bir alert.log dosyasını satır satır sorgulayabilirsiniz. Aynı bilgilere V$DIAG_ALERT_EXT görünümü ile de erişmek mümkündür. Bu view ile sadece veritabanı değil farklı bileşenler (rdbms, diagtool, clients, asm, tnslsnr) ile ilgili oluşan hata mesajlarını da görüntülenebilir. Automatic Diagnostic Repository (ADR) içindeki xml tabanlı alert log dosyaları sorgulanabilir.
Aşağıdaki gibi sorgulamalar yapılabilir.
select TO_CHAR(A.ORIGINATING_TIMESTAMP, 'dd.mm.yyyy hh24:mi:ss') MESSAGE_TIME ,message_text ,host_id ,inst_id ,adr_home from V$DIAG_ALERT_EXT A where component_id='rdbms' and message_text like '%ORA-12012%' order by 1 desc;
select TO_CHAR(A.ORIGINATING_TIMESTAMP, 'dd.mm.yyyy hh24:mi:ss') MESSAGE_TIME ,message_text ,host_id ,inst_id ,adr_home from V$DIAG_ALERT_EXT A where A.ORIGINATING_TIMESTAMP > sysdate-1 and component_id='rdbms' and message_text like '%ORA-12012%' order by 1 desc;