阅读量:7
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/(如/ alert_),ASM日志位于.log $ORACLE_BASE/diag/asm/+asm/+ASM1/trace/。
2. 告警日志(alert_
告警日志是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目录,文件名为;共享服务器连接则位于_ .trc BACKGROUND_DUMP_DEST目录。 - 格式化分析:使用
tkprof工具将Trace文件转换为可读格式,常用命令:tkprof(sys=no sort=prsela,exeela,fchela sys=no排除SYS用户SQL,sort按解析时间、执行时间、fetch时间排序)。 - 关键信息解读:
- SQL文本:执行的SQL语句内容。
- 执行统计:
call count(调用次数)、cpu(CPU时间)、elapsed(总耗时)、disk(物理读)、query(逻辑读)、rows(处理行数),重点关注elapsed远大于cpu的SQL(存在等待)。 - 执行计划:
Row Source Operation(行源操作,如INDEX UNIQUE SCAN、TABLE ACCESS FULL)和Execution Plan(优化器生成的执行计划),判断是否使用了合适的索引。 - 等待事件:
waits=yes时显示的等待事件(如db file sequential read、enq: TX - row lock contention),定位性能瓶颈。
4. 监听日志(listener.log)分析要点
监听日志记录了客户端的连接请求与监听器状态,适用于连接类问题排查,路径为$ORACLE_BASE/diag/tnslsnr/。需关注:
- 连接错误:TNS-12541(无监听器,需检查监听器是否启动)、TNS-01153(名称解析失败,需检查
listener.ora中的SID_LIST配置)、TNS-12535(超时,需检查网络延迟或防火墙)。 - 状态信息:监听器启动/停止时间、注册的数据库服务(
Service字段)、客户端连接IP与端口。
5. 集群环境日志分析要点(RAC/ASM)
对于RAC或ASM环境,需额外关注集群与存储日志:
- 集群Alert日志:路径为
$ORACLE_CRS_HOME/log/,记录集群组件状态(如CRS服务)、资源故障(如ASM磁盘组不可用)、节点心跳问题(/alert .log CRS-4639节点间心跳失败)。 - CRS/CSS日志:
$ORACLE_CRS_HOME/log/(CRS守护进程)、/crsd/crsd.log $ORACLE_CRS_HOME/log/(CSS守护进程),关注资源启动失败(/ocssd.log CRS-1006)、心跳超时等问题。 - ASM日志:路径为
$ORACLE_BASE/diag/asm/+asm/+ASM1/trace/alert_+ASM1.log,记录ASM磁盘组操作(如挂载/卸载)、磁盘故障(ORA-15063磁盘不可访问)、空间不足等问题。
6. 日志管理与工具使用
- 日志归档:定期归档告警日志(如按天压缩备份),避免日志文件过大导致IO开销过高。可通过
cp alert_手动备份,或设置.log alert_ _ .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瓶颈;使用LogMiner(DBMS_LOGMNR包)解读重做日志,追踪事务活动。