ORA-01110不是独立错误,而是指示文件路径的“地址标签”,真正需处理的是其前置主错误(如ORA-01157、ORA-00376)及引号内明示的物理路径;须立即用ls -l或asmcmd验证该路径下文件的存在性、权限与状态,并核对v$datafile_header与v$datafile中CHECKPOINT_CHANGE#是否一致,不一致则必须完成RECOVER才能ONLINE。
ora-01110 不是独立错误,它只是“报错现场的地址标签”——真正要修的,是它前面那个主错误(比如 ora-01157、ora-01122、ora-00376),以及引号里那个明晃晃的文件路径。直接冲着 ora-01110 改参数或删日志,99%会绕远路。
看懂 ORA-01110 后面那串路径才是关键动作
报错形如:ORA-01110: data file 5: '/u01/oradata/ORCL/users01.dbf',这里的 5 是文件号,'/u01/oradata/ORCL/users01.dbf' 就是你要立刻验证的物理目标。
- 用
ls -l '/u01/oradata/ORCL/users01.dbf'确认文件是否存在、大小是否为 0、权限是否为oracle:oinstall可读 - 如果是 ASM 路径(如
+DATA/ORCL/DATAFILE/users.256.123456789),必须用asmcmd ls -l +DATA/ORCL/DATAFILE/users.256.123456789,不能用ls - 若路径存在但文件名带
.bak或.old后缀,说明原文件已被覆盖或重命名——这就是根因,不是 RMAN 没恢复,而是恢复目标位置被占了 - 若路径指向
MISSING00005(常见于重建控制文件漏加文件后),说明控制文件里没登记该文件,RESTORE DATAFILE 5会失败,得先补进控制文件或用CREATE DATAFILE
RMAN RESTORE 后仍报 ORA-01110:检查点 SCN 不对齐
RESTORE DATABASE 只拷文件,不校验内容;RECOVER DATABASE 才刷检查点。如果恢复后立即 ALTER DATABASE OPEN,而文件头的 CHECKPOINT_CHANGE# 还卡在旧值,Oracle 就会拒接打开并抛 ORA-01110 + ORA-01122。
- 查当前文件头 SCN:
SELECT FILE#, CHECKPOINT_CHANGE# FROM V$DATAFILE_HEADER WHERE FILE# = 5; - 查控制文件记录的 SCN:
SELECT FILE#, CHECKPOINT_CHANGE# FROM V$DATAFILE WHERE FILE# = 5; - 两者不一致?说明
RECOVER没走完。别跳过,老实用RECOVER DATAFILE 5;或RECOVER DATABASE UNTIL SCN xxx; - 归档日志缺失时,
RECOVER会停在第一个断档点,RMAN 不报错但也不继续——用LIST ARCHIVELOG ALL;和V$ARCHIVED_LOG对比时间范围,确认是否覆盖到文件头 SCN
备库或 ADG 场景下遇到 ORA-01110:不能直接 ONLINE
备库上看到 STATUS = 'OFFLINE' 或 'RECOVER',就执行 ALTER DATABASE DATAFILE 5 ONLINE,必然触发 ORA-01113: file 5 needs media recovery。这不是权限问题,是 Oracle 在拦你“带伤上岗”。
- 先查状态:
SELECT FILE#, STATUS, ENABLED FROM V$DATAFILE WHERE FILE# = 5;—— 若ENABLED = 'DISABLED',说明该文件被显式 offline 过,不能直连 online - 正确流程是:
RECOVER DATAFILE 5;→ 等待输出Media recovery complete.→ 再ALTER DATABASE DATAFILE 5 ONLINE; - 如果
RECOVER报ORA-01157或找不到归档,检查LOG_ARCHIVE_DEST_2是否指向正确路径,或手动指定:RECOVER DATAFILE 5 USING BACKUP CONTROLFILE UNTIL CANCEL;,然后逐个输入归档日志全路径 - 临时表空间文件(如
temp.362.1182678357)报这个错,通常是因为 ADG 的db_create_file_dest配置和主库不一致,应添加新 temp file 并 offline 原文件,而非硬 recover
文件头损坏导致的假性 ORA-01110:dbv 是唯一可信判据
有时文件物理存在、权限正常、归档齐全,但 RECOVER 仍失败,ORA-01110 后紧跟 ORA-01203 或 ORA-01122,大概率是文件头被覆盖或截断——操作系统层面“存在”,Oracle 层面已“不可信”。
- 运行
dbv file='/u01/oradata/ORCL/users01.dbf' feedback=1,重点看输出中是否有Page 1 is marked media corrupt - 若有,说明文件头损坏,
RESTORE必须从完整备份集重新拉,不能复用现有文件 - 若无,但
V$DATAFILE_HEADER.CHECKPOINT_CHANGE#显示为 0 或极小值(如 1),说明文件头未写入有效 SCN,需用BBED(仅限紧急且有备份时)或重建控制文件方式修复,不建议生产环境盲操作 - 特别注意:19c 中若用
CREATE CONTROLFILE ... RESETLOGS后发现漏加文件,生成的MISSING00005文件无法通过常规RESTORE替换,必须用ALTER DATABASE CREATE DATAFILE重建,再RECOVER
实际恢复中最容易被跳过的,是确认文件头 SCN 与归档日志范围的对齐关系。很多人看到 RESTORE 成功就以为结束,却没跑一遍 RECOVER 并验证输出结果。ORA-01110 后面那个路径,永远比错误码本身更值得花三分钟去 ls -l。


















