Oracle 归档日志删除策略配置详解与 RMAN 报错处理
常见 RMAN 报错
RMAN-08137: WARNING: archived log not deleted, needed for standby or upstream capture process
RMAN-08137: WARNING: archive log not deleted as it is still needed
# 在新版本中,错误可能为:
RMAN-08120: WARNING: archived log not deleted, not yet applied by standby
RMAN-08591: WARNING: invalid archivelog deletion policy
RMAN-08591 处理
configure ARCHIVELOG DELETION POLICY clear;
常见误区
以前一直以为归档删除策略就只是限制归档日志被误删除。其实即便是设置 TO NONE,如果归档日志没有被备份过且归档日志均已传输至所指定的所需远程目标 LOG_ARCHIVE_DEST_n 的话,也是没有办法被删除的。
另外归档删除策略对于 BACKUP ... DELETE INPUT、DELETE ARCHIVELOG 或 DELETE OBSOLETE 命令均生效。在 10G 中,如 DELETE ARCHIVELOG 或 DELETE INPUT 不遵守这个配置(参考文档 ID 1577382.1)。
另外,对于在 FRA 里的归档日志,Oracle 会根据策略自动删除。
归档删除策略的持久配置说明
以下基于 11gR2 版本整理:
| 语法元素 | 描述 |
|---|---|
| ARCHIVELOG DELETION POLICY | 确定何时可以删除已归档的重做日志文件。 归档的日志删除策略适用于所有日志归档目标,包括快速恢复区域。该策略不适用于备份集中的归档重做日志文件。 数据库仅自动删除快速恢复区域中的已归档重做日志文件。您可以执行 BACKUP ... DELETE INPUT、DELETE ARCHIVELOG 或 DELETE OBSOLETE 命令从日志归档目标,包括恢复区手动删除日志。如果 FORCE 未在删除命令上指定,则这些删除命令将遵循已归档的日志删除策略。如果 FORCE 指定,则删除命令将忽略存档的日志删除策略。 在恢复区域中,数据库会尽可能长地保留符合删除条件的日志。需要磁盘空间时,数据库将首先删除最早的日志。当恢复区域处于磁盘压力下时,数据库可能会删除 Oracle Streams 所需的存档重做日志文件。 注意:删除策略不适用于外部归档的重做日志文件,这些文件是逻辑备用数据库为 LogMiner 会话接收的日志。其他地方的说明:(11gR2) |
| TO APPLIED ON [ALL] STANDBY | 指定如果同时满足以下两个条件,则可以删除已归档的重做日志文件: 1. 已将已归档的重做日志文件应用于所需的备用数据库。 2. BACKED UP ... TIMES TO DEVICE TYPE 删除策略不需要日志。如果 BACKED UP 未设置该策略,则始终满足此条件。 考虑哪些远程目标取决于以下条件: 1. 如果未指定 ALL,则在将归档的重做日志文件应用于所有 mandatory 远程目标之后,它们才有资格删除。 2. 如果指定 ALL,则已归档的重做日志文件在所有远程目标(无论是否 mandatory)上应用或消耗后才是具备条件的。 例如,备用数据库 sby1 可能是唯一接收日志的远程目标,但是其他远程目标可以通过引用上的相同位置来应用日志 sby1。使用 ALL,sby1 在不需要时立即将主数据库上的日志标记为已使用,但是直到该日志被引用相同位置的所有其他从属远程目标应用或使用后,才允许删除该日志。注意:TO APPLIED 与 NONE 或 TO SHIPPED 子句组合指定子句是无效的。另请参见相关文档以获取详细信息。 |
| TO NONE | 禁用存档的日志删除策略。这是默认设置。 归档的重做日志文件可以位于快速恢复区域的内部或外部。可以通过手动命令删除任何位置的日志。数据库只能自动删除快速恢复区域中的日志。 如果将删除策略设置为 NONE,则 RMAN 如果满足以下两个条件,则认为已归档的重做日志文件符合删除条件: 1. 归档的重做日志文件(无论是在 Fast Recovery Area 中还是在其外部)均已传输至所指定的所需远程目标 LOG_ARCHIVE_DEST_n。2. Fast Recovery Area 中的存档重做日志文件已至少备份一次到磁盘或 SBT,或者根据备份保留策略,这些日志已过时。仅当 guaranteed restore point 不需要日志并且 Flashback Database 不需要日志时,备份保留策略才认为日志已过时。如果日志创建时间晚于 SYSDATE-'DB_FLASHBACK_RETENTION_TARGET',则 Flashback Database 需要已归档的重做日志文件。例如,假设已将已归档的重做日志文件传输到所需的远程目标。根据恢复窗口保留策略,日志已过时,但尚未备份。在这种情况下,日志可以删除。或者,假设日志已过时并且已备份到 SBT,但尚未传输到所需的远程目标。在这种情况下,日志不符合删除条件。如果删除策略设置为 NONE,并且对快速恢复区域之外的归档重做日志文件执行删除命令,则 RMAN 仅遵守在删除命令上指定的条件。 |

