Apartir da
versão 11g do Oracle é possível acessar as mensagens do “alert.log” da base de
dados sem a necessidade de acessar o arquivo através do sistema operacional.
Em
instalações “default” o arquivo “alert.log” fica localizado em : [$ORACLE_BASE/diag/rdbms/{DB_UNIQUE_NAME}/{SID}/alert/log_XX.xml].
Onde:
ORACLE_BASE
|
Diretório base da instalação do software Oracle;
|
DB_UNIQUE_NAME
|
Nome do banco de dados do banco;
|
SID
|
Nome da instância no servidor (em configurações RAC esse nome varia);
|
XX
|
Nome da instância para identificar o nome do arquivo de “alert.log”.
|
Para isso basta acessar as informações contidas na visão X$DBGALERTEXT, abaixo pode-se ver as colunas desta visão.
SQL> desc X$DBGALERTEXT
Name
Null? Type
-----------------------------------------
-------- ----------------------------
ADDR
RAW(8)
INDX
NUMBER
INST_ID
NUMBER
ORIGINATING_TIMESTAMP TIMESTAMP(3) WITH
TIME ZONE
NORMALIZED_TIMESTAMP TIMESTAMP(3)
WITH TIME ZONE
ORGANIZATION_ID
VARCHAR2(64)
COMPONENT_ID VARCHAR2(64)
HOST_ID
VARCHAR2(64)
HOST_ADDRESS
VARCHAR2(46)
MESSAGE_TYPE NUMBER
MESSAGE_LEVEL NUMBER
MESSAGE_ID
VARCHAR2(64)
MESSAGE_GROUP
VARCHAR2(64)
CLIENT_ID
VARCHAR2(64)
MODULE_ID
VARCHAR2(64)
PROCESS_ID
VARCHAR2(32)
THREAD_ID
VARCHAR2(64)
USER_ID
VARCHAR2(64)
INSTANCE_ID
VARCHAR2(64)
DETAILED_LOCATION VARCHAR2(160)
PROBLEM_KEY
VARCHAR2(64)
UPSTREAM_COMP_ID VARCHAR2(100)
DOWNSTREAM_COMP_ID VARCHAR2(100)
EXECUTION_CONTEXT_ID VARCHAR2(100)
EXECUTION_CONTEXT_SEQUENCE NUMBER
ERROR_INSTANCE_ID NUMBER
ERROR_INSTANCE_SEQUENCE NUMBER
VERSION
NUMBER
MESSAGE_TEXT
VARCHAR2(2048)
MESSAGE_ARGUMENTS VARCHAR2(128)
SUPPLEMENTAL_ATTRIBUTES VARCHAR2(128)
SUPPLEMENTAL_DETAILS VARCHAR2(128)
PARTITION
NUMBER
RECORD_ID NUMBER
Para verificar as
informações de alerta do banco pode-se executar a consulta abaixo:
SET LINESIZE 160 PAGESIZE 200
COL ORIGINATING_TIMESTAMP FOR A20 HEAD DATA
COL ORIGINATING_TIMESTAMP FOR A20 HEAD DATA
COL MESSAGE_TEXT FOR A120 HEAD
MENSAGEM
SELECT TO_CHAR(ORIGINATING_TIMESTAMP,'DD.MM.YYYY HH24:MI:SS') DATA,
MESSAGE_TEXT
FROM X$DBGALERTEXT;
SELECT TO_CHAR(ORIGINATING_TIMESTAMP,'DD.MM.YYYY HH24:MI:SS') DATA,
MESSAGE_TEXT
FROM X$DBGALERTEXT;
Caso queira verificar somente as mensagens de erro
pode-se utilizar a consulta abaixo:
SET LINESIZE 160 PAGESIZE 200
COL ORIGINATING_TIMESTAMP FOR A20 HEAD DATA
COL ORIGINATING_TIMESTAMP FOR A20 HEAD DATA
COL MESSAGE_TEXT FOR A120 HEAD MENSAGEM
SELECT
DISTINCT TO_CHAR(ORIGINATING_TIMESTAMP,'DD.MM.YYYY HH24:MI:SS') DATA,
MESSAGE_TEXT
FROM X$DBGALERTEXT
WHERE ORIGINATING_TIMESTAMP > SYSDATE-2
AND (MESSAGE_TEXT = 'ORA-00600' OR
MESSAGE_TEXT LIKE '%FATAL%');
Referência: Oracle® Database Administrator´s
Guide 11gR2 (11.2)
MSc.
Rubens Oliveira
DBA Oracle Consultor