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

62-Oracle ADR(Automatic Diagnostic Repository)

小伙伴有没有被alter、dump等各种日志、报警文件撑爆磁盘的经历。实例卡了崩了,满服务器翻alert.log、trace文件。现在可以直接adrci一条命令通吃所有组件日志。还有可以控制数据库抽风狂报ORA-600的时候,ADR自动限流,空间不再会被dump文件撑爆,现在即使实例崩了,还是adrci继续可用。不过XML格式的alert log,每次还是需要开ADRCI用show alert -p "message_text like '%ORA-%'"过滤错误。ips create package一键打包事件,官方支持更方便了。

一、ADR核心功能

统一诊断数据存储
  • 集中存储跟踪文件(Trace)、警报日志(Alert Log)、核心转储(Core Dumps)、健康检查报告(Health Monitor Reports)、DDL日志等。
  • 支持数据库、ASM、监听器、Clusterware等多组件,每个实例独立目录(ADR Home)。
问题-事件管理机制
  • 问题(Problem):严重错误(如ORA-600)分配唯一问题键(Problem Key)。
  • 事件(Incident):同一问题的每次发生生成带时间戳的事件,分配事件ID(Incident ID),自动触发告警至OEM。
  • 洪水控制(Flood Control):限制高频事件的诊断数据生成,避免系统过载(如仅记录日志,不生成转储)。
独立于数据库运行
  • 基于文件系统存储,数据库不可用时仍可访问(如崩溃恢复场景)。
自动化工具集成
  • 命令行工具adrci:查看日志、清理文件、打包事件数据。
  • 动态视图V$DIAG_INFO:实时查询关键路径(如警报日志位置)。

二、技术原理

1. 目录结构

层级

路径规则

说明

ADR Base

DIAGNOSTIC_DEST参数指定

(默认$ORACLE_BASE或$ORACLE_HOME/log)

根目录

ADR Home

diag/<product_type>/<product_id>/<instance_id>
(如diag/rdbms/orcl/orcl)

实例专属目录

子目录

alert/, trace/, incident/, cdump/, hm/

分别存储XML警报日志、跟踪文件、事件数据等

2. 诊断数据类型 

类型

内容

示例文件

警报日志(Alert Log)

内部错误(ORA-600)、管理操作(STARTUP/SHUTDOWN)、死锁事件

log.xml(XML格式)

跟踪文件(Trace)

进程活动、SQL执行详情、错误堆栈

orcl_ora_12345.trc

DDL日志

所有DDL语句记录(需手动启用)

ddl.log

3. 关键机制
  • 洪水控制:相同问题事件频繁发生时,抑制转储生成,仅保留日志条目。
  • 健康监控:自动生成报告(如数据块损坏检查),存储于hm/目录。

三、版本演进 

版本

关键改进

Oracle 11g

引入ADR,替代BACKGROUND_DUMP_DEST等分散参数,统一存储诊断数据。

Oracle 12c

增强多租户支持,每个PDB独立事件跟踪;优化adrci的事件打包(IPS)功能。

Oracle 19c~

集成机器学习(如自动根因分析);支持云环境诊断数据直传Oracle Support。

四、验证脚本

1. 查询ADR路径
-- 查看所有关键路径
SELECT name, value FROM V$DIAG_INFO;

输出示例23ai和19c: 

SELECT name, value FROM V$DIAG_INFO;NAME                     VALUE
________________________ _____________________________________________________________
Diag Enabled             TRUE
ADR Base                 /opt/oracle
ADR Home                 /opt/oracle/diag/rdbms/free/FREE
Diag Trace               /opt/oracle/diag/rdbms/free/FREE/trace
Diag Alert               /opt/oracle/diag/rdbms/free/FREE/alert
Diag Incident            /opt/oracle/diag/rdbms/free/FREE/incident
Diag Cdump               /opt/oracle/diag/rdbms/free/FREE/cdump
Health Monitor           /opt/oracle/diag/rdbms/free/FREE/hm
Default Trace File       /opt/oracle/diag/rdbms/free/FREE/trace/FREE_ora_154577.trc
Active Problem Count     0
Active Incident Count    0
ORACLE_HOME              /opt/oracle/product/23ai/dbhomeFree
Attention Log            /opt/oracle/diag/rdbms/free/FREE/trace/attention_FREE.log13 rows selected.
---
SYS@CDB$ROOT> SELECT name, value FROM V$DIAG_INFO;
NAME                    VALUE
Diag Enabled            TRUE
ADR Base                /u01/app/oracle
ADR Home                /u01/app/oracle/diag/rdbms/test19/test19
Diag Trace              /u01/app/oracle/diag/rdbms/test19/test19/trace
Diag Alert              /u01/app/oracle/diag/rdbms/test19/test19/alert
Diag Incident           /u01/app/oracle/diag/rdbms/test19/test19/incident
Diag Cdump              /u01/app/oracle/diag/rdbms/test19/test19/cdump
Health Monitor          /u01/app/oracle/diag/rdbms/test19/test19/hm
Default Trace File      /u01/app/oracle/diag/rdbms/test19/test19/trace/test19_ora_30455.trc
Active Problem Count    0
Active Incident Count   0
ORACLE_HOME             /u01/app/oracle/product/19.3.0/dbhome_1已选择 12 行。
2. 使用adrci管理日志 
adrci
show homes                      -- 列出所有ADR Home
set home diag/rdbms/orcl/orcl   -- 切换目录
show alert -tail 20             -- 实时查看警报日志尾部
purge -age 1440 -type incident  -- 清理24小时内的事件数据
--
[oracle@OL97 ~]$ adrciADRCI: Release 23.0.0.0.0 - Production on Sun Jun 22 12:28:33 2025Copyright (c) 1982, 2025, Oracle and/or its affiliates.  All rights reserved.ADR base = "/opt/oracle"
adrci> show homes;
ADR Homes:
diag/rdbms/free/FREE
diag/clients/user_oracle/RMAN_3026389520_115
diag/clients/user_oracle/host_3026389520_115
diag/tnslsnr/OL97/listener
diag/orapwd/ol97/kuzr
adrci> set home diag/rdbms/free/FREE
adrci> show alert -tail 2
2025-06-22 08:37:44.840000 +08:00Current log# 2 seq# 59 mem# 0: /opt/oracle/oradata/FREE/redo02.log
NET  (PID:151752): Archived Log entry 54 added for B-1203593363.T-1.S-58 LOS:0x0000000000552488 NXS:0x0000000000552551 NAB:319 ID 0x57f538d2 LAD:1 [krse.c:4872]
adrci> purge -age 1440 -type incident
3. 启用DDL日志
---- 启用后DDL记录到log/ddl.log
ALTER SYSTEM SET enable_ddl_logging = TRUE;
SYS@CDB$ROOT> ALTER SYSTEM SET enable_ddl_logging = TRUE;
System altered.
4. 事件打包(供Oracle Support分析) 
adrci
ips create package incident <incident_id>    -- 创建逻辑包
ips generate package 1 in /tmp              -- 输出物理包到/tmp
5. 设置清理策略 
adrci
set control (SHORTP_POLICY = 120);  -- 跟踪文件保留5天
set control (LONGP_POLICY = 168);   -- 事件数据保留7天

五、使用体验

ADR通过标准化目录结构、事件驱动模型和洪水控制机制,实现了诊断数据的统一管理与高效分析。其演进过程体现了Oracle从分散管理到集中化、再到智能诊断的转型。通过adrci和动态视图的组合使用,管理员可快速定位问题,减少停机时间。

http://www.xdnf.cn/news/1064845.html

相关文章:

  • 量化-因子处理
  • 【递归,搜索与回溯算法】记忆化搜索(二)
  • Vue.js数据代理与事件处理全解析:从原理到实践
  • 【DDD】——带你领略领域驱动设计的独特魅力
  • React基础
  • MakeItTalk: Speaker-Aware Talking-Head Animation——说话者感知的说话头动画
  • 【笔记】Windows 系统迁移 Ubuntu(Preview)应用到其他磁盘
  • Element表格表头合并技巧
  • 第八章 目录一致性协议 A Primer on Memory Consistency and Cache Coherence - 2nd Edition
  • Bytemd@Bytemd/react详解(编辑器实现基础AST、插件、跨框架)
  • 分库分表下的 ID 冲突问题与雪花算法讲解
  • JVM(10)——详解Parallel垃圾回收器
  • python高校教务管理系统
  • 超详细YOLOv8/11图像菜品分类全程概述:环境、数据准备、训练、验证/预测、onnx部署(c++/python)详解
  • TypeScript类型定义:Interface与Type的全面对比与使用场景
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(三十六) -> 配置构建(三)
  • 算法导论第二十五章 深度学习的伦理与社会影响
  • C4.5算法深度解析:决策树进化的里程碑
  • 怎么让二级域名绑定到wordpesss指定的页面
  • 0-机器学习简介
  • winform mvvm
  • opencv 之双目立体标定算法核心实现
  • STM32F103C8T6,窗口看门狗(WWDG)与独立看门狗(IWDG)详解
  • all()函数和any()函数
  • 【机器学习四大核心任务类型详解】分类、回归、聚类、降维智能决策指南
  • 【投稿与写作】overleaf 文章转投arxiv流程经验分享
  • 开发语言本身只是提供了一种解决问题的工具
  • Windows 后渗透中可能会遇到的加密字符串分析
  • C++结构体初始化与成员函数实现语法详解
  • webpack+vite前端构建工具 -6从loader本质看各种语言处理 7webpack处理html