温馨提示×

Oracle在Ubuntu上的日志管理怎么做

小樊
33
2025-11-15 03:44:24
栏目: 云计算

Ubuntu 上 Oracle 日志管理实操指南

一 日志位置与快速查看

  • 警报日志与跟踪文件:位于 $ORACLE_BASE/diag/rdbms/<db_name>/<instance_name>/trace/,其中警报日志为 alert_<instance_name>.log,进程跟踪文件为 ora_*.trc。示例:/u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log
  • 实时查看:
    • 警报日志:tail -f /u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log
    • 跟踪文件:tail -f /u01/app/oracle/diag/rdbms/orcl/orcl/trace/ora_1234.trc
  • 使用 ADRCI 查看:adrci 进入后执行 show alert -tail 100 等命令。
  • 监听日志:位于 $ORACLE_HOME/network/log/(如 listener.log),可用 tail -f $ORACLE_HOME/network/log/listener.log 实时查看。
  • 补充:若为 RAC,各节点均在各自 $ORACLE_BASE/diag 下保存本节点日志。

二 数据库内日志模式与归档管理

  • 查看与切换归档模式:
    • 查看:SELECT log_mode FROM v$database;
    • 开启:ALTER DATABASE ARCHIVELOG;(需以 SYSDBA 身份执行,并在合适维护窗口进行)
  • 归档目标与状态:
    • 查询:SELECT dest_name, status, destination FROM v$archive_dest;
  • 手动归档:ALTER SYSTEM ARCHIVE LOG ALL;
  • 备份与清理归档日志(RMAN):
    • 备份:RMAN> BACKUP ARCHIVELOG ALL DELETE INPUT;
    • 按时间/备份次数清理:RMAN> DELETE NOPROMPT ARCHIVELOG ALL BACKED UP 1 TIMES TO DISK;
  • 建议:归档日志应与备份策略联动,避免空间被占满导致数据库挂起。

三 系统级日志轮转与清理

  • 使用 logrotate 管理 Oracle 文本日志(如 listener.log、trace 等):
    • 新建配置:sudo vim /etc/logrotate.d/oracle
    • 示例配置(按大小滚动,保留 7 份,压缩,使用 copytruncate 避免重启进程):
      /u01/app/oracle/diag/rdbms/*/*/trace/*.log
      /u01/app/oracle/diag/rdbms/*/*/trace/alert_*.log
      /u01/app/oracle/network/log/*.log {
          daily
          size 100M
          rotate 7
          compress
          missingok
          notifempty
          copytruncate
          create 0640 oracle oinstall
      }
      
    • 测试与强制执行:sudo logrotate -d /etc/logrotate.d/oracle(干跑),sudo logrotate -f /etc/logrotate.d/oracle(强制执行)。
  • 清理原则:
    • 文本日志交由 logrotate 管理;
    • 归档日志交由 RMAN 按备份策略删除;
    • 避免直接 rm 正在写入的 Oracle 日志文件,优先使用 copytruncate 或让 Oracle 切换到新日志。

四 集中监控与故障排查

  • 集中化与监控:
    • 使用 rsyslog/syslog-ng 将数据库服务器日志发往中央日志服务器;
    • 结合 ELK Stack(Elasticsearch、Logstash、Kibana)或 Zabbix/Nagios 做日志分析与告警。
  • 快速排查路径:
    • 先看警报日志:tail -n 200 alert_<sid>.log 定位 ORA- 错误与时间线;
    • 再看监听日志:tail -f $ORACLE_HOME/network/log/listener.log 检查连接与监听状态;
    • 检查资源:df -hfree -mtop
    • 检查实例与监听:ps -ef | grep pmonlsnrctl status;必要时用 adrci 深入分析。

五 安全与维护建议

  • 权限最小化:Oracle 日志目录与文件属主应为 oracle:oinstall,权限建议 0640,仅 DBA 与运维可访问。
  • 空间预警:对 $ORACLE_BASE/diag 与归档目录设置磁盘使用率告警(如阈值 80%),提前扩容或清理。
  • 变更窗口:切换 ARCHIVELOG、调整 logrotate 策略、重启监听/实例等,建议在维护窗口进行并提前备份。
  • 审计与合规:开启必要的审计日志,定期审计 RMAN 备份与归档删除记录,满足审计与恢复点目标(RPO/RTO)要求。

0