日志类型及存储路径
-
预警日志(Alert Log)
- 作用:记录数据库启动/关闭、错误、警告及关键事件(如表空间不足)。
- 默认路径:
$ORACLE_BASE/diag/rdbms/<数据库名>/<实例名>/trace/alert_<实例名>.log
- 通过SQL查询路径:
SELECT value FROM v$diag_info WHERE name = 'Diag Trace';
- 通过SQL查询路径:
-
跟踪日志(Trace Files)
- 作用:记录SQL执行详情、错误堆栈(如ORA-00600内部错误)。
- 路径:与预警日志同目录,文件名格式为
<实例名>_ora_<进程ID>.trc
。
-
重做日志(Redo Log)
- 作用:记录数据变更(DML/DDL),用于恢复。
- 查看组信息:
SELECT group#, sequence#, bytes, members, status FROM v$log;
-
归档日志(Archive Log)
- 路径:由参数
log_archive_dest_1
指定:SHOW PARAMETER log_archive_dest_1;
- 路径:由参数
查看日志的4种方法
方法1:直接查看预警日志(Linux/Unix)
# 搜索特定错误(如ORA-600) grep "ORA-00600" alert_orcl.log
*方法2:使用SQLPlus或SQLcl命令**
- 查看预警日志内容:
EXEC DBMS_MONITOR.read_trace(file_name => 'alert_orcl.log');
- 分析重做日志:
SELECT * FROM v$log_history; -- 查看历史日志序列
方法3:ADRCI工具(Oracle官方日志工具)
adrci # 进入命令行工具 > SET HOME diag/rdbms/orcl/orcl # 指定数据库目录 > SHOW ALERT -tail 50 # 查看最后50行预警日志 > SHOW TRACEFILE # 列出所有跟踪日志 > PURGE -age 60 -type ALERT # 清理60天前的预警日志
方法4:OEM图形化界面(Oracle Enterprise Manager)
- 登录OEM控制台(
https://<主机>:5500/em
)。 - 进入 “诊断” → “预警日志内容” 直接浏览或搜索日志。
关键注意事项
- 权限要求:
- 操作系统级别:需
oracle
用户或dba
组权限访问日志文件。 - 数据库级别:
SELECT_CATALOG_ROLE
或ALTER SESSION
权限(视图查询)。
- 操作系统级别:需
- 日志切割:
- 定期清理旧日志(ADRCI的
PURGE
命令或手动删除)。
- 定期清理旧日志(ADRCI的
- 敏感信息:
日志可能含敏感数据(如SQL语句),需严格控制访问权限。
- 备份建议:
关键日志(如归档日志)必须备份到独立存储。
常见问题排查示例
- 场景1:数据库无法启动
检查预警日志末尾:tail -100 alert_orcl.log | grep "Starting ORACLE instance"
- 场景2:SQL执行缓慢
在跟踪日志中定位WAIT
事件:SELECT * FROM v$diag_trace_file_contents WHERE trace_filename = '<tracefile.trc>';
- 简单排查 → 用
tail
或grep
直接查看文件。 - 深度分析 → 使用ADRCI或
v$
动态视图。 - 生产环境 → 优先通过OEM集中管理日志。
引用说明:
- Oracle官方文档 Database Administrator’s Guide(日志管理章节)
- Oracle Backup and Recovery User’s Guide(归档日志部分)
- MOS文档(My Oracle Support)Note 359172.1(日志分析最佳实践)
通过规范操作日志,可快速定位80%的数据库问题,若遇复杂错误(如内存损坏),建议结合AWR报告或联系Oracle技术支持。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7146.html