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);
Espero que essa dica ajude as pessoas que assim como eu estão ficando velhos… kkkkkk
Att,
@Mufalani
@Br_Oracle_ACEs