千家信息网

oracle中adg主库通过rman无法删除归档怎么办

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章将为大家详细讲解有关oracle中adg主库通过rman无法删除归档怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。oracle 11.2.0.4 AD
千家信息网最后更新 2026年11月01日oracle中adg主库通过rman无法删除归档怎么办

这篇文章将为大家详细讲解有关oracle中adg主库通过rman无法删除归档怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

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无法删除归档怎么办"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

文件 日志 备份 命令 策略 信息 时间 控制 篇文章 脚本 截止 怎么办 也就是 办法 方式 更多 目录 不错 实用 很大 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技有限公司图片 互联网科技集团 致骋互联网科技 极限挑战互联网科技 大白互联网科技 四川狮子座互联网科技 多迪互联网科技有限公司 盛创互联网科技有限公司 四个字互联网科技公司取名 中国最先进互联网科技公司 广州慧亚互联网科技怎么样 中国航天科技大学国际工业互联网 搜狐科技互联网 天津腾达互联网科技有限公司 科技互联网的核心竞争力 云南省自由互联网科技有限公司 广州互联网高科技取餐柜 保山互联网科技靠谱吗 杭州融税互联网科技有限公司 颐高云石互联网科技 精品咖啡豆 奇酷互联网科技公司 宜安科技 互联网金融 互联网科技博客 互联网科技产品 贵州叶脉互联网科技有限公司所属行业 科技赋能视角下互联网保险发展 徐州市互联网科技有限公司 易企秀互联网科技是做什么的 上海同邻互联网科技有限公司规模
0