ora-01111/file missing错误表明备库无法创建主库新增的数据文件,根本原因是standby_file_management=auto未生效或db_file_name_convert配置缺失/错误,导致生成unnamed占位文件;须先查参数模式与配置,再验证路径、权限、空间,最后人工重定向unnamed文件并切回auto恢复。

主库新增数据文件后备库没同步,90% 是 standby_file_management 参数没起作用,或者根本没生效——不是配置错了,就是被空间、权限、路径挡在了门外。
备库报 ORA-01111 / FILE MISSING 是什么信号
这不是日志没传过来,而是备库在应用归档时,发现主库新增了一个数据文件(比如 file# 135),但自己无法按原路径创建它。此时 v$recover_file 显示 ERROR = 'FILE MISSING',v$datafile 里对应文件名变成 UNNAMED00135 —— 这说明备库已“认出”该文件该存在,但创建失败,只能占个坑。
常见诱因包括:
- 备库目标目录磁盘空间不足(比如主库加了 200GB 文件,备库 ASM 磁盘组只剩 80GB)
- 备库目标路径不存在或 Oracle 用户无写权限(尤其裸设备路径如
/dev/oradata06/rproplh_data_122) - 主备路径不一致,且未配置
db_file_name_convert或配置错误 -
standby_file_management被设为MANUAL但没人手动补文件
standby_file_management=auto 为什么有时失效
设成 AUTO 并不等于“万事大吉”。它只在满足全部条件时才自动创建文件:主库发出 CREATE DATAFILE 指令 + 备库能解析路径 + 目标位置可写 + 控制文件支持该操作。任一环节断链,就会卡住并生成 UNNAMED 文件。
实操中要注意:
- 确认当前值:
SHOW PARAMETER standby_file_management,必须是AUTO(不是MANUAL) - 检查是否被隐式覆盖:RAC 环境下,某些版本需在所有实例上显式设置;12c+ 中若启用了 PDB,还需确认
standby_file_management在 CDB 层生效 - 不能依赖它绕过路径转换:如果主库路径是
/u01/oradata/PROD/users01.dbf,而备库期望存到/u02/oradata/STBY/users01.dbf,必须配db_file_name_convert,否则AUTO会直接尝试在原路径创建,大概率失败
如何快速修复 UNNAMED 文件
核心动作是:先切到 MANUAL,用 ALTER DATABASE CREATE DATAFILE 显式指定新路径,再切回 AUTO。顺序不能错,否则报 ORA-01516 或权限错。
步骤如下:
- 查出
UNNAMED文件路径:SELECT name FROM v$datafile WHERE name LIKE '%UNNAMED%' - 临时关闭自动管理:
ALTER SYSTEM SET standby_file_management = MANUAL - 创建真实文件(路径必须存在、Oracle 用户可写):
ALTER DATABASE CREATE DATAFILE '/u01/oracle/product/db10gr2/dbs/UNNAMED00195' AS '/u02/oradata/STBY/users02.dbf' - 恢复自动管理:
ALTER SYSTEM SET standby_file_management = AUTO - 重启 MRP:
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT
注意:CREATE DATAFILE 命令中源路径必须和 v$datafile 里显示的 UNNAMEDxxx 完全一致,大小写、斜杠都不能错;目标路径建议用绝对路径,避免相对路径解析歧义。
为什么 MRPs 进程还在运行却不同步
MRP 进程状态可能是 APPLYING_LOG,但实际卡在某个 UNNAMED 文件上——它会不断重试创建,失败后暂停应用后续日志,直到人工干预。此时 v$managed_standby 看不到明显异常,但 v$recover_file 和告警日志里早有线索。
排查时别只盯进程列表,要结合三处日志:
- 备库告警日志:搜
ORA-01111、ORA-01274、ORA-27040 - MRP trace 文件(路径见
background_dump_dest):里面会有完整失败堆栈,包括具体哪个路径创建失败、错误码(如 HP-UX 的Error: 13就是权限拒绝) -
v$archive_gap:虽然归档本身可能没缺口,但一旦文件缺失,MRP 就不会再往前推进,所以 gap 查询可能返回空,但这不代表没问题
真正棘手的点不在命令怎么敲,而在于你得同时盯住空间、权限、路径、参数四个维度——少看一个,修半天也白忙。











