oracle 11.2.0.4 ADG环境 主库os空间紧张,发现归档日志占用很大的一个比例!但是我们的备份脚本中每天都执行 CROSSCHECK ARCHIVELOG ALL; DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-31'; 也就是保留了31天的,那么31天的怎么会这么大呢? SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination /data/oradata/ctidb/arch/ Oldest online log sequence 1319 Next log sequence to archive 1321 Current log sequence 1321 SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options [oracle@BJ-CTI-17 ctidb]$ cd /data/oradata/ctidb/arch/ [oracle@BJ-CTI-17 arch]$ ll -rt -rw-r----- 1 oracle oinstall 369649664 Nov 8 2017 1_303_950667461.dbf -rw-r----- 1 oracle oinstall 56832 Nov 8 2017 1_304_950667461.dbf -rw-r----- 1 oracle oinstall 1024 Nov 8 2017 1_305_950667461.dbf -rw-r----- 1 oracle oinstall 377382400 Nov 9 2017 1_306_950667461.dbf -rw-r----- 1 oracle oinstall 55808 Nov 9 2017 1_307_950667461.dbf -rw-r----- 1 oracle oinstall 1024 Nov 9 2017 1_308_950667461.dbf -rw-r----- 1 oracle oinstall 305280000 Aug 10 2017 1_30_950667461.dbf -rw-r----- 1 oracle oinstall 373349376 Nov 10 2017 1_309_950667461.dbf -rw-r----- 1 oracle oinstall 141824 Nov 10 2017 1_310_950667461.dbf -rw-r----- 1 oracle oinstall 1024 Nov 10 2017 1_311_950667461.dbf 发现居然还有一年之前的归档日志文件,那就奇怪了? 1)查看控制文件中记录的归档的文件信息 SQL> select name ,SEQUENCE# from v$archeved_log; name SEQUENCE# --------------------------------------------------------------------------------------- accdbdg 1268 1268 accdbdg 1269 /caadb/oradata/arch/accdb/1_1269_943625125.dbf 1269 accdbdg 1270 /caadb/oradata/arch/accdb/1_1270_943625125.dbf 1270 accdbdg 1271 2)rman中查看31天前的归档,显示为空。说明控制文件没有记录相关的信息 RMAN> list archivelog all completed before 'sysdate-31'; 3)rman中查看30天前的归档,就有了!说明记录了倒数31天的信息 RMAN> list archivelog all completed before 'sysdate-30'; List of Archived Log Copies for database with db_unique_name ACCDB ===================================================================== Key Thrd Seq S Low Time ------- ---- ------- - --------- 2536 1 1269 A 05-JUL-18 Name: /caadb/oradata/arch/accdb/1_1269_943625125.dbf 2538 1 1270 A 06-JUL-18 Name: /caadb/oradata/arch/accdb/1_1270_943625125.dbf 2540 1 1271 A 06-JUL-18 Name: /caadb/oradata/arch/accdb/1_1271_943625125.dbf 再次查看归档目录中的归档文件,发现确实是保留了最近31天的归档,原来是在归档 SEQUENCE#为 1268开始有了adg,这之前包括1268的归档主库的控制文件都不记录了!因此执行下列命令是没办法删除; CROSSCHECK ARCHIVELOG ALL; DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-31'; 解决办法是通过find命令从os层面删除归档! [oracle@BJ-CTI-17 arch]$ find /data/oradata/ctidb/arch -name "*.dbf" -mtime +30 -exec rm -f {} \; 一:关于adg的主库归档删除策略 : CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default 该策略对应三个值: 1)NONE :设置为该值时,则不启用归档文件的删除策略。默认情况下就是NONE。 2)APPLIED ON STANDBY : 设置为该值时,会强制检查待删除的log 是否已经在备库apply,只有apply后的log才能删除。 当通过附加的 DELETE INPUT 子句删除Standby数据库仍需要的日志时,会提示RMAN-08137错误而无法删除。 不过仍然可以手动地通过 DELETE ARCHIVELOG 方式删除。 3) SHIPPED TO ALL STANDBY: RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY; using target database control file instead of recovery catalog new RMAN configuration parameters: CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY; new RMAN configuration parameters are successfully stored 注意: 如果设置 APPLIED ON STANDBY,当归档已经正常传给了standby,那么是可以手工地通过 DELETE ARCHIVELOG 方式删除,但是由于网络问题导致没有传给standby,这样你DELETE ARCHIVELOG 就无法删除了! 二:删除归档的方法: 1.删除os目录上不存在的归档,也就是删除控制文件中记录的信息 RMAN> crosscheck archivelog all; RMAN> delete expired archivelog all; 2.删除超过恢复策略的归档 RMAN>delete noprompt obsolete; #不仅仅删除过期的备份,相关的归档也会删除! RMAN脚本中使用 “delete noprompt obsolete;” 删除超出保存策略的备份。 以前我的备份脚本中处理归档日志时都是“plus archivelog delete all input”,备份完archivelog后马上删除,总以为“delete noprompt obsolete;” 只删除备份集不删归档。 在做DataGuard时候,Primary需要保存最近的archivelog,以便standby出现archivelog gap时过来取。 实验中发现它也会将obsolete backupset相关的archivelog一并删掉。 所有dataguard不能用delete noprompt obsolete;这个命令删除。 那需要用什么命令删除呢? delete archivelog until time 'sysdate-7' ; 删除截止到前7天的所有archivelog 3.删除n天前的归档, delete archivelog all completed before 'sysdate-N' 注意: list archivelog until time 'sysdate-1'; 此时是按照归档日志开始时间即fisrt_time作为截止时间 list archivelog all completed before 'sysdate-1' 是按照归档日志完成时间即completion_time作为截止时间 试想如果删除归档日志,还是采用delete archivelog all completed before 'sysdate-N' 4.通过os命令删除30天前的归档 [oracle@BJ-CTI-17 arch]$ find /data/oradata/ctidb/arch -name "*.dbf" -mtime +30 -exec rm -f {} \;
oracle adg主库通过rman无法删除归档
来源:这里教程网
时间:2026-03-01 11:12:07
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- MySQL:FLTWL的堵塞和被堵塞总结
MySQL:FLTWL的堵塞和被堵塞总结
26-03-01 - 对机械硬盘和SSD固态硬盘IOPS、吞吐量的压测对比
对机械硬盘和SSD固态硬盘IOPS、吞吐量的压测对比
26-03-01 - 3ds MAX教程:装饰镜的建模流程
3ds MAX教程:装饰镜的建模流程
26-03-01 - 给从库预热innodb buffer pool
给从库预热innodb buffer pool
26-03-01 - 诡异的”慢查询“
诡异的”慢查询“
26-03-01 - MySQL位图索引解决用户画像问题(简化创建流程)
MySQL位图索引解决用户画像问题(简化创建流程)
26-03-01 - MySQL插件调用
MySQL插件调用
26-03-01 - 3ds MAX实例教程:制作汽车轮胎并给轮胎建模
3ds MAX实例教程:制作汽车轮胎并给轮胎建模
26-03-01 - Grafana+Prometheus 监控 MySql服务
Grafana+Prometheus 监控 MySql服务
26-03-01 - 3D MAX教程:树屋室内效果图制作流程解析
3D MAX教程:树屋室内效果图制作流程解析
26-03-01
