1.1、Alert Log 管理

Alert Log 是 Oracle 最重要的诊断文件,记录了数据库的所有关键事件:启动/关闭、参数修改、错误信息、表空间操作等。

实例:Alert Log 分析定位 ORA-00600 错误

 S — Situation(场景):数据库 Alert Log 中出现大量 ORA-00600 [kcrfr_resize] 错误,数据库未崩溃但性能下降。

T — Task(任务):分析 ORA-00600 错误原因并制定解决方案。

 A — Action(行动):

        1、定位 Alert Log 文件:

        SHOW PARAMETER BACKGROUND_DUMP_DEST;

        --或 12c+ 使用 ADR:

        SHOW PARAMETER DIAGNOSTIC_DEST;

        2、查看 Alert Log 中的错误详情:

          -- Alert Log 路径:$DIAG_DEST/diag/rdbms/<db_name>/<SID>/trace/alert_<SID>.log

        3、查找 ORA-00600 详细信息:

        -- 在 Alert Log 中找到对应时间点的 trace 文件

        -- trace 文件包含详细的调用栈和参数

        4、分析 trace 文件关键信息:

        -- 查看 Current SQL Statement

        -- 查看 Call Stack Trace

        -- 查看 Error Stack

        5、根据 MOS 文档查找解决方案:

        -- 搜索 ORA-00600 [kcrfr_resize]

        -- 确认为 Bug 12345678,安装补丁修复

R — Result(结果):通过 Alert Log 和 trace 文件分析,定位到 Oracle Bug。安装补丁后 ORA-00600 错误消失,性能恢复正常。

1.2、Trace 文件与 ADR

ADR(Automatic Diagnostic Repository)是 Oracle 11g 引入的统一诊断信息存储库,集中管理 Alert Log、Trace 文件、Dump 文件、健康检查报告等。

ADR 目录结构:

$DIAG_DEST/
├── diag/
│   ├── rdbms/
│   │   ├── <db_name>/
│   │   │   ├── <SID>/
│   │   │   │   ├── trace/        -- Alert Log
Trace 文件
│   │   │   │   ├── alert/        -- Alert Log (XML 格式)
│   │   │   │   ├── incident/     --
事件信息
│   │   │   │   ├── hm/           -- 健康检查报告
│   │   │   │   ├── cdump/        -- Core Dump
│   │   │   │   └── metadata/     -- ADR
元数据
│   ├── tnslsnr/                  -- 监听器诊断
│   └── asm/                      -- ASM 诊断

1.3、ADRCI 工具使用

实例:使用 ADRCI 工具快速排查问题

S — Situation(场景):数据库出现间歇性 ORA-04031 错误,需要分析最近一周的错误模式和频率。

T — Task(任务):使用 ADRCI 工具快速收集和分析诊断信息。

 A — Action(行动):

        1、启动 ADRCI: 

        $ adrci

        2、设置 ADR Home:

        ADRCI> SET HOMEPATH diag/rdbms/orcl/ORCL;

        3、查看 Alert Log 中的 ORA-04031 错误:

        ADRCI> SHOW ALERT -P "MESSAGE_TEXT LIKE ''%ORA-04031%''" -TAIL 50;

        4、查看最近的 incident:

        ADRCI> SHOW INCIDENT -P "CREATE_TIME > SYSTIMESTAMP-7";

        5、生成诊断报告:

        ADRCI> IPS CREATE PACKAGE INCIDENT <incident_id>;

        ADRCI> IPS GENERATE PACKAGE <package_id> IN /tmp/diag_pkg;

        6、打包诊断信息提交 Oracle Support:

        -- /tmp/diag_pkg 包含所有相关 trace 文件和诊断信息

R — Result(结果):通过 ADRCI 快速收集了 ORA-04031 的完整诊断信息。分析发现 Shared Pool 碎片化严重,通过调整 _shared_pool_reserved_min_alloc 和增加 Shared Pool Size 解决。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐