rac主库必须作为逻辑整体配置,force_logging和archivelog需全局生效;log_archive_dest_n须显式绑定db_unique_name且valid_for严格匹配角色;密码文件须统一同步并含sysbackup权限;备库端也必须配置反向归档路径以支持switchover。

能实施,但必须把RAC主库当成一个逻辑整体来配,不能按单实例习惯逐节点操作;否则归档传不过去、MRP起不来、Switchover直接失败。
FORCE_LOGGING 和 ARCHIVELOG 必须全局生效,不能只在一个节点执行
RAC里ALTER DATABASE FORCE LOGGING或ALTER DATABASE ARCHIVELOG只在当前实例生效,其他节点仍可能产生非归档日志或跳过强制记录。备库收不到完整重做流,同步必然中断。
- 先在任一节点执行:
SHUTDOWN IMMEDIATE→STARTUP MOUNT→ALTER DATABASE ARCHIVELOG→ALTER DATABASE OPEN - 再执行:
ALTER DATABASE FORCE LOGGING(该命令跨实例生效,但需等所有实例完成一次日志切换才真正落地) - 验证必须查
V$DATABASE:两列LOG_MODE和FORCE_LOGGING必须同时为ARCHIVELOG和YES;别用GV$DATABASE只看一行就下结论
LOG_ARCHIVE_DEST_n 配置必须显式绑定 DB_UNIQUE_NAME 且 VALID_FOR 严格匹配角色
RAC主库不能只配一个LOG_ARCHIVE_DEST_2指向备库。每个归档目标都要单独配置,且DB_UNIQUE_NAME和VALID_FOR不匹配,DG Broker会拒绝启用传输,MRP进程根本起不来。
- 主库SPFILE中(
SID='*'全局生效):LOG_ARCHIVE_CONFIG='DG_CONFIG=(rac_prod,orcldg)' LOG_ARCHIVE_DEST_1='LOCATION=+FRA VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=rac_prod' LOG_ARCHIVE_DEST_2='SERVICE=orcldg ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcldg'
-
SERVICE=orcldg必须与TNSNAMES.ORA中定义的服务名一致,且该服务要指向备库的SCAN或VIP,不能写单节点IP - 漏配
VALID_FOR或错写成(ALL_LOGFILES,PRIMARY_ROLE)是ORA-16789的高频原因
密码文件必须同步且含 SYSBACKUP 权限,RAC各节点不能各自生成
RAC各节点密码文件不一致,或没包含SYSBACKUP权限,会导致备库连接主库时认证失败,报ORA-01017或ORA-16191,重做传输直接卡死。
- 在任一RAC节点生成统一密码文件:
orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=xxx entries=10 force=y ignorecase=Y - 把该文件scp到所有RAC节点的
$ORACLE_HOME/dbs/目录下,覆盖原文件 - 确认
SYSBACKUP已存在:SELECT * FROM V$PWFILE_USERS WHERE USERNAME = 'SYSBACKUP';,没有就用GRANT SYSBACKUP TO SYS;补上(注意不是GRANT SYSBACKUP TO xxx)
最易被忽略的是:RAC主库的LOG_ARCHIVE_DEST_2配完后,备库端也得配LOG_ARCHIVE_DEST_2指回主库——否则Switchover后无法反向传输,Broker会报ORA-16664。这不是“可选”,是RAC+DG的刚性依赖。











