ADRCI - Automatic Diagnostic Repository Command Interpreter

Por Alex Zaballa
Postado em Fevereiro 2015

Revisado por Marcelo Pivovar - Solution Architect

No Oracle Database 11G R1, foi adicionado o ADRCI (Automatic Diagnostic Repository Command Interpreter), que é uma ferramenta de linha de comando criada para gerenciar os dados de diagnóstico armazenados no ADR (Automatic Diagnostic Repository).

O ADR é um repositório baseado em arquivos para dados de diagnóstico de banco de dados, tais como traces, dumps, o alert log, health monitor reports, etc.

 

Para acessar a ferramenta, vá até o $ORACLE_HOME/bin:

[oracle@oracle01 bin]$ ./adrci
ADRCI: Release 12.1.0.2.0 - Production on Tue Dec 23 15:48:43 2014
Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.
 
ADR base = "/u01/app/oracle"
adrci> show home
ADR Homes:
diag/plsql/user_oracle/host_2874269298_82
diag/clients/user_oracle/host_2874269298_82
diag/crs/oracle01/crs
diag/tnslsnr/oracle01/listener
diag/rdbms/orcl/orcl
diag/asm/+asm/+ASM
 

Como você pode verificar acima, nós temos diferentes homes para o ADR. Note também que não são necessárias senhas para acessar o ADRCI, o controle é feito à nível do sistema operacional.
A seguir demostrarei algumas das funções mais utilizadas.
Visualizando as mensagens do alert.log:

adrci> set home diag/rdbms/orcl/orcl
 
adrci> show alert -tail –f
2014-12-23 15:49:00.504000 +01:00
Starting background process AQPC
AQPC started with pid=39, OS id=17084
Starting background process CJQ0
CJQ0 started with pid=41, OS id=17088
Completed: ALTER DATABASE OPEN /* db agent *//* {0:7:58} */
2014-12-23 15:49:04.296000 +01:00
 

Visualizando a lista de problemas ocorridos no banco de dados:

adrci> set home diag/rdbms/orcl/orcl
adrci> show problem
 
ADR Home = /u01/app/oracle/diag/rdbms/orcl/orcl:
*************************************************************************
PROBLEM_ID   PROBLEM_KEY    LAST_INCIDENT    LASTINC_TIME
------------ -------------- ---------------- ---------------------------------
1            ORA 600 [729]  33921            2014-08-18 09:57:53.366000 +01:00
 
1 rows fetched

Visualizando a lista de incidentes:

adrci> show incident
 
ADR Home = /u01/app/oracle/diag/rdbms/orcl/orcl:
*************************************************************************
INCIDENT_ID     PROBLEM_KEY            CREATE_TIME
--------------- --------------------- ---------------------------------
33921           ORA 600 [729]          2014-08-18 09:57:53.366000 +01:00
 
1 rows fetched 

Visualizando com detalhes um incidente específico:

adrci> show incident -mode detail -p "incident_id=33921"
 
ADR Home = /u01/app/oracle/diag/rdbms/orcl/orcl:
*************************************************************************
 
**********************************************************
INCIDENT INFO RECORD 1
**********************************************************
INCIDENT_ID                   33921
STATUS                        ready
CREATE_TIME                   2014-08-18 09:57:53.366000 +01:00
PROBLEM_ID                    1
CLOSE_TIME                    <NULL>
FLOOD_CONTROLLED              none
ERROR_FACILITY                ORA
ERROR_NUMBER                  600
ERROR_ARG1                    729
ERROR_ARG2                    1062752
ERROR_ARG3                    space leak
ERROR_ARG4                    <NULL>
ERROR_ARG5                    <NULL>
ERROR_ARG6                    <NULL>
ERROR_ARG7                    <NULL>
ERROR_ARG8                    <NULL>
ERROR_ARG9                    <NULL>
ERROR_ARG10                   <NULL>
ERROR_ARG11                   <NULL>
ERROR_ARG12                   <NULL>
SIGNALLING_COMPONENT          KSM
SIGNALLING_SUBCOMPONENT       <NULL>
SUSPECT_COMPONENT             <NULL>
SUSPECT_SUBCOMPONENT          <NULL>
ECID                          <NULL>
IMPACTS                       0
PROBLEM_KEY                   ORA 600 [729]
FIRST_INCIDENT                33921
FIRSTINC_TIME                 2014-08-18 09:57:53.366000 +01:00
LAST_INCIDENT                 33921
LASTINC_TIME                  2014-08-18 09:57:53.366000 +01:00
IMPACT1                       34668546
IMPACT2                       0
IMPACT3                       0
IMPACT4                       0
KEY_NAME                      ProcId
KEY_VALUE                     40.5
KEY_NAME                      Service
KEY_VALUE                     SYS$USERS
KEY_NAME                      Client ProcId
KEY_VALUE                     oracle@oracle01 (TNS V1-V3).25872_140711461581408
KEY_NAME                      SID
KEY_VALUE                     28.0
OWNER_ID                      1
INCIDENT_FILE                 /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_25872.trc 
OWNER_ID                      1
INCIDENT_FILE                 /u01/app/oracle/diag/rdbms/orcl/orcl/incident/incdir_33921/orcl_ora_25872_i33921.trc 
 
1 rows fetched


Visualizando o arquivo de trace do incidente acima:

adrci> show trace /u01/app/oracle/diag/rdbms/orcl/orcl/incident/incdir_33921/orcl_ora_25872_i33921.trc 
 
u01/app/oracle/diag/rdbms/orcl/orcl/incident/incdir_33921/orcl_ora_25872_i33921.trc
----------------------------------------------------------
LEVEL PAYLOAD
----- -----------------------------------------------------------------------------------------------------
      Dump file /u01/app/oracle/diag/rdbms/orcl/orcl/incident/incdir_33921/orcl_ora_25872_i33921.trc 
      Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
      With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
      and Real Application Testing options
      ORACLE_HOME = /u01/app/oracle/product/12.1.0/dbhome_2
      System name:      Linux
      Node name:        oracle01
      Release:  3.8.13-16.2.1.el6uek.x86_64
      Version:  #1 SMP Thu Nov 7 17:01:44 PST 2013
      Machine:  x86_64
      Instance name: orcl
      Redo thread mounted by this instance: 1
      Oracle process number: 40
      Unix process pid: 25872, image: oracle@oracle01 (TNS V1-V3)
 
 
      *** 2014-08-18 09:57:53.368
      *** SESSION ID:(28.50253) 2014-08-18 09:57:53.368
      *** CLIENT ID:() 2014-08-18 09:57:53.368
      *** SERVICE NAME:(SYS$USERS) 2014-08-18 09:57:53.368
      *** MODULE NAME:() 2014-08-18 09:57:53.368
      *** CLIENT DRIVER:(SQL*PLUS) 2014-08-18 09:57:53.368
      *** ACTION NAME:() 2014-08-18 09:57:53.368
 
      [TOC00000]
      Jump to table of contents
      Dump continued from file: /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_25872.trc 
      [TOC00001]
 

Visualizando os arquivos de trace que contenham a palavra mmon:

adrci> SHOW TRACEFILE %mmon%
     diag/rdbms/orcl/orcl/trace/orcl_mmon_17033.trc
     diag/rdbms/orcl/orcl/trace/orcl_mmon_16198.trc
     diag/rdbms/orcl/orcl/trace/orcl_mmon_14495.trc


Utilizando o IPS (Incident Packaging Service) para gerar um pacote a ser enviado para o suporte da Oracle com todos detalhes do problema ocorrido:

adrci> ips create package problem 1 correlate all
Created package 1 based on problem id 1, correlation level all
 
adrci> ips generate package 1 in "/tmp/oracle"
Generated package 1 in file /tmp/oracle/IPSPKG_20141223161727_COM_1.zip, mode complete


Visualizando os arquivos gerados dentro do pacote:

adrci> IPS SHOW FILES PACKAGE 1
   FILE_ID                1
   FILE_LOCATION          <ADR_HOME>/alert
   FILE_NAME              log.xml
   LAST_SEQUENCE          1
   EXCLUDE                Included
 
   FILE_ID                2
   FILE_LOCATION          <ADR_HOME>/trace
   FILE_NAME              alert_orcl.log
   LAST_SEQUENCE          1
   EXCLUDE                Included
 
   FILE_ID                3
   FILE_LOCATION          <ADR_HOME>/trace
   FILE_NAME              orcl_lgwr_17013.trc
   LAST_SEQUENCE          1
   EXCLUDE                Included


Visualizando por quanto tempo os arquivos serão mantidos no ADR:

adrci> show control
 
ADR Home = /u01/app/oracle/diag/rdbms/orcl/orcl:
*************************************************************************
ADRID             SHORTP_POLICY         LONGP_POLICY
---------- -------------------- --------------------
1335663986                  720                8760


Por default, os arquivos de trace serão mantidos no ADR por 30 dias (720 horas) e os arquivos de incidente por um ano (8760 horas).
Porém, é possível limpar manualmente, utilizando o comando PURGE:

adrci> purge -age 24 -type trace
 

Você também pode consultar o help do ADRCI e verificar mais comandos úteis:

adrci> help
 
 HELP [topic]
   Available Topics:
        CREATE REPORT
        ECHO
        EXIT
        HELP
        HOST
        IPS
        PURGE
        RUN
        SET BASE
        SET BROWSER
        SET CONTROL
        SET ECHO
        SET EDITOR
        SET HOMES | HOME | HOMEPATH
        SET TERMOUT
        SHOW ALERT
        SHOW BASE
        SHOW CONTROL
        SHOW HM_RUN
        SHOW HOMES | HOME | HOMEPATH
        SHOW INCDIR
        SHOW INCIDENT
        SHOW LOG
        SHOW PROBLEM
        SHOW REPORT
        SHOW TRACEFILE
        SPOOL
        SELECT
 
There are other commands intended to be used directly by Oracle, type
"HELP EXTENDED" to see the list
 
adrci> help set base
 
Usage:  SET BASE < base_str | -product <product_name> >
 
Purpose: Set the ADR base to use in the current ADRCI session.
           If there are valid ADR homes under the base, all homes will
           will be added to the current ADRCI session.
 
Arguments:
    <base_str>: It is the ADR base directory, which is a system-dependent
    directory path string.
    -product <product_name>: This option allows users to set the
    given product's ADR Base location. The current registered products are
    "CLIENT" and "ADRCI".
 
Notes:
    On platforms that use "." to signify current working directory,
    it can be used as base_str.
 
Example:
    set base /net/sttttd1/scratch/someone/view_storage/someone_v1/log
    set base -product client
    set base .


Referências:
http://docs.oracle.com/cd/B28359_01/server.111/b28319/adrci.htm
http://uhesse.com/2011/06/01/adrci-a-survival-guide-for-the-dba/



Alex Zaballa, formado em Análise de Sistemas, é especialista em Banco de Dados Oracle com sólidos conhecimentos em Servidores de Aplicação e Sistemas Operacionais; trabalha com Oracle há 15 anos, é ORACLE ACE, certificado OCM Database 11G e conta com mais de 100 outras certificações em produtos da Oracle. Desde 2007 é funcionário da empresa Júpiter em Angola, alocado em um projeto no Ministério das Finanças. Alex também é fundador do Grupo de Usuários Oracle de Angola (GUOA) e membro do time OraWorld.

Este artigo foi revisto pela equipe de produtos Oracle e está em conformidade com as normas e práticas para o uso de produtos Oracle.