ocrconfig -showbackup 显示路径不一致属正常现象,因仅Master Node每4小时执行物理备份并轮转保留5份,其他节点仅读取共享路径;路径变化说明备份位置被修改或Master切换。
ocrconfig -showbackup 显示的备份路径不一致,说明什么
执行 ocrconfig -showbackup 时看到多个节点显示不同路径,或同一节点多次执行结果路径变化,通常不是异常,而是 ocr 自动备份机制在起作用:master node 每 4 小时触发一次物理备份,且备份文件按时间戳命名(如 backup_20260406_120000.ocr),存放在默认目录 $oracle_home/crs/cdata/<cluster_name></cluster_name> 下;但若用过 ocrconfig -backuploc 修改过位置,就只显示当前生效的路径。
常见误判点:
- 误以为所有节点都必须有相同备份路径 —— 实际只有 Master Node 执行写入,其他节点只是能读取该路径(需共享存储可达)
- 看到
backup00.ocr不断更新,就认为旧备份被覆盖 —— 不是覆盖,而是轮转:默认保留最近 3 个 + 前一天最后一个 + 前一周最后一个,共 5 份 - 执行后无输出或报错
PROT-20: 权限不足—— 未以 root 用户运行,或当前用户不在oinstall组
如何修改 OCR 自动备份频率和保留策略
Oracle 不提供直接调整自动备份「间隔时间」的参数。4 小时是硬编码周期,无法通过 ocrconfig 或任何配置文件修改。但你可以控制「备份存放位置」和「保留逻辑」:
- 用
ocrconfig -backuploc /shared/backup/ocr将备份重定向到高可用共享路径(如 ASM diskgroup mount 点、NFS、ACFS),确保所有节点可读 - 自动备份本身不清理旧文件,保留策略靠 Oracle 内部轮转逻辑实现,不可增删数量;若需更长保留期,必须配合外部脚本定期归档
backup*.ocr - 不要依赖自动备份做灾难恢复主力 —— 它只覆盖 OCR 主副本,不包含 OLR、表决盘、ASM SPFILE 等;生产环境应每日
ocrconfig -export /backup/ocr_exp_$(date +%F).log
为什么 ocrconfig -showbackup 查不到昨天的备份
可能原因有三个,按发生概率排序:
- 集群未运行满 24 小时:自动备份只在 CRS 启动后才开始计时,若刚重启过,可能尚未生成“前一天”备份
- Master Node 切换过且新 Master 未完成首次备份:切换后要等下一个 4 小时窗口才写第一份,期间
-showbackup只显示旧 Master 留下的历史文件(可能已过期) - 备份目录被手动清空或权限变更:检查
ls -l $(dirname $(ocrconfig -showbackup | awk '{print $2}'))输出,确认文件存在且属主为root:oinstall
验证方式:直接列出目录内容比依赖 -showbackup 更可靠,例如 ls -lt $ORACLE_HOME/crs/cdata/<cluster_name>/backup_*.ocr</cluster_name>。
备份路径设置后不生效的典型场景
ocrconfig -backuploc 设置立即生效,但以下情况会导致后续备份仍写入旧路径:
- 命令未以 root 执行(静默失败,无提示,日志里记
PROT-20) - 目标目录不存在或 CRS 进程无写权限(
chown root:oinstall /shared/backup/ocr && chmod 755 /shared/backup/ocr) - 设置了路径但未触发下一次自动备份窗口 —— 要等至少 4 小时,或手动触发一次
ocrconfig -manualbackup(该命令强制立即生成一份新备份,用于验证路径是否生效)
真正容易被忽略的是:-backuploc 只影响物理备份,不影响 -export 生成的逻辑备份路径 —— 后者完全由你指定的文件路径决定,二者独立。

















