温馨提示×

Linux Oracle日志分析有哪些要点

小樊
47
2025-11-04 18:06:01
栏目: 云计算

1. 定位Oracle日志路径
在Linux环境下,Oracle日志的路径需通过数据库视图查询获取,避免硬编码。常用路径查询方法:

  • 告警日志路径:SELECT value FROM v$parameter WHERE name = 'background_dump_dest';(10g及以上版本)或SELECT * FROM v$diag_info WHERE name = 'Background Dump Dest';(11g及以上版本)。
  • Trace文件路径:SELECT value FROM v$parameter WHERE name = 'user_dump_dest';(专用服务器连接)或SELECT * FROM v$diag_info WHERE name = 'Default Trace File';(11g及以上版本)。
  • 集群环境路径:Grid Infrastructure日志位于$ORACLE_CRS_HOME/log/<hostname>/(如alert_<hostname>.log),ASM日志位于$ORACLE_BASE/diag/asm/+asm/+ASM1/trace/

2. 告警日志(alert_.log)分析要点
告警日志是Oracle数据库的核心日志,记录了实例生命周期内的关键事件,需重点关注:

  • 错误信息:ORA-错误(如ORA-00600内部错误、ORA-01555快照太旧)、TNS错误(如TNS-12541无监听器)、ORA-60死锁等,需记录错误时间点及关联的Trace文件名。
  • 管理操作:数据库启动/关闭时间、CREATE/ALTER/DROP等DDL操作、表空间操作(如扩展、删除)、归档日志切换等。
  • 结构变更:数据文件、联机重做日志文件的创建/删除/重命名、表空间置入/取出热备模式等。
  • 共享服务器/调度进程:调度任务失败、共享服务器进程异常等。
  • 物化视图/动态参数:物化视图自动刷新错误、动态参数修改记录(如ALTER SYSTEM SET语句)。

3. Trace文件分析要点
Trace文件用于深度诊断特定会话或操作的详细信息,生成与分析步骤如下:

  • 生成Trace文件:通过ALTER SESSION SET SQL_TRACE=TRUE;(会话级)或EXEC DBMS_MONITOR.SESSION_TRACE_ENABLE(sid, serial#);(特定会话)开启跟踪;也可使用ALTER SESSION SET EVENTS '10046 trace name context forever, level 12';(10046事件,更详细的执行计划)。
  • 查找Trace文件:专用服务器连接的Trace文件位于USER_DUMP_DEST目录,文件名为<SID>_<PID>.trc;共享服务器连接则位于BACKGROUND_DUMP_DEST目录。
  • 格式化分析:使用tkprof工具将Trace文件转换为可读格式,常用命令:tkprof <tracefile> <outputfile> sys=no sort=prsela,exeela,fchelasys=no排除SYS用户SQL,sort按解析时间、执行时间、fetch时间排序)。
  • 关键信息解读
    • SQL文本:执行的SQL语句内容。
    • 执行统计call count(调用次数)、cpu(CPU时间)、elapsed(总耗时)、disk(物理读)、query(逻辑读)、rows(处理行数),重点关注elapsed远大于cpu的SQL(存在等待)。
    • 执行计划Row Source Operation(行源操作,如INDEX UNIQUE SCANTABLE ACCESS FULL)和Execution Plan(优化器生成的执行计划),判断是否使用了合适的索引。
    • 等待事件waits=yes时显示的等待事件(如db file sequential readenq: TX - row lock contention),定位性能瓶颈。

4. 监听日志(listener.log)分析要点
监听日志记录了客户端的连接请求与监听器状态,适用于连接类问题排查,路径为$ORACLE_BASE/diag/tnslsnr/<hostname>/listener/trace/listener.log。需关注:

  • 连接错误:TNS-12541(无监听器,需检查监听器是否启动)、TNS-01153(名称解析失败,需检查listener.ora中的SID_LIST配置)、TNS-12535(超时,需检查网络延迟或防火墙)。
  • 状态信息:监听器启动/停止时间、注册的数据库服务(Service字段)、客户端连接IP与端口。

5. 集群环境日志分析要点(RAC/ASM)
对于RAC或ASM环境,需额外关注集群与存储日志:

  • 集群Alert日志:路径为$ORACLE_CRS_HOME/log/<hostname>/alert<hostname>.log,记录集群组件状态(如CRS服务)、资源故障(如ASM磁盘组不可用)、节点心跳问题(CRS-4639节点间心跳失败)。
  • CRS/CSS日志$ORACLE_CRS_HOME/log/<hostname>/crsd/crsd.log(CRS守护进程)、$ORACLE_CRS_HOME/log/<hostname>/ocssd.log(CSS守护进程),关注资源启动失败(CRS-1006)、心跳超时等问题。
  • ASM日志:路径为$ORACLE_BASE/diag/asm/+asm/+ASM1/trace/alert_+ASM1.log,记录ASM磁盘组操作(如挂载/卸载)、磁盘故障(ORA-15063磁盘不可访问)、空间不足等问题。

6. 日志管理与工具使用

  • 日志归档:定期归档告警日志(如按天压缩备份),避免日志文件过大导致IO开销过高。可通过cp alert_<SID>.log alert_<SID>_<date>.log.bak手动备份,或设置log_archive_dest_n参数自动归档。
  • 日志查询工具:使用adrci(Oracle诊断工具)查看和管理日志,如adrci> show alert查看告警日志,adrci> show incident查看故障事件;或通过外部表将告警日志导入数据库,使用SQL查询(如SELECT * FROM alert_logs WHERE text LIKE '%ORA-%';)。
  • 性能分析工具:使用AWR报告(@?/rdbms/admin/awrrpt.sql)分析数据库整体性能,结合Trace文件定位具体SQL瓶颈;使用LogMinerDBMS_LOGMNR包)解读重做日志,追踪事务活动。

0