ADR是11g引用入的基于文件的数据库诊断数据存储库,用于存储例如跟踪、转储、警报日志、运行状况监视器报告等。它具有跨多个实例和多个产品的统一目录结构。10g中的初始化参数BACKGROUND_DUMP_DEST和USER_DUMP_DEST已被弃用。具体的位置已设置为DIAGNOSTIC_DEST标识ADR的位置。
诊断数据 | 以前的位置 | ADR位置 |
意外事件转储 | USER|BACKGROUND_DUMP_DEST | $ADR_HOME/incident/incdir_n |
核心转储 | CORE_DUMP_DEST | $ADR_HOME/cdump |
预警日志数据 | BACKGROUND_DUMP_DEST | $ADR_HOME/alert&trace |
后台进程跟踪 | BACKGROUND_DUMP_DEST | $ADR_HOME/trace |
前台进程跟踪 | USER_DUMP_DEST | $ADR_HOME/trace |
如果省略DIAGNOSTIC_DEST参数或保留为null,则数据库DIAGNOSTIC_DEST在启动时设置如下:
如果ORACLE_BASE设置了环境变量,DIAGNOSTIC_DEST则设置为指定的目录ORACLE_BASE。
如果ORACLE_BASE未设置环境变量,DIAGNOSTIC_DEST则设置为ORACLE_HOME / log。
ADR子目录根据安装产品的不同会生成不同的产品或组件的诊断日志,如安装了db各gi的操作系统上通常有以下目录结构:
数据库实例的ADR目录结构如下:
包含以下部分:
子目录名称 | 内容 |
Alert | XML格式的警报日志 |
cdump | 核心文件 |
Incident | 多个子目录,其中每个子目录都针对特定事件命名,每个子目录包含仅与该事件有关的转储 |
trace | 后台和服务器进程跟踪文件,SQL跟踪文件和文本格式的警报日志 |
(其他) | ADR home的其他子目录,用于存储事件包,运行状况监视器报告,警报日志以外的日志(如DDL日志和调试日志)等信息 |
数据库具体的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$DIAG_INFO 视图列出了所有重要的 ADR 位置,包括:
• ADR Base:ADR 基目录的路径。 • ADR Home:当前数据库实例的 ADR 主目录的路径。 • Diag Trace:文本预警日志和后台/前台进程跟踪文件的位置。 • Diag Alert:XML 版本的预警日志的位置。 • Default Trace File:会话的跟踪文件的路径。SQL 跟踪文件将写入到这里。
Adrci命令行工具
adrci是oracle 11g中用来管理日志文件的一个命令行工具。
[oracle@prodb ~]$ adrci -help Syntax: adrci [-help] [script=script_filename] [exec = "one_command [;one_command;...]"] [oracle@prodb ~]$ adrci ADRCI: Release 11.2.0.4.0 - Production on Thu May 31 14:32:48 2018 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. ADR base = "/u01" 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>
adrci支持脚本方式和exec的命令集方式。
脚本方式:
该脚本为修改trc\trm日志保留天数为5-7天。 [oracle@prodb ~]$ cat adrci_script.txt show homes; set home diag/rdbms/prodb/prodb; set control (SHORTP_POLICY = 120); set control (LONGP_POLICY = 168); show control; [oracle@prodb ~]$ adrci script=adrci_script.txt
exec命令集方式:
[oracle@prodb ~]$ adrci exec="show homes;set home diag/rdbms/prodb/prodb;set control \(SHORTP_POLICY=120\);set control \(LONGP_POLICY=168\);show control"
常见的adrci命令:
1.显示adr_home
adrci> show homes ADR Homes: diag/tnslsnr/prodb/listener diag/rdbms/prodb/prodb diag/clients/user_oracle/host_3001804591_80
2.指定adr_home
adrci> set home diag/rdbms/prodb/prodb adrci> show homes ADR Homes: diag/rdbms/prodb/prodb
3.显示alter文件
adrci> show alert #按q退出 adrci> show alert -tail 50 #显示最后50行 adrci> show alert -tail 50 #tail -f alert_sid.log adrci> show alert -p "message_text like '%ORA%'"
4.显示告警事件
adrci> show incident adrci> show incident -mode detail adrci> show incident -mode detail -p "incident_id=123"
4.显示问题
adrci> show problem
5.删除10天前的incident 14400=60min*24*10
adrci> purge -age 14400 -type incident
生成诊断package
1)意外事件程序包是 ADR 中的一个逻辑结构,用于描述一个或多个问题。 2)程序包是一个 zip 文件,其中包含与某个意外事件程序包有关的转储信息。 3)默认情况下,一个意外事件程序包中只包含每个问题的前三个意外事件和后三个意外事件。 4)可以生成完整的 zip 文件,也可以生成增量 zip 文件。
1.创建逻辑包
adrci> ips create package incident 373 adrci> ips add incident 168 package 1
2.输出物理包
adrci>ips generate package 1 in /home/oracle
其他的打包命令:
• IPS CREATE PACKAGE 用于创建空的程序包。 • IPS CREATE PACKAGE PROBLEMKEY 用于创建基于问题关键字的程序包。 • IPS CREATE PACKAGE PROBLEM 用于创建基于问题 ID 的程序包。 • IPS CREATE PACKAGE INCIDENT 用于创建基于意外事件 ID 的程序包。 • IPS CREATE PACKAGE SECONDS 用于创建包含从数秒前到现在为止这个时间间隔内生成的所有意外事件的程序包。 • IPS CREATE PACKAGE TIME 用于创建基于指定时间范围的程序包。也可以向现有程序包添加内容。例如: • IPS ADD INCIDENT PACKAGE 用于将意外事件添加到现有程序包。 • IPS ADD FILE PACKAGE 用于将 ADR 中的文件添加到现有程序包。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。