Oracle 归档日志清理流程

为什么要定期清理归档日志

Oracle 数据库开启归档模式后,所有事务重做日志都会被保留为归档日志(Archived Log)。随着时间推移,归档日志会迅速挤占 FRA(Fast Recovery Area)或文件系统空间,导致数据库挂起。因此需要周期性、可回退地清理。


清理前必须做的两件事

检查日志同步与备份

  • 通过 Data Guard、OGG、DSG 等同步监控平台,确认所有下游库均已应用完毕。
  • 即将删除的归档日志再做一次备份,防止误删后无法找回。

风险评估

  • 禁止直接在操作系统层 rm -rf 删除归档文件,极易造成 RMAN 元数据与物理文件不一致。
  • 统一使用 RMAN 删除命令,配合 CROSSCHECK/DELETE ... BACKED UP n TIMES,确保只有已备份、已应用的日志才会被清理。

实施步骤

检查归档日志当前占用

-- 查看归档日志列表
SQL> select name, first_time, backup_count
    from v$archived_log
    order by first_time;

-- 检查 FRA 空间
SQL> select group_number, name, total_mb, free_mb
    from v$asm_diskgroup
    where name = 'FRA';

示例输出:

NAME                                                             FIRST_TIME          BACKUP_COUNT
---------------------------------------------------------------- ------------------- ------------
+FRA/orclasm/archivelog/2016_04_14/thread_1_seq_7.270.909138063 2016-04-14 10:04:48           0
+FRA/orclasm/archivelog/2016_04_14/thread_1_seq_8.271.909138063 2016-04-14 10:16:48           0
+FRA/orclasm/archivelog/2016_04_14/thread_1_seq_9.272.909138081 2016-04-14 10:18:10           0

磁盘组 FRA 剩余 1395 MB,已逼近告警线(默认 80%)。

登录 RMAN

$ rman target sys/***@PROD1521 catalog cataadmin/catapswd@PROD21521

校验归档日志有效性

RMAN> crosscheck archivelog all;
RMAN> list expired archivelog all;
  • crosscheck 会把物理丢失但记录在控制文件中的归档标记为 EXPIRED
  • 确认 EXPIRED 列表中不再有需要保留的日志。

执行删除(按序列号)

RMAN> delete noprompt archivelog until sequence 12;
  • 关键字 noprompt 在脚本中可自动确认;交互场景去掉即可二次确认。
  • 删除完成后,日志显示 Deleted 9 objects

立即验证

  1. 手工切换日志,确保归档进程正常:RMAN> sql “alter system archive log current”;
  2. 再次查看 FRA 空间:GROUP_NUMBER NAME TOTAL_MB FREE_MB
    ———— —- ———- ——–
    2           FRA     10240   2131已释放 736 MB

回退方案(删错了怎么办?)

场景回退步骤
误删尚未同步的归档1. 停止日志应用进程;2. 使用清理前的备份片还原归档:RMAN> restore archivelog sequence between n and m;
误删尚未备份的归档1. 立即拉起备份;2. 若备份也无,则考虑闪回数据库或基于时间点的恢复(前提:有全备 + 剩余归档)。
  • 查看数据库 alert 日志、RMAN 日志,确认无 ORA-00257 等报错。
  • 将清理脚本加入 crontab,按保留策略(如“归档保留 7 天且已备份 2 次”)定期执行:delete archivelog all completed before ‘sysdate-7’ backed up 2 times to device type sbt;
  • 监控 FRA 使用率,推荐阈值:>85% 告警,>95% 立即清理
  1. 不碰 OS 层文件,所有操作交由 RMAN,保证元数据一致。
  2. 先校验,再删除,后验证,三步缺一不可。
  3. 保留二次备份窗口,任何清理都可回退。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部