Path do alert.log 11g pelo sqlplus

Para facilitar a minha vida no acesso do arquivo alert.log, visto que em cada máquina que acessamos o caminho é variável, criei um script para mostrar o caminho do alert.log a partir de uma visão interna que está disponível desde a versão do Oracle 11gR1, apresento a vocês a view X$DBGDIREXT.

Até o Oracle 10.2 a Oracle mantinha a estrutura de diretório de traces idêntica por diversos releases do Oracle database. Dai veio a feature do DIAG e a coisa toda mudou, para quem já estava acostumado com o caminho antigo, como eu, as vezes é um pouco difícil lembrar do caminho novo quando está verificando um problema. Afinal, comecei a trabalhar com o Oracle 8.0 e 8i, mas já tive que dar manutenção até em Oracle 7.3.4 no passado.

Tem alguns métodos para achar o arquivo. Vou mostrar o mais difícil primeiro, que é memorizar essa nova estrutura de diretórios:

$ORACLE_BASE/diag/rdbms/<DBNAME>/<INSTNAME>/trace/alert_<INSTNAME>.log

Onde:

DBNAME = Nome do seu banco de dados (se for single é o nome da instance)
INSTNAME = Nome da instância ou SID
$ORACLE_BASE = Variável bem conhecida dos DBA’s é a base do software Oracle.

Agora o jeito que eu estou usando:

Eu adicionei as linhas abaixo no meu script glogin.sql

def alert=unknown
column alertfile noprint new_value alert
set termout off
select LOGICAL_PATH||’/’||LOGICAL_FILE alertfile
from sys.X$DBGDIREXT
where logical_file = (select ‘alert_’||instance_name||’.log’ from v$instance);

Quando me logo em um banco de dados como “SYS” ele preenche a variável alert no sqlplus, então basta usar o comando “SQL> def alert” e o sqlplus te mostra o path correto do seu alert.

SQL> def alert
DEFINE ALERT = “/dsv/oracle/diag/rdbms/dsv/dsv/trace/alert_dsv.log” (CHAR)

O acesso a esta view X$ só é permitido com SYS e o login fica um pouco mais lento por causa de mais um comando você está fazendo, mas o resultado vale a pena, pelo menos para mim.

Caso não queira alterar o seu arquivo e glogin.sql e usar quando necessário, também funciona.

— script whereismyalert.sql

select LOGICAL_PATH||’/’||LOGICAL_FILE alert_file
from X$DBGDIREXT
where logical_file = (select ‘alert_’||instance_name||’.log’ from v$instance);

   Há algum tempo atrás eu mostrei como consultar o conteúdo do alert através do sqlplus no post já em meu blog.

Espero que essa dica ajude as pessoas que assim como eu estão ficando velhos… kkkkkk

Att,
@Mufalani
@Br_Oracle_ACEs
 

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios são marcados com *