温馨提示×

centos oracle日志如何查看分析

小樊
40
2025-12-21 10:33:02
栏目: 云计算

CentOS 上 Oracle 日志查看与分析实用指南

一 日志类型与定位

  • 使用 ADRCI 快速定位各类日志与跟踪文件(推荐):
    • 进入 ADRCI:adrci
    • 设置主目录:show home;set home diag/rdbms//
    • 查看告警日志:show alert -tail 200
    • 按时间查看:show alert -p “message_text like ‘%ORA-%’ and originating_timestamp > ‘2025-12-20 00:00:00’”
    • 列出与某告警关联的 trace:show trace
  • 常用日志与路径要点:
    • 告警日志(AlertSID.log):记录实例启停、参数变更、检查点、归档切换、恢复、ORA- 错误等;路径在 ADR 下,如:/u01/app/oracle/diag/rdbms///trace/alert_.log
    • 后台进程 Trace:同 trace 目录,文件名形如:.trc
    • 监听日志与连接诊断:
      • 动态监听日志:show parameter listener;日志通常在 $ORACLE_HOME/diag/tnslsnr//trace/listener.log
      • 静态监听日志:在 listener.ora 中配置 LOG_FILE、LOG_DIRECTORY 后生成
    • 审计日志(若开启):由 AUDIT_TRAIL 决定,常见为 DB(写入数据字典视图)或 OS(写入操作系统审计文件)。

二 告警日志与跟踪文件的快速分析

  • 告警日志的关键线索:
    • 时间线:按时间戳定位问题发生点,关注紧邻的 ORA- 错误与 CheckpointArchive LogMedia RecoveryInstance Recovery 等关键字。
    • 关联 Trace:告警中通常包含类似 “Errors in file /u01/…/trace/PROD1_lmd0_25432.trc” 的提示,直接打开对应 trace 文件深入分析进程栈与等待事件。
    • 会话线索:部分告警会给出 SID/SERIAL#/CLIENT IP,可联动 v$session 定位来源。
  • 常用 Linux 检索命令(在相应日志目录执行):
    • 实时查看告警尾部:tail -f alert_.log
    • 按错误码统计:grep -i “ORA-” alert_.log | awk ‘{print $0}’ | sort | uniq -c | sort -nr
    • 提取某时间段的错误:sed -n ‘/2025-12-20 10:00:00/,/2025-12-20 11:00:00/p’ alert_.log | grep -i “ORA-”
    • 跟踪文件快速定位异常函数/等待:grep -n -i “ksedmp|kgeriv|wait” *.trc
  • 实用 SQL 辅助定位:
    • 查看最近 1 小时告警(ADR 视图):
      • SELECT originating_timestamp, message_text FROM v$diag_alert_ext WHERE originating_timestamp > SYSTIMESTAMP - INTERVAL ‘1’ HOUR ORDER BY originating_timestamp;
    • 根据告警中的 SID 查询会话与来源:
      • SELECT s.sid, s.serial#, s.username, s.machine, s.program, s.logon_time FROM v$session s WHERE s.sid = :sid;
    • 检查检查点、归档与恢复相关活动是否频繁或异常(在告警中看到相关关键字时进一步核验)。

三 重做日志与归档日志的内容分析 LogMiner

  • 适用场景:追溯历史 DML/DDL 变更、定位误删/误改的数据与时间点;基于 Redo/归档日志 的内容解析。
  • 前置条件与准备:
    • 建议开启 归档模式:archive log list(若为 NOARCHIVELOG,仅能分析在线日志,且窗口受限)。
    • 建议开启 最小补全日志(便于解析到列级信息):
      • SELECT supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_ui FROM v$database;
      • 如未开启:ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;(可按需细化到 PK/UI/FK/ALL)。
  • 标准步骤(基于目录法的经典流程):
    1. 指定数据字典目录(需库重启或按所用方法调整):
      • show parameter utl_file_dir
      • alter system set utl_file_dir=‘/u01/logmnr’ scope=spfile;(重启生效)
    2. 生成数据字典文件:
      • EXEC DBMS_LOGMNR_D.BUILD(dictionary_filename=>‘logmnr_dict.dat’, dictionary_location=>‘/u01/logmnr’);
    3. 添加待分析日志(在线或归档均可):
      • 查询日志组与文件:SELECT group#, sequence#, bytes, members, status FROM v$log; SELECT * FROM v$logfile;
      • 添加日志:EXEC DBMS_LOGMNR.ADD_LOGFILE(options=>DBMS_LOGMNR.NEW, logfilename=>‘/u01/arch/…arc’);
    4. 启动 LogMiner(按时间或 SCN 窗口):
      • EXEC DBMS_LOGMNR.START_LOGMNR(dictfilename=>‘/u01/logmnr/logmnr_dict.dat’, starttime=>TO_DATE(‘2025-12-20 10:00:00’,‘yyyy-mm-dd hh24:mi:ss’), endtime=>TO_DATE(‘2025-12-20 11:00:00’,‘yyyy-mm-dd hh24:mi:ss’));
    5. 查询解析结果:
      • SELECT scn, timestamp, operation, seg_owner, seg_name, username, os_username, machine_name, session#, serial#, sql_redo, sql_undo FROM v$logmnr_contents WHERE seg_owner=‘YOUR_SCHEMA’;
      • 如需撤销某条 DML,可在测试环境基于 sql_undo 构造回滚语句(务必谨慎评估)。
    6. 结束会话:EXEC DBMS_LOGMNR.END_LOGMNR;
  • 常见排错与提示:
    • 使用目录法时,确保 utl_file_dir 目录存在且 oracle 用户可写;否则会报 UTL_FILE 相关错误。
    • 若无法使用目录法,可考虑 Online Catalog(不依赖数据字典文件),但对象名解析可能受限。

四 性能与问题的进一步诊断

  • 性能与负载:
    • 使用 AWR/ASH 报告定位高负载 SQL、等待事件与瓶颈(如:@?/rdbms/admin/awrrpt.sql;@?/rdbms/admin/ashrpt.sql)。
    • 结合 OEM Cloud ControlADRCI 做统一可视化与告警配置。
  • 监听与连接问题:
    • 监听状态:lsnrctl status;实时日志:tail -f $ORACLE_HOME/diag/tnslsnr//trace/listener.log
    • 常见异常:TNS 超时、服务未注册、客户端 IP/程序名异常等,可联动 v$session 与客户端信息核对。

0