ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Oracle ADRCI 诊断数据工具总结

2026/8/14 21:33:32 拓冰建站 浏览量
Oracle ADRCI 诊断数据工具总结 Oracle ADRCI 诊断数据工具总结一、ADRCI概述1.1 什么是ADRCIADRCIAutomatic Diagnostic Repository Command Interpreter自动诊断存储库命令解释器是Oracle 11g版本开始引入的故障诊断基础架构的一部分。它是一个命令行工具用于管理Oracle数据库的自动诊断存储库ADRAutomatic Diagnostic Repository中的诊断数据。ADR是一个基于文件的数据库诊断数据存储库用于存储跟踪文件trace files、转储文件dumps、警报日志alert logs、运行状况监视器报告等诊断数据。从Oracle 11g开始数据库、自动存储管理ASM以及其他Oracle产品或组件将所有诊断数据统一存储在ADR中。1.2 ADRCI的核心功能ADRCI使DBA能够完成以下任务查看ADR中的诊断数据告警日志、Trace文件等查看运行状况监视器Health Monitor报告查看和跟踪事件Incident与问题Problem将事件和问题信息打包成ZIP文件便于提交给Oracle支持团队分析批量清理过期的诊断日志文件释放磁盘空间1.3 ADRCI的优势优势说明无需数据库开启即使数据库实例未启动也可以查看诊断数据统一管理跨多个实例和产品统一管理诊断数据无需反复切换环境变量问题追踪每个问题都有唯一的问题键和问题ID可通过SHOW PROBLEM查看事件记录每个问题根据发生的次数记录为一个个事件每个事件由唯一的事件ID标识跨平台支持所有平台均支持1.4 核心概念概念说明ADR BaseADR的根目录由DIAGNOSTIC_DEST参数控制默认值为$ORACLE_BASEADR Home每个数据库实例、ASM实例或组件对应的独立诊断目录事件Incident单个故障的具体发生实例每个事件有唯一ID问题Problem同一根因导致的故障集合如重复出现的ORA-006001.5 ADR 与 ADRCI 的关系ADRAutomatic Diagnostic Repository是 Oracle 11g 引入的统一诊断数据存储架构它将所有数据库组件如 RDBMS、ASM、CRS 等的诊断数据集中存储在文件系统中的一个特定目录树中。ADRCI 则是操作和管理这个 ADR 目录树的专用命令行接口。二、查询Alert日志地址2.1 使用ADRCI查看Alert日志地址ADRCI最大的便利之一就是无需记忆复杂的日志路径直接通过命令即可查看alert日志地址# 进入ADRCI交互模式$ adrci# 查看alert日志位置adrcishow home ADR Homes: diag/rdbms/orcl/orcl --这个位置就是alert日志位置 diag/tnslsnr/host51/listener2.2 通过SQL查询Alert日志地址在数据库中可以查询V$DIAG_INFO视图来定位alert日志的位置-- 查询诊断信息setlinesize200pagesize999col name format a21 colvalueformat a65SELECTname,valueFROMv$diag_info;-- 重点关注以下条目-- Diag Trace - trace文件目录包含文本格式的alert日志-- Diag Alert - alert日志目录XML格式-- Default Trace File - 当前会话的trace文件NAMEVALUE--------------------- -----------------------------------------------------------------Diag EnabledTRUEADR Base/u01/app/oracle ADR Home/u01/app/oracle/diag/rdbms/orcl/orcl Diag Trace/u01/app/oracle/diag/rdbms/orcl/orcl/trace Diag Alert/u01/app/oracle/diag/rdbms/orcl/orcl/alert Diag Incident/u01/app/oracle/diag/rdbms/orcl/orcl/incident Diag Cdump/u01/app/oracle/diag/rdbms/orcl/orcl/cdump Health Monitor/u01/app/oracle/diag/rdbms/orcl/orcl/hmDefaultTraceFile/u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_93864.trc Active Problem Count0Active Incident Count02.3 Alert日志的物理路径Oracle 11g及以后版本alert日志的默认存储路径为$ORACLE_BASE/diag/rdbms/数据库名/实例名/trace/alert_实例名.log例如/u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log同时ADR中也存储了XML格式的alert日志$ORACLE_BASE/diag/rdbms/数据库名/实例名/alert/log.xml注意Oracle建议对alert日志内容的解析应基于XML格式版本因为文本格式是非结构化的可能在不同版本间发生变化。三、GI集群中查询Alert日志地址3.1 GI集群的ADR结构在GIGrid Infrastructure集群环境中每个组件都有自己独立的ADR Home。每个ADR Home中的alert日志都特定于其组件类型如数据库、Oracle ASM、监听器Listener和Oracle Clusterware。3.2 集群中各组件的Alert日志路径组件ADR Home路径示例数据库实例diag/rdbms/db_name/instance_nameASM实例diag/asm/asm/ASM监听器diag/tnslsnr/hostname/listenerClusterwarediag/crs/hostname/crs3.3 在集群中使用ADRCI查看日志查看所有可用的ADR Homesu- grid adrci adrcishow homes11g版本的输出示例adrci show homes; ADR Homes: diag/asm/asm/ASM1 diag/tnslsnr/host40rac1/listener 11g版本的GI集群日志并没有纳入进ADRCI管控19c版本的输出示例adrci show homes; ADR Homes: diag/asmtool/user_grid/host_2921199188_110 diag/asm/asm/ASM1 diag/crs/host61rac1/crs --可以看到从19c版本开始已经将GI集群的日志也纳入ADRCI管控 diag/tnslsnr/host61rac1/asmnet1lsnr_asm diag/tnslsnr/host61rac1/listener_scan1 diag/tnslsnr/host61rac1/listener diag/asmcmd/user_grid/host61rac1 diag/kfod/host61rac1/kfod切换并查看特定组件的alert日志# 查看ASM的alert日志adrcisethomepath diag/asm/asm/ASM1 adrcishow alert-tail200# 查看监听器的alert日志adrcisethomepath diag/tnslsnr/rac01/listener adrcishow alert-tail-f3.4 集群环境的重要注意事项关键提醒RAC中各节点的GI日志目录不是共享的——即使使用ASM存储每个节点的diag/crs/hostname/crs是本机文件系统路径。在节点1上运行ADRCI清理操作对节点2完全无效。因此集群环境的日志清理需要在每个节点上分别执行。在集群环境中ADRCI的位置在$ORACLE_HOME/bin目录下。需要注意的是集群环境通常在grid用户下操作而单机环境则在oracle用户下操作。四、ADRCI使用方法4.1 启动ADRCI交互式模式# 直接输入adrci命令$ adrci ADRCI: Release11.2.0.4.0 - Production on Tue Aug416:46:582026Copyright(c)1982,2011, Oracle and/or its affiliates. All rights reserved. ADR base/u01/app/oracle批处理模式# 使用exec选项执行单个命令adrciexecshow homesadrciexecset homepath diag/rdbms/orcl/orcl; show alert -tail 1004.2 ADR Home管理ADRCI的所有操作均基于ADR Home因此设置正确的Home是所有操作的前提。查看所有ADR Homeadrcishow homes ADR Homes: diag/rdbms/orcl/orcl diag/tnslsnr/host51/listener设置当前ADR Home# 设置单个ADR Homeadrcisethomepath diag/rdbms/orcl/orcl# 验证当前Homeadrcishow home ADR Homes: diag/rdbms/orcl/orcl如果未设置ADR Home直接执行操作ADRCI会提示选择Home按编号选择即可。4.3 健康检查作为一名DBA每天对数据库进行健康检查是日常工作。通过ADRCI可以快速高效地完成检查。查看所有问题Problemsadrcishow problem该命令会显示所有实例运行中发生的严重错误。如果没有任何输出说明实例运行过程中没有发生严重错误。查看所有事件Incidentsadrcishow incident-all查看特定事件的详细信息adrcishow incident-modedetail-pincident_id4334694.4 清理日志数据库日志文件过大可能导致磁盘空间不足甚至数据库宕机。ADRCI提供了安全、高效的日志清理方式。查看清理命令帮助adrcihelppurge按时间清理日志单位分钟# 删除10天1440分钟前的alert日志(是指alertxxx.xml类型的文件) --常用purge-age14400-typealert# 删除10天14400分钟前的trace文件是指trc.trm类型的文件 --常用purge-age14400-typetrace设置ADR Home后清理sethomepath diag/rdbms/orcl/orcl purge-age14400不指定类型清理alert和trace两种类型的--常用在命令行中直接执行清理不进入交互模式-- 常用 adrciexecshow homesadrciexecset homepath diag/rdbms/orcl/orcl; purge -age 14400注意默认情况下当天的trace文件不能被清理。清理操作无需停止数据库实例不影响实例运行。4.5 IPS打包错误日志IPSIncident Packaging Service事件打包服务是Oracle 11g的新特性可以查看某个错误相关的所有dump文件和trace文件并方便地打包成一个文件极大方便了DBA进行远程诊断。基本打包流程使用SHOW INCIDENT -ALL获取错误事件ID创建逻辑包将事件添加到包中生成物理包ZIP文件示例操作# 1. 查看事件列表获取事件IDadrcishow incident-all# 2. 创建一个空的逻辑包adrciips create package# 3. 将诊断信息加入逻辑包假设事件ID为43369包号为1adrciipsaddincident43369package1# 3.1 将事件加入到package中可加入多个事件ipsaddincident72697package1# 4. 生成物理包ZIP文件到指定目录adrciips generate package1in/home/oracle adrciips generate package1in/home/oracle Generated package1infile/home/oracle/IPSPKG_20260804174302_COM_1.zip, mode complete直接创建包含事件的包# 创建包时直接指定事件IDadrciips create package incident43369# 创建包时直接指定问题IDadrciips create package problem1按时间范围打包# 创建包含两个时间点之间所有事件的包adrciips create packagetime2025-09-12 10:00:00 -08:00to2025-09-12 23:00:00 -08:00手动添加文件到已有包adrciipsaddfileADR_BASE/diag/rdbms/orcl/orcl/trace/orcl_ora12345.trc package1查看和管理包# 显示包中的所有文件adrciips show files# 显示包中的所有事件adrciips show incidents# 从包中移除诊断文件adrciips removefile4.6 其他常用命令命令说明SHOW BASE显示当前ADR Base路径SHOW TRACEFILE显示当前ADR Home下的所有trace文件SHOW TRACEFILE %mmon%查找包含特定字符串的trace文件SHOW TRACEFILE -I 43417显示与特定事件相关的trace文件HELP列出所有可用命令HELP [command]查看特定命令的详细语法SET EDITOR设置查看alert日志的编辑器SPOOL将输出重定向到文件五、日志保留策略配置ADRCI允许通过设置保留策略来控制诊断数据的自动清理避免手动频繁清理。5.1 查看当前保留策略adrcisethomepath diag/rdbms/orcl/orcl adrcishow control5.2 设置保留策略# SHORTP_POLICY短保留策略单位小时主要管理TRACE、core dump等# LONGP_POLICY长保留策略单位小时主要管理alert log、incident信息等# 设置短保留策略为72小时3天adrcisetcontrol(SHORTP_POLICY72)# 设置长保留策略为720小时30天adrcisetcontrol(LONGP_POLICY720)5.3 默认保留策略策略默认值管理内容SHORTP_POLICY720小时30天TRACE文件、core dump、打包信息LONGP_POLICY8760小时365天Alert日志、incident信息、incident转储六、常用查询与维护命令汇总6.1 快速参考操作命令启动ADRCIadrci查看所有Homeshow homes设置当前Homeset homepath diag/rdbms/orcl/orcl查看当前Homeshow home查看ADR Baseshow base查看alert日志show alert实时查看alert日志show alert -tail -f查看最近N行alertshow alert -tail 50查看ORA错误show alert -p message_text like %ORA-%查看所有问题show problem查看所有事件show incident -all查看特定事件详情show incident -mode detail -p incident_idxxx查看trace文件show tracefile清理日志purge -age 1440 -type alert创建IPS包ips create package生成IPS包ips generate package 1 in /path查看帮助help查看保留策略show control设置保留策略set control (SHORTP_POLICY 72)6.2 常用清理场景# 场景1清理7天前的trace文件10080分钟adrcipurge-age10080-typetrace# 场景2清理30天前的alert日志43200分钟adrcipurge-age43200-typealert# 场景3清理所有类型中7天前的数据adrcipurge-age10080七、常见问题与注意事项7.1 常见问题Q1ADRCI可以查看CRS日志吗11g版本不可以ADRCI只可以查看数据库、ASM、监听器的日志但CRSCluster Ready Services日志通常不包含在ADRCI的show home列表中。19c版本开始支持查看CRS日志。Q2集群环境中的日志清理需要注意什么RAC各节点的GI日志目录是独立的需要在每个节点上分别执行清理操作。Q3为什么有些日志无法通过purge清理默认情况下当天的trace文件不能被清理。如需强制清理可调整ARCH_CLEAN_IGNORE_MODE参数。Q4ADRCI工具的位置在哪里ADRCI位于$ORACLE_HOME/bin目录下。