Alert.log dosyasının içeriğinin tablo şeklinde sorgulanması

16 Eyl by Ahmet Duruöz

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;

Loading

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir