闪回区路径必须指向共享ASM磁盘组而非本地文件系统,RAC要求DB_RECOVERY_FILE_DEST在所有节点指向同一ASM路径;需确认磁盘组已MOUNTED、格式正确、COMPATIBLE.ASM≥11.2,并合理设置DEST_SIZE(≤USABLE_FILE_MB的70%、单位字节),修改后须ALTER SYSTEM SCOPE=SPFILE并重启全部实例,再通过强制归档和V$ARCHIVED_LOG验证实际写入位置。
闪回区路径必须指向ASM磁盘组,不能是本地文件系统
oracle rac要求db_recovery_file_dest在所有节点上指向同一个共享存储位置,asm磁盘组天然满足这个条件;如果误配成本地路径(比如/u01/fast_recovery_area),每个节点会各自写入,导致归档丢失、恢复失败、rman备份不可用。
- 确认目标ASM磁盘组已挂载且状态为
MOUNTED(用asmcmd lsdg检查) - 路径格式必须为
+DG_NAME或+DG_NAME/xxx,不能带主机名、斜杠结尾或相对路径 - 若磁盘组未启用
COMPATIBLE.ASM≥ 11.2,DB_RECOVERY_FILE_DEST_SIZE可能被忽略
设置DB_RECOVERY_FILE_DEST_SIZE前先查清磁盘组可用空间
ASM磁盘组的USABLE_FILE_MB不等于DB_RECOVERY_FILE_DEST_SIZE可设上限——后者受磁盘组冗余策略影响:NORMAL冗余下,实际可用空间≈USABLE_FILE_MB × 2(因为文件镜像占双份);设置过大但物理空间不足,会导致归档写入失败并报ORA-19809。
- 查可用空间:
asmcmd lsdg看USABLE_FILE_MB列 - 设值建议不超过该值的70%,留出ASM元数据和rebalance余量
-
DB_RECOVERY_FILE_DEST_SIZE单位是字节,别错写成MB(例如1073741824才是1GB)
修改参数必须用ALTER SYSTEM SCOPE=SPFILE且重启实例生效
RAC环境下,DB_RECOVERY_FILE_DEST是静态参数,ALTER SYSTEM SET ...不加SCOPE=SPFILE只对当前实例临时生效,节点重启后还原,极易引发归档路径不一致问题。
- 正确命令:
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='+FRA' SCOPE=SPFILE; - 必须同时设置
DB_RECOVERY_FILE_DEST_SIZE,否则启动时报ORA-32004 - 修改后需重启所有实例(
srvctl stop/start database -d <db_name></db_name>),不能只重启单个节点
验证是否真正生效:别只看V$PARAMETER
V$PARAMETER显示的是当前实例读取的参数值,但RAC中可能出现SPFILE里已改、某节点仍从旧内存配置启动的情况;更可靠的验证方式是强制归档一次并检查实际写入位置。
- 执行
ALTER SYSTEM ARCHIVE LOG CURRENT; - 查
V$ARCHIVED_LOG中最新一条的NAME字段,确认路径以+FRA开头 - 用
asmcmd ls +FRA/<db_unique_name>/ARCHIVELOG/</db_unique_name>确认文件真实存在 - 如果出现
ORA-17502或归档挂起,大概率是磁盘组离线或权限不足(ASMSNMP用户没被授权访问该DG)
alert.log里。










