主库添加数据文件时,备库会自动同步,但仅限永久性数据文件且需standby_file_management设为AUTO;临时文件在23ai前不支持自动同步,须手动添加;路径不一致需提前配置DB_FILE_NAME_CONVERT。

主库加datafile,备库会不会自动同步
会,但仅限于永久性数据文件(DBA_DATA_FILES),且前提是 standby_file_management 参数设为 AUTO。这是 Data Guard 的默认行为,从 11g 到 19c 都成立。
常见错误现象:主库执行了 ALTER TABLESPACE users ADD DATAFILE '/u01/.../users02.dbf' SIZE 5G,但备库查 dba_data_files 没有这条记录 —— 大概率是备库的 standby_file_management 被设成了 MANUAL。
- 检查方式:
SHOW PARAMETER standby_file_management - 修复方式(需在备库执行):
ALTER SYSTEM SET standby_file_management=AUTO SCOPE=BOTH;之后重启 MRP 进程(ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT) - 注意:该参数修改后,不会回滚已存在的手动操作,只对后续主库发起的文件变更生效
主库扩tempfile,备库会不会自动同步
取决于 Oracle 版本:23ai(及后续的 26ai)开始支持自动同步;23ai 之前(包括 11g、12c、19c)**完全不支持**。
典型报错场景:主库执行 ALTER TABLESPACE temp ADD TEMPFILE '/u01/.../temp02.dbf' SIZE 2G,备库日志里出现 MRP0: Background Media Recovery terminated with error 1111 或直接跳过该语句,v$tempfile 里始终只有原始 tempfile。
- 11g–19c 必须手动在备库执行相同
ALTER TABLESPACE ... ADD TEMPFILE语句(路径需与主库一致,或按备库实际存储规划调整) - 23ai+ 可以依赖自动同步,但仍建议在主备库分别确认
v$tempfile记录数和大小是否一致 - 临时表空间扩容失败不会阻断日志应用,但会导致备库查询报
ORA-01652: unable to extend temp segment,尤其在开启只读查询或使用同步工具时
备库表空间文件路径和主库不一致怎么办
不能靠改参数“映射”,必须用 DB_FILE_NAME_CONVERT(物理备库)或 LOG_FILE_NAME_CONVERT(如涉及 standby redo log)提前配置好路径转换规则。
如果主库 datafile 路径是 /u01/oradata/prd/,而备库实际存放在 /u02/oradata/std/,但没配 DB_FILE_NAME_CONVERT,那么主库新增 datafile 后,备库会尝试在 /u01/oradata/prd/ 下创建同名文件,导致 MRP 进程报 ORA-27037: unable to obtain file status 并中断。
- 正确做法:在备库
init.ora或 SPFILE 中设置:DB_FILE_NAME_CONVERT='/u01/oradata/prd/','/u02/oradata/std/' - 该参数必须在备库启动前生效,修改后需重启数据库(或至少
SHUTDOWN IMMEDIATE+STARTUP MOUNT) - 注意逗号前后不能有空格,且路径结尾斜杠必须一致(都带或都不带)
扩容后如何快速验证备库是否真正同步成功
别只看 v$archived_log 的 APPLIED 字段为 YES,要直查文件级元数据。
最可靠的方式是在主备库分别运行同一条 SQL,对比输出:
SELECT tablespace_name, file_name, bytes/1024/1024/1024 gb FROM dba_data_files WHERE file_name LIKE '%users%';
如果主库多了一行新文件、备库没有,说明同步失败;如果都有但 gb 值不同,说明 RESIZE 操作未同步(RESIZE 属 DDL,受 standby_file_management 控制,但部分旧版本对 RESIZE 支持不稳定)。
- 临时表空间验证必须查
v$tempfile,不是dba_temp_files(后者在只读备库中不可见) - 如果备库开了 ADG(
OPEN_MODE=READ ONLY WITH APPLY),v$tempfile是唯一可信视图 - 任何文件级差异,都意味着后续业务查询可能因空间不足失败,而不是等出错才去查


















