Oracle 19c物理DG备库不自动同步主库初始化参数变更,因ALTER SYSTEM SET仅修改主库SPFILE且不生成redo,故备库参数须手动同步;关键参数包括db_unique_name、standby_file_management、compatible、log_archive_config及OMF相关路径,修改后需验证MRP0状态与SEQUENCE#推进。

Oracle 19c DG物理备库不会自动同步主库的初始化参数变更,这是设计使然,不是故障。所有ALTER SYSTEM SET ... SCOPE=SPFILE类操作只影响主库SPFILE,备库仍按自身SPFILE启动,参数不继承、不复制、不传播。
哪些参数在备库上必须手动同步
主库改了但备库没动,就会出现行为不一致甚至同步中断。重点关注以下几类:
-
db_unique_name:LOG_ARCHIVE_DEST_n中引用的DB_UNIQUE_NAME必须与备库实际值严格一致,否则RFS拒绝接收日志 -
standby_file_management:补丁升级或重启后可能被重置为MANUAL,导致新增数据文件卡住MRP0 -
compatible:若误设为11.2.0.4等旧值,会触发ORA-19660/ORA-19661,连备份恢复都失败 -
log_archive_config:必须包含主备双方的DB_UNIQUE_NAME,如'DG_CONFIG=(ORCL_PRI,ORCL_STBY)',缺一不可 -
db_create_file_dest或db_recovery_file_dest:若主库启用了OMF且备库路径未就绪或不可写,MRP跳过文件创建并静默挂起
为什么ALTER SYSTEM SET不生效于备库
物理DG同步的是redo流,不是参数文件内容。备库的SPFILE是独立维护的,即使主库执行了ALTER SYSTEM SET log_archive_dest_2='...' SCOPE=SPFILE,该语句本身不生成redo记录,也不会触发任何传输或应用逻辑。
常见错误现象:
- 主库改完
LOG_ARCHIVE_DEST_2后,备库alert.log持续报ORA-12514(服务名不匹配) - 主库新增PDB后,备库
V$PDBS查不到该PDB,V$CONTROLFILE_RECORD_SECTION中PLUGGABLE DATABASES记录数未增长 - 主库启用
FORCE LOGGING后,备库V$DATAGUARD_STATS中transport_lag突增,v$managed_standby里RFS状态为NOT ACTIVE
如何安全更新备库关键参数
不能依赖“主库改了,备库就跟着变”。必须在备库上显式执行,且注意顺序和时机:
- 对静态参数(如
compatible、db_unique_name),需SHUTDOWN IMMEDIATE→ 修改SPFILE →STARTUP NOMOUNT→ 验证 - 对动态参数(如
standby_file_management),可在线执行:ALTER SYSTEM SET standby_file_management=AUTO SCOPE=BOTH,但必须确认ASM磁盘组已就绪 - 修改
log_archive_config后,立即在备库执行ALTER SYSTEM ARCHIVE LOG CURRENT,强制触发一次日志切换,验证传输是否恢复 - RAC环境改
db_unique_name必须走srvctl remove database→ 改SPFILE →srvctl add database三步,跳过任意一步都会报ORA-65500
最易被忽略的一点:参数同步不是“改完就完”,而要交叉验证效果。比如改完standby_file_management=AUTO,得立刻检查v$managed_standby中MRP0是否从WAIT_FOR_LOG变为APPLYING_LOG,再看v$logstdby或v$archived_log里最新应用的SEQUENCE#是否在动——否则就是路径、权限或ASM别名还没对齐。


















