ORA-00245本质是RAC中snapshot controlfile未置于所有节点可访问的共享存储,必须配置为ASM等共享路径并执行BACKUP CURRENT CONTROLFILE强制落地,否则仍使用本地陈旧快照导致报错。
ORA-00245报错本质是snapshot controlfile没放共享位置
rman在rac中执行backup database或触发控制文件自动备份时,必须先创建snapshot controlfile。这个文件不是“可选组件”,而是rman读取一致性控制文件的唯一途径。错误信息里“target is not connected to recovery catalog”纯属干扰项——和catalog完全无关,真正问题是该快照文件路径未被所有节点同时访问。
默认路径如/u01/app/oracle/product/19c/dbhome_1/dbs/snapcf_racdb.f是本地路径,节点1写完,节点2根本看不到或读到陈旧版本,立刻报ORA-00245。单实例不会出这个问题,RAC才暴露。
- Oracle从11.2.0.2起强制要求该文件必须位于共享存储,19c依然沿用此机制
- 不能用NFS(除非所有节点mount选项严格一致且经生产验证,不推荐)
- 路径中不能含环境变量(如
$ORACLE_HOME)、相对路径或/tmp//database等本地目录
show snapshot controlfile name查出的路径含本地路径就直接判错
连任意RAC节点的RMAN,执行:RMAN> show snapshot controlfile name;
如果输出VALUE字段是类似/u01/oracle/product/19c/db/dbs/snapcf_orcl1.f这种带/dbs/、/database或绝对本地路径的,就是根因。即使你之前改过配置,只要没真正生成新文件,RMAN仍会回退使用旧本地快照。
- 配置项
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+DATA/racdb/snapcf_racdb.f'只是“纸面生效”,不代表文件已落地 - 用
asmcmd ls +DATA/racdb/确认真实文件是否存在;返回空或ASMCMD-08102: no connection to ASM instance说明ASM未连通或磁盘组不可用 - 查磁盘组状态:
SELECT name, state, type FROM v$asm_diskgroup WHERE name = 'DATA';,确保state为MOUNTED
CONFIGURE后必须立即执行BACKUP CURRENT CONTROLFILE才能落地文件
只改配置不触发写入,等于没改。RMAN只在首次使用新路径时尝试创建文件。旧本地快照缓存还在,后续备份仍会失败。
- 先清旧缓存:
CONFIGURE SNAPSHOT CONTROLFILE NAME CLEAR; - 再设新路径(注意大小写与
db_unique_name严格一致):CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+DATA/xfdb/snapcf_xfdb.f'; - 立刻执行:
BACKUP CURRENT CONTROLFILE;——这一步强制RMAN写入ASM并校验可写性 - 验证:
asmcmd ls +DATA/xfdb/snapcf_xfdb.f应返回文件信息;若仍报ORA-00245,大概率是ASM权限问题或磁盘组未在所有节点挂载
ALTER DATABASE BACKUP CONTROLFILE这类SQL命令不走RMAN配置
如果你在脚本或运维操作中用ALTER DATABASE BACKUP CONTROLFILE TO '/path/to/ctl.bk' REUSE,它完全绕过SNAPSHOT CONTROLFILE NAME配置,必须显式指定共享路径。
- 正确写法:
ALTER DATABASE BACKUP CONTROLFILE TO '+DATA/xfdb/control_bk.ctl' REUSE; - 节点间时间不同步超过20秒,会导致快照锁争用,表现为
ORA-00245伴随ORA-01545,需检查ntpd或chronyd同步状态 - 即使路径配对、文件生成,若
db_unique_name大小写与实际不一致(如配置XFDB但数据库是xfdb),ASM路径解析失败也会报同错
BACKUP CURRENT CONTROLFILE这一步不是可选验证,而是强制落地动作;没执行它,等于什么都没改。**











