ADR故障诊断架构-11g后引入
ADR架构由11g版本引入,用于防止、检测、诊断用以解决数据库bug或者崩溃等问题。对于备份和恢复操作,无论是否使用rman。架构中用以展示得信息都能用来为我们解决错误提供捷径。
ADR实际部署在数据库外部目录结构,所以当数据库关闭时是可以用于问题诊断得
**对于c版本中,**虽然产生了CDB和PDB容器概念,但作为根容器的CDB$ROOT的ADR会存储所有PDB的ADR错误日志,PDB的专有目录并不会记录产生的错误内容。排查时只需要参考CDB内容即可,ADR目录也不会对PDB做进一步命名区分
diagnostic_dest #该参数用于定义adr根目录,默认情况下都处于$oracle_base参数指定的位置,即oracle的根目录下。如果$oracle_base没有指定,则会指定为$oracle_home的参数位置
如果数据库$oracle_base参数内容为/u01/oracle,数据库实例名为mydb,则ADR实际目录结构为/u01/oracle/diag/rdbms/mydb
ADR基础目录架构
#依照具体配置不同,ADR可能会创建其他子目录或者会自动清楚诊断数据,这里只讲解主要常见目录
alert #为cml格式警报日志位置
cdump #数据库核心转储位置
trace #oracle系统生成得跟踪文件和警报日志文本副本
incident #事件打包存储位置,每个子目录都对应一个事件
#以上内容都可通过 v$diag_info视图查询到,该视图用于展示所有adr排查所需要得内容
#ADR_base
默认情况下ADR_base都处于 $oracle_base/diag目录下,目前先默认ADR_base=$oracle_base/diag
#针对不同实例情况,ADR目录略有不同,但归根到底时按照下面方式命名
ADR_base/rdbms/db_unique_name/sid
#此为ADR根目录得模板,db_unique_name
#举例
ADR_base/rdbms/实例名/实例名 #针对数据库唯一名称和sid都相同得情况
ADR_base/asm/+asm/+asm #针对单实例得asm实例情况
ADR_base/rdbms/db_unique_name/sid #
ADR基础构件
-
自动诊断存储库ADR
ADR常用下面四个排查日志进行问题处理
-
数据库警报日志
记录数据库中所有重要事件,启动关闭、故障以及用于诊断数据库问题的信息。
-
DDL日志
c版本新引进日志,记录所有DDL事件,使用前需要先开启参数
enable_ddl_logging为true
show parameter enable_ddl_logging; alter system set enable_ddl_logging=true;
-
调试日志
c版本新引进日志,记录数据库中不正常但是缺不影响数据库自身状态的时间,g版本以前这些是存放在警报日志中的
-
跟踪文件trace
跟踪文件时排查故障的重要工具,可以用来分析和查看给定数据库目前在做什么,过去做了什么。该文件可以用来调整数据库性能
-
-
事件打包服务IPS
用于收集存储打包ADR获取到的诊断信息,并确定oracle需要那些文件来诊断问题,完成后会打包一个压缩包存放在ADR处
-
SQL test case builder
创建测试用例,依照给定问题内容创建问题重建信息
-
警报日志及支持故障诊断得各种视图
v$dia_info #得出日志位置 重要 #该视图用于提供各种有关ADR的信息,c版本后提供总计11种特定的信息片段当前存在问题、事件数量、不同ADR组件的各种诊断目录位置,ADR基本位置以及是否启用ADR dba_outstanding_alerts #用以查看当前处于活动状态的任意警报,基本上会存储所有报警内容,但是c版本后不影响当前数据库状态的报警不会再这里出现 v$diag_critical_error;#呈现ORA等在内的重要报错,附带自动事件包 v$database_block_corruption#呈现受损的数据块,执行块级介质恢复视图非常有用 v$corrupt_xid_list#呈现受损的撤销段 #撤销段受损一般都是由事务造成的。如果oracle尝试的自动修复没有左右,则将对应信息插入到此视图 V$HM_RUN #用于呈现历史进行过的健康检查和运行状态
-
跟踪文件、转储文件和核心文件
-
DDL及调试日志
-
ADRCI命令行工具