使用v$diag_info视图可动态获取Oracle诊断信息(包括日志路径),适用于大多数Oracle版本:
-- 以SYSDBA身份登录SQL*Plus
sqlplus / as sysdba
-- 查询诊断信息
SELECT * FROM v$diag_info;
关键字段说明:
Diag Trace:跟踪文件(Trace Files)路径,包含数据库运行时的详细诊断信息(如错误堆栈、SQL执行轨迹);Diag Alert:告警日志(Alert Log)路径,记录数据库关键事件(如启动/关闭、错误、备份状态);Default Trace File:默认跟踪文件路径,通常指向当前会话的跟踪文件。告警日志是Oracle数据库的核心日志,记录了数据库生命周期中的重要事件。路径可通过v$diag_info查询,或直接访问默认路径(如$ORACLE_BASE/diag/rdbms/<db_name>/<instance_name>/alert)。
查看方法:
# 使用less分页查看(推荐,支持上下翻页)
less $ORACLE_BASE/diag/rdbms/<db_name>/<instance_name>/alert/<instance_name>.log
# 实时查看新增日志(如监控数据库错误)
tail -f $ORACLE_BASE/diag/rdbms/<db_name>/<instance_name>/alert/<instance_name>.log
替换<db_name>(数据库名)、<instance_name>(实例名,通常与数据库名一致)为实际值。
监听器日志记录了客户端连接请求、服务注册等信息,路径为$ORACLE_HOME/network/log/listener.log($ORACLE_HOME为Oracle安装目录)。
查看方法:
# 分页查看监听器日志
less $ORACLE_HOME/network/log/listener.log
# 实时查看监听器新增日志
tail -f $ORACLE_HOME/network/log/listener.log
若需查看特定监听器的日志(如监听器名为LISTENER1),可修改路径为$ORACLE_HOME/network/log/listener1.log。
ADRCI(Automatic Diagnostic Repository Command Interface)是Oracle提供的诊断日志管理工具,可查看、打包、删除诊断日志。
基本操作:
# 切换至oracle用户
su - oracle
# 启动ADRCI
adrci
# 查看控制文件路径(诊断日志存储位置)
show control
# 设置日志保留策略(可选:短期保留168小时,长期保留240小时)
set control (SHORTP_POLICY = 168, LONGP_POLICY = 240)
# 查看最近的trace文件
show tracefile
# 打包诊断日志(生成zip文件)
pkg diagtrace
# 退出ADRCI
exit
通过ADRCI可快速定位并导出诊断日志,便于后续分析。
若Oracle服务(如监听器lsnrctl)通过Systemd管理,可使用journalctl查看系统层日志:
# 查看lsnrctl服务日志
journalctl -u lsnrctl.service -b --no-pager
# 查看Oracle数据库服务日志(若服务名为oracle)
journalctl -u oracle.service -b --no-pager
-b表示仅显示本次启动后的日志,--no-pager表示直接输出(不分页)。
审计日志记录了数据库用户的操作(如登录、表修改),路径由audit_file_dest参数指定(可通过show parameter audit_file_dest查询)。
默认路径示例:$ORACLE_BASE/admin/<db_name>/adump(<db_name>为数据库名)。
查看方法:
# 进入审计日志目录
cd $ORACLE_BASE/admin/<db_name>/adump
# 查看最新的审计日志
ls -lt | grep .aud # 按修改时间排序
less <audit_file>.aud # 查看具体日志文件
定期清理旧审计日志(如保留15天):
find . -name "*.aud" -mtime +15 -exec rm -rf {} \;
v$diag_info确认;oracle用户或dba角色);logrotate)避免日志文件过大。