Oracle Data Guard如何设置自动清理_配置归档删除策略
RMAN归档删除策略:是自动清理,还是条件删除?
RMAN归档删除策略是带保护条件的删除控制机制,仅在执行DELETE INPUT或显式DELETE ARCHIVELOG时按策略判断是否可删,不自动清理;configure archivelog deletion policy to applied on standby要求归档在备库应用后才允许删除,但需启用隐含参数并重启数据库才生效。
首先,得澄清一个常见的误解:RMAN的归档删除策略,本质上并非一个“自动清理”服务。它更像是一个带有严格保护条件的删除控制机制。简单来说,它不会主动去扫描你的归档目录、定时删除旧文件。它的作用,只在你执行BACKUP ARCHIVELOG ... DELETE INPUT或显式的DELETE ARCHIVELOG命令时,才作为“守门员”介入,根据预设的策略来判断:“这个归档文件,现在能删了吗?” 如果你追求的是真正的“自动化”,那还得依赖外部调度工具(比如cron配合脚本)来定期触发RMAN命令。策略本身,只负责把关。
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

configure archivelog deletion policy to applied on standby 是什么
这个从Oracle 10g开始引入的RMAN配置项,其实是一个安全开关。它的核心作用在于:当你在主库上执行归档删除操作时,它会强制进行一轮检查——目标归档日志是否已经在备库上完成了应用(即APPLIED = 'YES')。
请注意,它不改变归档日志的传输或应用行为本身,仅仅是对“删除”这个动作进行干预。
- 生效范围明确:仅对RMAN命令中的
DELETE INPUT选项以及显式的DELETE ARCHIVELOG命令有效。 - 系统命令无效:对于在操作系统级别执行的
rm、find -delete等操作,这个策略完全不起作用。 - 不影响备份:它只决定备份完成后,源头的归档文件要不要删,而不会影响RMAN备份任务本身的执行。
基于此,常常会看到两种“矛盾”的现象:
- 配置了该策略后,执行
BACKUP ARCHIVELOG ALL DELETE INPUT可能会报错RMAN-08137: WARNING: archived log not deleted, needed for standby or upstream capture。 - 但与此同时,执行
DELETE ARCHIVELOG UNTIL TIME 'SYSDATE-7'却可能成功(这实际上绕过了策略检查)。
为什么 configure archivelog deletion policy 常报 RMAN-08591
如果你遇到了RMAN-08591: WARNING: invalid archivelog deletion policy这个警告,问题根源通常不在于配置命令本身,而在于一个底层依赖参数没有打开。
Oracle数据库默认关闭了跨库校验归档状态的能力,必须手动启用这个“开关”:
- 关键一步:必须执行
ALTER SYSTEM SET "_log_deletion_policy" = ALL SCOPE=SPFILE SID='*';。 - 必须重启:修改完成后,数据库需要重启(
SHUTDOWN IMMEDIATE+STARTUP)才能生效,否则策略配置将一直处于静默失效状态。 - 适用范围:这个隐含参数会影响所有实例(RAC环境下需指定
SID='*'),并且仅在Data Guard环境中配置才有实际意义。
这里有几个容易踩的坑:
- 修改了参数却忘记重启数据库,导致策略看似配好,实则从未起作用。
- 在单机数据库(非DG环境)中配置此策略,不仅没有意义,还可能对后续的数据库升级造成干扰。
- 试图使用
SCOPE=BOTH进行动态修改会失败,必须通过SPFILE修改并重启。
Maximum Protection 模式下要不要配 deletion policy
答案是:不用配,也不建议配。
- 在
MAXIMUM PROTECTION(最大保护)模式下,事务的Redo数据是同步写入主库和至少一个备库的。这意味着,主库上生成归档日志时,对应的Redo数据已经在备库的Standby Redo Log中落盘了。 - 因此,主库的归档日志在生成后随时可以删除,无需等待备库的“应用”阶段(因为Redo Apply是异步过程,而强一致性在写入时已经保证了)。
- 如果强行配置
APPLIED ON STANDBY,反而可能因为备库的MRP(Managed Recovery Process)进程延迟(例如在维护窗口被暂停)而错误地阻止主库删除归档,带来不必要的麻烦。
简单对比一下适用场景:
MAXIMUM A VAILABILITY/MAXIMUM PERFORMANCE模式 → 强烈建议配置APPLIED ON STANDBY,这是防止误删的关键屏障。MAXIMUM PROTECTION模式 → 保持策略为默认的NONE,或者干脆不配置。
delete input 删除失败时怎么手动补救
当遇到RMAN-08137报错,导致备份流程卡住,而你又不能等待备库追上应用进度(例如网络中断、归档间隙积压)时,可以采取临时绕过的补救措施:
- 查询未应用的归档范围:在主库执行
SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;查看是否存在Gap。 - 确认备库应用进度:在备库执行
SELECT MAX(SEQUENCE#) FROM V$ARCHIVED_LOG WHERE APPLIED = 'YES';,了解已应用到哪个序列号。 - 主库手动删除:根据查询结果,在主库使用RMAN命令手动删除已确认在备库安全的归档,例如:
DELETE ARCHIVELOG FROM SEQUENCE 12345 UNTIL SEQUENCE 12350;。 - 操作后验证:删除后应立即检查备库状态,避免人为制造新的归档间隙。
这里有三个关键点需要牢记:
DELETE ARCHIVELOG命令本身不受deletion policy的约束,它是绕过策略进行“硬删除”的唯一通道。- 但这种手动操作每次都需要人工仔细核对,绝不能写入定时脚本长期使用,风险极高。
- 真正健壮的做法,应该是优先修复归档传输或应用链路的问题(检查
V$ARCHIVE_DEST_STATUS、V$MANAGED_STANDBY视图),让删除策略能够自然地、安全地生效。
最后,还有一个极易被忽略的角落:归档清理的压力不仅在主库,备库自身同样需要清理。主库的删除策略再严格,如果备库上的归档日志堆积不清理,磁盘空间照样会被撑爆。而备库并没有RMAN deletion policy这样的机制来保护,必须依靠定期执行DELETE ARCHIVELOG命令或操作系统级的清理脚本来维护,这一点常常在规划时被遗忘。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
mysql如何限制单条SQL执行消耗的内存_调整sort_buffer_size与join_buffer
MySQL内存调优实战:如何精准控制单条SQL的内存消耗? 说到MySQL性能调优,sort_buffer_size和join_buffer_size这两个参数总是绕不开的话题。很多工程师的第一反应是:“调大点是不是就能快些?” 事情可没这么简单。盲目调整不仅可能毫无收益,甚至还会引发内存溢出(OO
Redis发布订阅支持消息类型自定义吗_通过序列化与反序列化规范消息结构
Redis发布订阅不校验消息类型,业务需自行约定序列化协议 简单来说,Redis的发布订阅(Pub Sub)机制本身,对消息内容是完全“无感”的。它就像一个只管搬运、不管验货的传送带。这意味着,消息类型的定义、校验和解析,完全落在了业务开发者的肩上。在Spring Boot这类框架中,如果使用不当,
SQL如何计算分组内的方差与标准差_窗口聚合函数实操
SQL中VARIANCE和STDDEV默认按样本计算(除以n-1),PostgreSQL、Oracle、Snowflake均如此;MySQL的VARIANCE()等价VAR_SAMP(),STDDEV()等价STDDEV_SAMP();SQL Server需显式用STDEV()或STDEVP()。
为什么SQL触发器在执行存储过程时不触发_排查触发器嵌套触发限制
为什么SQL触发器在执行存储过程时不触发?排查触发器嵌套触发限制 触发器调用存储过程后不触发,根本不是“不触发”,而是被嵌套层数限制拦住了 很多开发者遇到触发器“失灵”时,第一反应是检查语法或权限。但真相往往更直接:你很可能撞上了SQL Server那堵硬性的32层嵌套墙。无论是DML还是DDL触发
mysql如何高效地统计不同状态的数量_使用CountIf单次扫描
MySQL不支持COUNTIF函数,需用SUM(CASE WHEN THEN 1 ELSE 0 END)实现单次扫描多状态统计,比多次COUNT(*)更高效。 MySQL 没有 COUNTIF 函数,别白找 如果你是从Excel或者其他数据库(比如SQLite、PostgreSQL)转过来的,可
- 日榜
- 周榜
- 月榜
1
2
3
4
5
6
7
8
9
10
相关攻略
2015-03-10 11:25
2015-03-10 11:05
2021-08-04 13:30
2015-03-10 11:22
2015-03-10 12:39
2022-05-16 18:57
2025-05-23 13:43
2025-05-23 14:01
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程
热门话题

