归档日志路径必须使用集群共享存储(如ASM、NFS等),RMAN需配置维护通道并统一归档删除策略,各节点LOG_ARCHIVE_DEST_STATE_n必须为ENABLE,否则RMAN将静默遗漏归档导致恢复失败。
归档日志路径必须指向集群共享存储,不能用本地文件系统
oracle rac 要求所有实例都能读写同一份归档日志,否则 rman 备份会漏掉其他节点产生的 archivelog,恢复时直接失败。常见错误是每个节点配了自己本地的 log_archive_dest_1,比如 /u01/archivelog,结果只有本节点的归档可见。
- 必须使用集群可访问的共享路径:ASM 磁盘组(推荐)、NFS、OCFS2、或符合 POSIX 的集群文件系统
- ASM 示例:
LOG_ARCHIVE_DEST_1='LOCATION=+FRA',其中+FRA是所有节点都 mount 的磁盘组 - NFS 示例:
LOG_ARCHIVE_DEST_1='LOCATION=/shared_nfs/arch',需确认所有节点mount状态一致且权限正确(oracle:oinstall可读写) - 切忌混用路径类型——比如节点1用 ASM、节点2用 NFS,RMAN 无法统一识别
RMAN CONFIGURE ARCHIVELOG DELETION POLICY 要配合实际备份策略
默认情况下 RMAN 不会自动删除已备份的归档,但若配置了 ARCHIVELOG DELETION POLICY 却没真正完成备份,就可能误删。尤其在 RAC 中,多个实例并发写归档,策略生效范围容易被误解。
- 最安全的起点:
CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DEVICE TYPE DISK; - 如果用了带 catalog 的异地备份,可设为
TO BACKED UP 1 TIMES TO DEVICE TYPE SBT,但必须确保SBT通道真实可用且 catalog 已同步 - 禁用自动删除?可以:
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE;,但得靠人工或脚本定期清理,否则+FRA很快占满 - 注意:该策略只影响
DELETE ARCHIVELOG或BACKUP ... DELETE INPUT行为,不影响数据库自身归档切换
RMAN 备份归档日志时必须用 ALLOCATE CHANNEL FOR MAINTENANCE
RAC 环境下,RMAN 默认的通道分配机制可能只连到当前连接的实例,导致只备份了部分节点产生的归档。这不是 bug,而是设计行为——RMAN 的 BACKUP ARCHIVELOG 命令本身不跨实例扫描,除非显式指定维护通道。
- 正确做法:进入 RMAN 后先执行
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;,再运行BACKUP ARCHIVELOG ALL; - 如果用了 catalog,建议加
CONNECT CATALOG并确保 catalog 中已注册所有实例(LIST DB_UNIQUE_NAME OF DATABASE应显示全部) - 别依赖
BACKUP ARCHIVELOG FROM TIME 'SYSDATE-1'这类时间条件——RAC 各节点时间若有微小偏差(哪怕 2 秒),就会漏掉某些归档 - 验证是否全量备份:
LIST ARCHIVELOG ALL;对比LIST BACKUP OF ARCHIVELOG ALL;,看THREAD#和SEQUENCE#是否覆盖全部
归档目标状态(LOG_ARCHIVE_DEST_STATE_n)在 RAC 中必须显式启用所有节点
即使路径配置正确,某个节点的 LOG_ARCHIVE_DEST_STATE_1 被设为 DEFER 或 ALTERNATE,该节点就不会生成归档到共享位置,RMAN 自然也备份不到。这种状态常因滚动升级、故障切换后未重置而残留。
- 检查方式:对每个实例分别执行
SELECT DEST_NAME, STATUS, STATE FROM V$ARCHIVE_DEST WHERE DEST_ID = 1; - 修复命令(在对应实例上):
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1=ENABLE; - 不要依赖
SCOPE=BOTH全局下发——RAC 中每个实例要单独确认 - 特别注意 Data Guard 环境:主库启用了
LOG_ARCHIVE_DEST_2到备库,但若LOG_ARCHIVE_DEST_1(本地共享归档)状态异常,仍会导致 RMAN 备份断裂
归档路径、RMAN 策略、通道分配、目标状态——这四点任意一个没对齐,RMAN 就会静默丢失归档。最麻烦的是问题不报错,只在恢复时才暴露,所以每次配置变更后,务必在所有节点上跑一次 ARCHIVE LOG LIST 和 LIST BACKUP OF ARCHIVELOG SUMMARY 对照看。










