简介:
ADR 全称 Automatic Diagnostic Repository
Oracle 11g 推出了 ADR , ADR 存储所有组件 (DB 、 ASM 、 CRS 、监听等 ) 的日志和跟踪日志,提高了数据库的诊断能力。
ADR 产品 / 组件类型子目录
Oracle 数据库的 ADR 主路径组件
例如,对于SID 和数据库唯一名称均等于 orclbi 的数据库, ADR 主 目录将 位于以下位置:
ADR_base/diag/rdbms/orclbi/orclbi/
同样,单个实例环境中Oracle ASM 实例的 ADR 主 目录 为:
ADR_base/diag/asm/+asm/+asm/
ADR 主页子目录
在每个ADR 主目录中都有包含诊断数据的子目录。
表9-2 列出了其中一些子目录及其内容。
图9-2 说明了数据库实例的 ADR 的完整目录层次结构。
使用V$DIAG_INFO 视图查看 ADR 位置
V$DIAG_INFO 视图列出了当前 Oracle 数据库实例的所有重要 ADR 位置。
SELECT * FROM V$DIAG_INFO;
INST_ID NAME VALUE
------- --------------------- -------------------------------------------------------------
1 Diag Enabled TRUE
1 ADR Base /u01/oracle
1 ADR Home /u01/oracle/diag/rdbms/orclbi/orclbi
1 Diag Trace /u01/oracle/diag/rdbms/orclbi/orclbi/trace
1 Diag Alert /u01/oracle/diag/rdbms/orclbi/orclbi/alert
1 Diag Incident /u01/oracle/diag/rdbms/orclbi/orclbi/incident
1 Diag Cdump /u01/oracle/diag/rdbms/orclbi/orclbi/cdump
1 Health Monitor /u01/oracle/diag/rdbms/orclbi/orclbi/hm
1 Default Trace File /u01/oracle/diag/rdbms/orclbi/orclbi/trace/orcl_ora_22769.trc
1 Active Problem Count 8
1 Active Incident Count 20
下表描述了此视图显示的一些信息
**使用V
D
I
A
G
C
r
i
t
i
c
a
l
E
R
R
O
R
视图查看严重错误
∗
∗
V
DIAG_Critical_ERROR 视图查看严重错误** V
DIAGCriticalERROR视图查看严重错误∗∗VDIAG_CRITICAL_ERROR 视图列出了当前 Oracle 数据库版本中指定为关键错误的所有非内部错误。
该视图未列出内部错误,因为内部错误始终被指定为关键错误。
以下示例显示了Oracle Database 11g Release 2 ( 11.2.0.2 )中 V$DIAG_CRITICAL_ERROR 视图的输出:
SELECT * FROM V$DIAG_CRITICAL_ERROR;
FACILITY ERROR
---------- ----------------------------------------------------------------
ORA 7445
ORA 4030
ORA 4031
ORA 29740
ORA 255
ORA 355
ORA 356
ORA 239
ORA 240
ORA 494
ORA 3137
ORA 227
ORA 353
ORA 1578
ORA 32701
ORA 32703
ORA 29770
ORA 29771
ORA 445
ORA 25319
OCI 3106
OCI 3113
OCI 3135
表 9-4 V$DIAG_CRITICAL_ERROR 视图中的数据
ADRCI 介绍
自动诊断存储库命令解释器( ADRCI )实用程序是用于管理 Oracle 数据库诊断数据的命令行工具。
关于 ADR 命令解释器( ADRCI )实用程序
ADRCI 是一个命令行工具,它是 Oracle 数据库 11g 中引入的故障诊断基础结构的一部分。 ADRCI 使您能够:
- 在自动诊断库( ADR )中查看诊断数据。
- 查看 Health Monitor 报告。
- 将事件和问题信息打包到 zip 文件中,以便传输到 Oracle 支持部门。
- 诊断数据包括事件和问题描述、跟踪文件、转储、运行状况监视器报告、警报日志条目等。
- ADR 数据由 ADR 目录上的操作系统权限保护,因此无需登录 ADRCI 。
- ADRCI 具有丰富的命令集,可以在交互模式或脚本中使用。
登录 adcri
PATH 环境变量必须包含 ORACLE_HOME/bin 。
[oracle@cjcos02 ~]$ adrci
ADRCI: Release 11.2.0.4.0 - Production on Sat Dec 3 15:53:28 2022
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
ADR base = "/oracle/app/oracle"
adrci>
查看帮助信息
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 PROBLEM
SHOW REPORT
SHOW TRACEFILE
SPOOL
There are other commands intended to be used directly by Oracle, type
"HELP EXTENDED" to see the list
adrci> help extended
HELP [topic]
Available Topics:
BEGIN BACKUP
CD
CREATE STAGING XMLSCHEMA
CREATE VIEW
DDE
DEFINE
DELETE
DESCRIBE
DROP VIEW
END BACKUP
INSERT
LIST DEFINE
MERGE ALERT
MERGE FILE
MIGRATE
QUERY
REPAIR
SELECT
SET COLUMN
SHOW CATALOG
SHOW DUMP
SHOW SECTION
SHOW TRACE
SHOW TRACEMAP
SWEEP
UNDEFINE
UPDATE
VIEW
在批处理模式下使用ADRCI
批处理模式允许您一次运行一系列ADRCI 命令,而无需提示输入 。
[oracle@cjcos02 ~]$ adrci -help
Syntax:
adrci [-help] [script=script_filename]
[exec = "one_command [;one_command;...]"]
Options Description (Default)
-----------------------------------------------------------------
script script file name (None)
help help on the command options (None)
exec exec a set of commands (None)
-----------------------------------------------------------------
[oracle@cjcos02 ~]$ adrci exec="show homes"
ADR Homes:
diag/rdbms/cjc/cjc
diag/clients/user_oracle/host_2119060462_80
diag/tnslsnr/cjcos02/listener
执行多个命令
[oracle@cjcos02 ~]$ adrci exec="show homes;show incident"
ADR Homes:
diag/rdbms/cjc/cjc
diag/clients/user_oracle/host_2119060462_80
diag/tnslsnr/cjcos02/listener
ADR Home = /oracle/app/oracle/diag/rdbms/cjc/cjc:
*************************************************************************
INCIDENT_ID PROBLEM_KEY CREATE_TIME
-------------------- ----------------------------------------------------------- ----------------------------------------
20553 ORA 600 [kccsbck_first] 2022-10-15 10:40:54.717000 +08:00
ADR Home = /oracle/app/oracle/diag/clients/user_oracle/host_2119060462_80:
*************************************************************************
0 rows fetched
ADR Home = /oracle/app/oracle/diag/tnslsnr/cjcos02/listener:
*************************************************************************
0 rows fetched
通过脚本执行命令
[oracle@cjcos02 ~]$ vi adrci.txt
SET HOMEPATH diag/rdbms/orcl/orcl; SHOW ALERT -term
[oracle@cjcos02 ~]$ adrci script=adrci.txt
......
2022-09-03 21:14:05.698000 +08:00
03-SEP-2022 21:14:05 * service_update * cjc * 0
2022-09-03 21:14:32.708000 +08:00
03-SEP-2022 21:14:32 * service_update * cjc * 0
设置主目录
如果存在多个实例,可以指定特定的实例进行查看
adrci> show homes
ADR Homes:
diag/rdbms/orclbi/orclbi1
diag/rdbms/orclbi/orclbi2
adrci> set homepath diag/rdbms/orclbi/orclbi2
adrci> show homes
ADR Homes:
diag/rdbms/orclbi/orclbi2
查看警报日志 Alert Log
从Oracle Database 11g 开始,警报日志以 XML 格式文件和文本文件的形式编写。
您可以使用任何文本编辑器查看文件的格式,也可以运行ADRCI 命令查看 XML 格式的警报日志,其中省略了 XML 标记。
默认情况下,ADRCI 在默认编辑器中显示警报日志。
可以使用SET EDITOR 命令更改默认编辑器。
adrci> show alert
Choose the alert log from the following homes to view:
1: diag/rdbms/cjc/cjc
2: diag/clients/user_oracle/host_2119060462_80
3: diag/tnslsnr/cjcos02/listener
Q: to quit
查看告警日志常用命令
从末尾开始查看
adrci> show alert -tail
需要指定 HOMEPATH
DIA-48449: Tail alert can only apply to single ADR home
adrci> SET HOMEPATH diag/rdbms/cjc/cjc
adrci> show alert -tail
查看末尾 10 行
adrci> show alert -tail 1 0
实时查看
adrci> show alert -tail -f
adrci> show alert -tail 1 0 -f
将结果输出到文件
adrci> SPOOL /home/mysql/cjc1203.log
adrci> SHOW ALERT -TERM
adrci> SPOOL OFF
查询指定错误
adrci> set home diag/rdbms/cjc/cjc
adrci> SHOW ALERT -P "MESSAGE_TEXT LIKE '%ORA-01110%'"
结果如下:
......
2022-10-15 14:32:32.616000 +08:00
Errors in file /oracle/app/oracle/diag/rdbms/cjc/cjc/trace/cjc_j000_5143.trc:
ORA-12012: error on auto execute of job 3
ORA-00376: file 5 cannot be read at this time
ORA-01110: data file 5: '/oradata/cjc/cjctbs01.dbf'
ORA-06512: at "CJC.TEST_PRO", line 4
ORA-06512: at line 1
查找跟踪文件 tracefile
查看所有跟踪文件
adrci> SHOW TRACEFILE
查看 mmon 相关跟踪文件
adrci> SHOW TRACEFILE %mmon%
列出指定目录下,包含 mmon 的所有文件名称
adrci> SHOW TRACEFILE %mmon% -PATH /oracle/app/oracle/diag/rdbms/cjc/cjc/trace
按最近修改时间进行排序
adrci> SHOW TRACEFILE -RT
列出了与事件编号1681 相关的所有跟踪文件的名称
adrci> SHOW TRACEFILE -I 1681
查看事件 Incidents
adrci> SHOW INCIDENT
ADR Home = /oracle/app/oracle/diag/rdbms/cjc/cjc:
*************************************************************************
INCIDENT_ID PROBLEM_KEY CREATE_TIME
-------------------- ----------------------------------------------------------- ----------------------------------------
20553 ORA 600 [kccsbck_first] 2022-10-15 10:40:54.717000 +08:00
1 rows fetched
生成更详细的报告
adrci> SHOW INCIDENT -MODE BRIEF
adrci> SHOW INCIDENT -MODE DETAIL
ADR Home = /oracle/app/oracle/diag/rdbms/cjc/cjc:
*************************************************************************
**********************************************************
INCIDENT INFO RECORD 1
**********************************************************
INCIDENT_ID 20553
STATUS ready
CREATE_TIME 2022-10-15 10:40:54.717000 +08:00
PROBLEM_ID 1
CLOSE_TIME <NULL>
FLOOD_CONTROLLED none
ERROR_FACILITY ORA
ERROR_NUMBER 600
ERROR_ARG1 kccsbck_first
ERROR_ARG2 1
ERROR_ARG3 3760267893
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 <NULL>
SIGNALLING_SUBCOMPONENT <NULL>
SUSPECT_COMPONENT <NULL>
SUSPECT_SUBCOMPONENT <NULL>
ECID <NULL>
IMPACTS 0
PROBLEM_KEY ORA 600 [kccsbck_first]
FIRST_INCIDENT 20553
FIRSTINC_TIME 2022-10-15 10:40:54.717000 +08:00
LAST_INCIDENT 20553
LASTINC_TIME 2022-10-15 10:40:54.717000 +08:00
IMPACT1 34668546
IMPACT2 0
IMPACT3 0
IMPACT4 0
KEY_NAME ProcId
KEY_VALUE 19.1
KEY_NAME PQ
KEY_VALUE (16777216, 1665801648)
KEY_NAME Client ProcId
KEY_VALUE oracle@cjcos02 (TNS V1-V3).6377_140737352873792
KEY_NAME SID
KEY_VALUE 1.3
OWNER_ID 1
INCIDENT_FILE /oracle/app/oracle/diag/rdbms/cjc/cjc/trace/cjc_ora_6377.trc
OWNER_ID 1
INCIDENT_FILE /oracle/app/oracle/diag/rdbms/cjc/cjc/incident/incdir_20553/cjc_ora_6377_i20553.trc
1 rows fetched
仅显示了事件1681 的详细事件报告
adrci> SHOW INCIDENT -MODE DETAIL -P "INCIDENT_ID=1681"
参考:
https://docs.oracle.com/cd/E11882_01/server.112/e25494/diag.htm#ADMIN11007
https://docs.oracle.com/cd/E11882_01/server.112/e22490/adrci.htm#SUTIL700
欢迎关注我的公众号《IT小Chen》