Debian系统下Oracle日志管理策略
一 日志分类与定位
| 日志类型 | 典型路径 | 主要用途 | 管理方式 |
|---|---|---|---|
| 数据库告警日志 Alert Log | $ORACLE_BASE/diag/rdbms/ |
启动/关闭、检查点、错误、空间告警等 | ADRCI 与 logrotate(copytruncate) |
| 监听器日志 Listener Log | $ORACLE_HOME/network/log/listener.log | 连接请求、监听启停、TNS错误 | logrotate(copytruncate) |
| 审计日志 Audit Trail | 由参数 audit_file_dest 指定,如 /u01/app/oracle/admin/ |
登录/权限/关键操作审计 | 定期清理(find/脚本) |
| 系统服务日志 | journalctl -u |
监听/数据库服务的 systemd 输出 | journalctl 查询与归档 |
tail -f $ORACLE_HOME/network/log/listener.logtail -f $ORACLE_BASE/diag/rdbms/*/*/trace/alert_*.logls $ORACLE_BASE/admin/<dbname>/adumpjournalctl -u lsnrctl.service -b --no-pageradrci → show control / set control (SHORTP_POLICY=168)(小时) / set control (LONGP_POLICY=240)(小时)二 系统级日志轮转 logrotate
# 监听器日志
/u01/app/oracle/product/*/network/log/listener.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
copytruncate
create 640 oracle oinstall
}
# 审计文件目录(按文件清理,不轮转)
/u01/app/oracle/admin/*/adump/*.aud {
daily
rotate 0
missingok
notifempty
maxage 30
nodateext
postrotate
# 可选:清理空目录
find /u01/app/oracle/admin/*/adump -type d -empty -delete 2>/dev/null || true
endscript
}
logrotate -d /etc/logrotate.d/oraclelogrotate -f /etc/logrotate.d/oraclecopytruncate 时,短时有日志写入丢失的风险;对高可靠场景可改为“轮转后通知进程重开日志”的方式(需应用支持)。三 数据库重做日志与归档日志管理
-- 查看日志组与成员
SELECT group#, bytes/1024/1024 "MB", members, status FROM v$log;
SELECT group#, member FROM v$logfile;
-- 新增日志组(示例:10MB)
ALTER DATABASE ADD LOGFILE '/u01/app/oracle/oradata/ORCL/redo04.log' SIZE 10M;
-- 查看归档模式与目的地
ARCHIVE LOG LIST;
SHOW PARAMETER log_archive_dest_1;
SHOW PARAMETER db_recovery_file_dest_size;
-- 设置 FRA 总大小(示例:10GB)
ALTER SYSTEM SET db_recovery_file_dest_size=10G SCOPE=BOTH;
-- RMAN 按时间清理过期归档(示例:删除 1 天前)
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-1';
四 审计与系统日志的合规清理
find /u01/app/oracle/admin/*/adump -name "*.aud" -mtime +15 -delete
# /etc/systemd/journald.conf
[Journal]
Storage=persistent
SystemMaxUse=1G
MaxRetentionSec=7day
systemctl restart systemd-journald五 监控与告警
tail -f $ORACLE_HOME/network/log/listener.logtail -f $ORACLE_BASE/diag/rdbms/*/*/trace/alert_*.logjournalctl -u lsnrctl.service -b -f