ora-01110是文件不可用的最终提示,需结合ora-01578/01157/01111/00376定位根本原因;须查dba_data_files确认文件真实状态,区分unnamed、recover卡住或坏块等场景并针对性处理。
ora-01110 本身不是独立错误,而是“文件不可用”的最终提示,真正原因要结合前面的 ora-01578、ora-01157、ora-01111 或 ora-00376 一起看 —— 否则直接重建文件或改参数可能白忙活。
查清到底是哪种文件状态异常
ORA-01110 出现时,data file N 后面的路径只是 Oracle 记录的“名义路径”,不等于实际文件就真在那儿。必须先确认文件当前真实状态:
- 运行
SELECT FILE_ID, FILE_NAME, STATUS, ONLINE_STATUS FROM DBA_DATA_FILES WHERE FILE_ID = N;—— 如果STATUS是AVAILABLE但ONLINE_STATUS是RECOVER,说明该文件正被 MRP 进程尝试恢复但卡住了(常见于归档中断后恢复) - 如果查询返回空行,说明控制文件里已无该文件记录,问题大概率出在主库新增了数据文件而备库没同步成功(典型
ORA-01111场景) - 如果
FILE_NAME显示为/u01/.../UNNAMED00043,基本可断定是standby_file_management=AUTO失效导致备库无法自动创建新文件,需手动干预
修复 UNNAMED 文件(ORA-01111 + ORA-01110 组合)
这是 Data Guard 中最常触发 ORA-01110 的场景:主库加了新数据文件,备库控制文件里生成了占位符 UNNAMEDxxx,但物理文件不存在。
- 先临时关闭自动管理:
ALTER SYSTEM SET standby_file_management='MANUAL' SCOPE=BOTH; - 根据报错中的
UNNAMED00043和主库上对应文件的真实路径(查DBA_DATA_FILES),在备库执行:ALTER DATABASE CREATE DATAFILE '/u01/.../UNNAMED00043' AS '+DG_DATA02/racdbdg/users02.dbf';—— 注意目标路径要和db_file_name_convert规则一致,且 ASM 磁盘组必须有写权限 - 完成后立刻切回自动模式:
ALTER SYSTEM SET standby_file_management='AUTO' SCOPE=BOTH;,再启动恢复:ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
RMAN 恢复坏块前必须停 MRP
遇到 ORA-01578(坏块)+ ORA-01110,说明物理块损坏。RMAN 的 RECOVER DATAFILE N BLOCK m 虽然能从主库拉日志修复单块,但它要求备库数据库处于 MOUNT 状态且 MRP 进程完全停止。
- 不能只执行
CANCEL—— 必须确认 MRP 已退出:SELECT PROCESS, STATUS FROM V$MANAGED_STANDBY WHERE PROCESS = 'MRP0';返回空才安全 - RMAN 连接必须用
rman target /(非target sys/password@db),否则可能因密码文件或监听配置失败 - 若报
ORA-19563: archived log header validation failed,说明主库归档已被清理,此时 RMAN 无法拉取所需日志,只能走“复制整个数据文件”方案
临时表空间文件缺失(ORA-01157 + ORA-01110)
报错路径指向 *tempfile* 且 db_file_name_convert 里没配 tempfile 规则时,备库不会自动创建临时文件,但又不允许手动 CREATE TEMPFILE(只读库限制)。
- 检查
db_file_name_convert是否遗漏 tempfile 路径对,例如主库路径是'+DG_DATA02/racdb/tempfile',备库就必须有对应项'+DG_DATA02/racdbdg/tempfile' - 静态参数修改需重启,生产环境不建议立即操作;临时解法是把主库该 tempfile 所在表空间设为
OFFLINE(不影响业务),等维护窗口再补全转换规则 - 注意:
ALTER DATABASE RECOVER ...对 tempfile 无效,RMAN 也不支持恢复 tempfile —— 它只能重建或补配路径
真正麻烦的从来不是命令敲不对,而是看到 ORA-01110 就急着改参数或删文件。它就像个故障指示灯,亮起时得先分清是“线路接触不良”(UNNAMED)、“保险烧了”(RECOVER 卡住)、还是“原件报废”(坏块),每种修法差着好几个步骤。











