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.