当前位置: 首页 > news >正文

Oracle ADRCI工具全面使用指南:从基础到故障诊断实战

ADRCI(Automatic Diagnostic Repository Command Interpreter)是Oracle 11g及以上版本引入的故障可诊断性架构核心工具,用于管理和分析自动诊断信息库(ADR)中的诊断数据。无论是查看告警日志、定位Trace文件,还是打包故障信息提交Oracle Support,ADRCI都能提供高效的命令行支持,是DBA日常故障排查的必备工具。

一、ADRCI简介与前置条件

1.1 什么是ADRCI?

ADRCI是Oracle数据库自带的命令行工具,无需单独安装,其核心功能包括:

  • 查看ADR中的告警日志、Trace文件、事件(Incident)等诊断数据;
  • 生成健康监视器(Health Monitor)报告;
  • 将故障事件(Incident)和问题(Problem)打包为压缩文件,便于提交Oracle Support分析。

1.2 前置条件:环境变量配置

使用ADRCI前,需确保ORACLE_HOMEPATH环境变量已正确配置,让系统能找到ADRCI可执行文件(位于$ORACLE_HOME/bin目录下):

# 配置环境变量(以Linux为例)
export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH# 验证配置:直接输入adrci启动工具
$ adrci
ADRCI: Release 19.0.0.0.0 - Production on Wed Oct 11 10:00:00 2025
Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.ADR base = "/u01/app/oracle/diag"
adrci>

二、ADRCI核心操作指南

ADRCI的所有操作均基于ADR Home(诊断数据目录)——每个数据库实例、客户端或工具都对应一个独立的ADR Home。因此,设置ADR Home是所有操作的前提

2.1 ADR Home管理:指定诊断数据来源

ADR Home是诊断数据的存储目录(如diag/rdbms/orcl/orcl),需先明确操作的Home,再执行后续命令。

2.1.1 查看所有可用ADR Home

通过show home命令列出当前ADR Base下的所有Home:

adrci> show home
ADR Homes:
1: diag/rdbms/orcl/orcl       # 数据库实例的ADR Home
2: diag/clients/user_oracle/host_123456_78  # 客户端ADR Home
3: diag/diagtool/user_oracle/adrci_123456_78 # ADRCI工具自身的ADR Home
2.1.2 设置ADR Home

使用set homepath(或简写set home)指定当前操作的ADR Home,支持单个或多个Home:

# 设置单个ADR Home(常用)
adrci> set homepath diag/rdbms/orcl/orcl# 验证当前Home
adrci> show home
ADR Homes:
diag/rdbms/orcl/orcl  # 已选中的Home

若未设置ADR Home直接执行操作(如show alert),ADRCI会提示选择Home,按编号选择即可。

2.2 查看与分析告警日志

Oracle 11g后,告警日志同时以XML格式(ADR中)和文本格式$ORACLE_BASE/diag/rdbms/<dbname>/<instname>/trace/alert_<instname>.log)存储。ADRCI主要用于查看XML格式日志,支持灵活过滤和实时跟踪。

2.2.1 基础查看:使用默认编辑器

ADRCI默认调用系统编辑器(如Linux的vi、Windows的notepad)打开告警日志,可通过set editor修改默认编辑器:

# Windows下设置记事本为编辑器
adrci> set editor notepad.exe# 打开告警日志(需先设置ADR Home)
adrci> show alert
2.2.2 终端直接显示:-term参数

若不想打开编辑器,可通过-term参数在终端直接显示日志:

adrci> show alert -term
2.2.3 实时跟踪与尾部查看:-tail参数
  • 查看最后N行日志:show alert -tail N(如显示最后50行);
  • 实时跟踪日志(类似tail -f):show alert -tail -f(按Ctrl+C退出)。
# 查看最后50行告警日志
adrci> show alert -tail 50# 实时跟踪日志
adrci> show alert -tail -f
2.2.4 过滤特定错误:-p参数

通过-p参数筛选包含指定关键词的日志(如ORA-600、ORA-1578),支持SQL-like条件:

# 查找所有包含ORA-600的日志
adrci> show alert -p "MESSAGE_TEXT LIKE '%ORA-600%'"# 查找特定进程(如MMON)的日志
adrci> show alert -p "PROCESS_ID LIKE '%mmon%'"
2.2.5 日志重定向到文件

若需保存日志到文件,可通过spool命令实现:

# 开启重定向,输出到/home/oracle/orcl_alert.log
adrci> spool /home/oracle/orcl_alert.log# 执行日志查看命令
adrci> show alert -term# 关闭重定向
adrci> spool off

2.3 Trace文件查找与筛选

Trace文件(如orcl_ora_12345.trc)记录数据库进程的详细诊断信息,ADRCI的show tracefile命令可快速定位目标文件。

2.3.1 查看当前ADR Home下所有Trace文件
adrci> show tracefile
diag/rdbms/orcl/orcl/trace/orcl_ora_12345.trc
diag/rdbms/orcl/orcl/trace/orcl_mmon_67890.trc
2.3.2 按名称过滤:通配符%

查找文件名包含特定关键词的Trace文件(如MMON进程相关):

adrci> show tracefile %mmon%
diag/rdbms/orcl/orcl/trace/orcl_mmon_67890.trc
2.3.3 按事件ID过滤:-I参数

查找与特定事件(Incident)关联的Trace文件(需已知事件ID):

# 查找事件ID=43417的Trace文件
adrci> show tracefile -I 43417
2.3.4 按修改时间排序:-RT参数

按文件修改时间降序显示(最新文件在前):

adrci> show tracefile -RT

2.4 事件(Incident)查看与详情

当数据库发生严重错误(如ORA-600、ORA-7445)时,会自动创建事件(Incident) 并生成对应的Trace文件。ADRCI可查看事件列表及详细信息。

2.4.1 查看所有事件:show incident

默认显示当前ADR Home下所有未关闭的事件:

adrci> show incident
ADR Home = /u01/app/oracle/diag/rdbms/orcl/orcl:
INCIDENT_ID  PROBLEM_KEY        CREATE_TIME
433469       ORA 600 [4137]     2025-10-11 09:30:00.123456 +08:00
433470       ORA 1578           2025-10-11 09:35:00.654321 +08:00
2.4.2 查看事件详情:-mode detail

通过-mode detail查看单个事件的完整信息(如错误原因、关联Trace文件路径):

# 查看事件ID=433469的详情
adrci> show incident -mode detail -p "incident_id=433469"
2.4.3 Oracle事件数量限制

为避免事件过多占用资源,Oracle默认限制:

  • 每小时最多生成5个事件;
  • 每天最多生成25个事件。

2.5 IPS事件打包:为Oracle Support准备诊断数据

当故障需Oracle Support协助时,可通过IPS(Incident Packaging Service) 将事件、Trace文件、告警日志等打包为压缩文件,步骤如下:

2.5.1 1. 创建逻辑包

逻辑包是临时容器,用于收集诊断数据:

# 创建空逻辑包(默认包ID=1)
adrci> ips create package
Created package 1 with default metadata.
2.5.2 2. 向逻辑包添加事件/文件
  • 添加单个事件:ips add incident <事件ID> package <包ID>
  • 添加时间范围内的所有事件:ips create package time '开始时间' to '结束时间'
  • 手动添加Trace文件:ips add file <文件路径> package <包ID>
# 向包1添加事件433469
adrci> ips add incident 433469 package 1# 创建包含2025-10-11 09:00-10:00事件的包(包ID=2)
adrci> ips create package time '2025-10-11 09:00:00 +08:00' to '2025-10-11 10:00:00 +08:00'# 手动添加Trace文件到包1
adrci> ips add file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_12345.trc package 1
2.5.3 3. 生成物理包(压缩文件)

将逻辑包中的数据生成ZIP格式的物理包,保存到指定目录:

# 生成包1的物理包,保存到/home/oracle目录
adrci> ips generate package 1 in /home/oracle
Generated package 1 in file /home/oracle/ORA600_20251011_093000.zip, size 1.2MB.
2.5.4 4. 增量添加数据(可选)

若需补充诊断数据,可增量更新物理包:

adrci> ips generate package 1 in /home/oracle incremental
2.5.5 5. 查看包内内容
  • 查看包内文件:ips show files package <包ID>
  • 查看包内事件:ips show incidents package <包ID>
adrci> ips show files package 1
adrci> ips show incidents package 1

2.6 健康监视器(HM Run)报告生成与查看

健康监视器(Health Monitor)用于检查数据库结构完整性、数据块损坏等问题,ADRCI可生成并查看其报告。

2.6.1 查看HM Run列表

先通过show hm_run获取报告ID(RUN_ID)和名称(RUN_NAME):

adrci> show hm_run
RUN_ID  RUN_NAME        CHECK_NAME                  START_TIME
75461   HM_RUN_75461    DB Structure Integrity Check 2025-10-11 06:00:00 +08:00
2.6.2 创建HM报告

基于RUN_NAME创建报告(仅支持hm_run类型):

adrci> create report hm_run HM_RUN_75461
Report created.
2.6.3 查看HM报告

通过show report查看报告内容(默认XML格式,可用于EM或DBMS_HM格式化):

adrci> show report hm_run HM_RUN_75461
<?xml version="1.0" encoding="US-ASCII"?>
<HM-REPORT REPORT_ID="HM_RUN_75461"><TITLE>HM Report: HM_RUN_75461</TITLE><RUN_INFO><CHECK_NAME>DB Structure Integrity Check</CHECK_NAME><RUN_STATUS>COMPLETED</RUN_STATUS><RUN_START_TIME>2025-10-11 06:00:00 +08:00</RUN_START_TIME></RUN_INFO>
</HM-REPORT>

2.7 诊断数据清理:PURGE命令

ADR中的诊断数据(告警日志、Trace文件、事件)会占用磁盘空间,可通过purge命令按策略清理。默认保留策略:

  • 事件/问题信息:保留1年;
  • Trace文件/转储文件:保留30天。
2.7.1 PURGE命令语法
purge [[-i <事件ID1> | <事件ID1 事件ID2>] | [-age <分钟> [-type <数据类型>]] | [-size <字节>]]
2.7.2 常用清理场景
  • 按默认策略清理当前ADR Home数据:
    adrci> purge
    
  • 清理指定事件ID范围的数据(如123-456):
    adrci> purge -i 123 456
    
  • 清理N分钟前的指定类型数据(如1小时前的事件):
    # 清理60分钟前的事件(-type支持ALERT/INCIDENT/TRACE/CDUMP/HM)
    adrci> purge -age 60 -type incident
    
  • 清理数据直到ADR Home大小降至指定字节(如100MB):
    adrci> purge -size 104857600  # 100MB = 100*1024*1024字节
    

2.8 帮助命令:快速查询用法

若记不清命令参数,可通过help获取帮助:

# 查看所有可用命令
adrci> help# 查看特定命令的详细用法(如purge)
adrci> help purge# 查看Oracle内部命令(进阶)
adrci> help extended

三、ADRCI常用操作总结

为方便快速查阅,整理以下高频操作命令表:

操作目标命令示例
启动ADRCI$ adrci
设置ADR Homeadrci> set homepath diag/rdbms/orcl/orcl
查看告警日志(实时)adrci> show alert -tail -f
筛选ORA-600日志adrci> show alert -p “MESSAGE_TEXT LIKE ‘%ORA-600%’”
查找MMON相关Trace文件adrci> show tracefile %mmon%
查看事件列表adrci> show incident
打包事件433469到/homeadrci> ips create package; ips add incident 433469 package 1; ips generate package 1 in /home
清理1小时前的Trace文件adrci> purge -age 60 -type trace

通过ADRCI,DBA可高效管理诊断数据、定位故障根源,尤其是在无图形化界面(如生产环境)的场景下,其命令行灵活性和功能性远胜于直接编辑文本文件。掌握上述操作,可大幅提升Oracle数据库故障排查的效率。

http://www.dtcms.com/a/470488.html

相关文章:

  • 美食网站设计欣赏上海著名网站建设
  • 【智能系统项目开发与学习记录】bringup功能包详解
  • 外贸网建站建公司网站的详细步骤
  • 美食网站建设书成都seo技术
  • 江河建设集团有限公司网站梧州网站建设流程
  • 在Qt中使用VTK
  • 正安北郊湖吉他文化广场自动化监测
  • 【论文阅读】DSPy-based neural-symbolic pipeline to enhance spatial reasoning in LLMs
  • cn域名后缀网站163企业邮箱格式
  • psql常用命令
  • 高速公路自动车道保持系统原理与实现
  • 番禺做网站最便宜的哪家公司wordpress注册界面
  • 【推荐100个unity插件】将您的场景渲染为美丽的冬季风景——Global Snow 2
  • Windows安装Elasticsearch保姆级教程
  • 温州网站链接怎么做在山东省建设监理协会网站
  • C++中的父继子承:继承方式实现栈及同名隐藏和函数重载的本质区别, 派生类的4个默认成员函数
  • 32.渗透-.Kali Linux-工具-netcat的说明
  • Large Kernel Modulation Network for Efficient Image Super-Resolution 学习笔记
  • 城乡住房建设部网站杭州市萧山区哪家做网站的公司好
  • 高精度逆向工程:XTOM蓝光扫描仪赋能自由曲面微尺寸共性电路的增材制造
  • 多区域主动-主动(PostgreSQL 逻辑复制 + 冲突解决)在 ABP 的落地
  • 东莞精密机械制造工厂如何10个SolidWorks共用一台服务器资源
  • 六盘水市住房和城乡建设局网站wordpress 淘宝客app
  • Google 智能体设计模式:推理技术
  • 恒丰建设集团有限公司 网站嘉兴提高网站排名
  • 奥远网站建设流程怎做不下网站刷枪
  • VBA即用型代码手册:保存为PDF文件SaveAs PDF
  • 【环境配置】Windows上安装(升级)Cuda11.6 + cudnn9.8 + pytorch 并测试
  • 国内网页设计网站建设建立wordpress网站吗
  • 400电话网络推广微信网站推广方法视频