Debian系统下Oracle日志管理策略
导读:Debian系统下Oracle日志管理策略 一 日志分类与定位 建议先明确需要管理的日志类型、默认路径与用途,便于制定保留周期与轮转方式。 日志类型 典型路径 主要用途 管理方式 数据库告警日志 Alert Log $OR...
Debian系统下Oracle日志管理策略
一 日志分类与定位
- 建议先明确需要管理的日志类型、默认路径与用途,便于制定保留周期与轮转方式。
| 日志类型 | 典型路径 | 主要用途 | 管理方式 |
|---|---|---|---|
| 数据库告警日志 Alert Log | $ORACLE_BASE/diag/rdbms///trace/alert_.log | 启动/关闭、检查点、错误、空间告警等 | ADRCI 与 logrotate(copytruncate) |
| 监听器日志 Listener Log | $ORACLE_HOME/network/log/listener.log | 连接请求、监听启停、TNS错误 | logrotate(copytruncate) |
| 审计日志 Audit Trail | 由参数 audit_file_dest 指定,如 /u01/app/oracle/admin//adump | 登录/权限/关键操作审计 | 定期清理(find/脚本) |
| 系统服务日志 | journalctl -u | 监听/数据库服务的 systemd 输出 | journalctl 查询与归档 |
- 快速查看与定位示例:
- 实时查看监听日志:
tail -f $ORACLE_HOME/network/log/listener.log - 查看告警日志:
tail -f $ORACLE_BASE/diag/rdbms/*/*/trace/alert_*.log - 查看审计目录:
ls $ORACLE_BASE/admin/< dbname> /adump - 查看 systemd 服务日志:
journalctl -u lsnrctl.service -b --no-pager - 使用 ADRCI 查看/调整保留策略:
adrci→show control/set control (SHORTP_POLICY=168)(小时) /set control (LONGP_POLICY=240)(小时)
- 实时查看监听日志:
二 系统级日志轮转 logrotate
- 原则:Oracle 诊断文件(ADR)由 ADRCI 管理;仅对“非 ADR、持续写入”的文本日志(如 listener.log、部分自定义脚本日志)使用 logrotate,并优先采用 copytruncate 避免进程持有文件句柄导致轮转失败。
- 示例配置(/etc/logrotate.d/oracle):
# 监听器日志 /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/oracle - 强制执行:
logrotate -f /etc/logrotate.d/oracle
- 语法检查:
- 注意:
- 对 ADR 管理的告警/跟踪日志,请使用 ADRCI 设置保留策略(SHORTP_POLICY/LONG_POLICY),避免与 logrotate 冲突。
- 使用
copytruncate时,短时有日志写入丢失的风险;对高可靠场景可改为“轮转后通知进程重开日志”的方式(需应用支持)。
三 数据库重做日志与归档日志管理
- 重做日志(Redo Logs):
- 合理规划日志组数量与大小,避免频繁检查点与日志切换等待;必要时增加日志组或成员,并将成员分布在不同磁盘以分散 I/O。
- 示例(SQL*Plus,以 oracle 用户执行):
-- 查看日志组与成员 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 Logs,归档模式):
- 启用归档后,需配置归档目标与保留策略,避免 FRA(快速恢复区)被占满导致数据库挂起。
- 示例(SQL*Plus):
-- 查看归档模式与目的地 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';
- 存储布局建议:
- 将 重做日志 与 数据文件 分离,减少 LGWR 与 DBWR 的 I/O 争用;
- 将 归档日志 与在线日志分离,减少 ARCn 与 LGWR 的争用。
四 审计与系统日志的合规清理
- 审计日志(ADUMP):
- 按天/周保留,结合文件系统与备份策略清理过期文件;示例(保留 15 天):
find /u01/app/oracle/admin/*/adump -name "*.aud" -mtime +15 -delete
- 按天/周保留,结合文件系统与备份策略清理过期文件;示例(保留 15 天):
- 系统日志(journald):
- 配置持久化存储与最大占用,避免磁盘被 systemd 日志占满:
# /etc/systemd/journald.conf [Journal] Storage=persistent SystemMaxUse=1G MaxRetentionSec=7day - 应用更改:
systemctl restart systemd-journald
- 配置持久化存储与最大占用,避免磁盘被 systemd 日志占满:
- 清理原则:先备份、后清理;在业务低峰期执行;清理后校验空间与数据库/监听状态。
五 监控与告警
- 实时查看与检索:
- 监听:
tail -f $ORACLE_HOME/network/log/listener.log - 告警:
tail -f $ORACLE_BASE/diag/rdbms/*/*/trace/alert_*.log - systemd:
journalctl -u lsnrctl.service -b -f
- 监听:
- 容量与增长监控:
- 定期检查 FRA 使用率与归档目录增长;
- 设置告警阈值(如 FRA 使用率 > 80% 触发告警/扩容/清理)。
- 性能与问题定位:
- 结合 V$LOG/V$LOGFILE 检查日志切换频率与瓶颈;
- 使用 ADRCI 快速打包与检索诊断信息,缩短排障时间。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian系统下Oracle日志管理策略
本文地址: https://pptw.com/jishu/771359.html
