背景:
数据文件user05.dbf~user11.dbf在磁盘中异常被删除,之后通过其他方式找回后,重新放入原来的目录,整个过程数据库一直处于open没有关闭。在关闭数据库时,报错:
SQL> shutdown immediate; ORA-01122: database file 11 failed verification check ORA-01110: data file 11: '/sharespace/73data/datafile/user05.dbf' ORA-01208: data file is an old version - not accessing current version
同时跟踪告警日志,有如下一段:
Shutting down instance (immediate) Stopping background process SMCO Shutting down instance: further logons disabled Read of datafile '/sharespace/73data/datafile/user05.dbf' (fno 11) header failed with ORA-01208 Rereading datafile 11 header failed with ORA-01208
官方解释:
01208, 00000, "data file is an old version - not accessing current version" // *Cause: The checkpoint in the file header is less recent than in the // control file. If opening a database that is already open by another // instance, or if another instance just brought this file online, // the file accessed by this instance is probably a different version. // Otherwise, a backup of the file probably was restored // while the file was in use. // *Action: Make the correct file available to the database. Then, either open // the database, or execute ALTER SYSTEM CHECK DATAFILES.
根据该错误的解释,可以理解原因是数据文件头信息中的检查点小于控制文件中的检查点。
解决方式,先尝试offline数据文件,再进行介质恢复
SQL> alter database datafile '/sharespace/73data/datafile/user05.dbf' offline; alter database datafile '/sharespace/73data/datafile/user05.dbf' offline * ERROR at line 1: ORA-01145: offline immediate disallowed unless media recovery enabled
非归档模式下,不能直接offline数据文件,需要先offline表空间
于是,将表空间进行脱机
SQL> alter tablespace users offline; alter tablespace users offline * ERROR at line 1: ORA-00603: ORACLE server session terminated by fatal error ORA-00600: internal error code, arguments: [krhpfh_03-1208], [fno =], [11], [fecpc =], [245637], [fhcpc =], [237283], [], [], [], [], [] ORA-01110: data file 11: '/sharespace/73data/datafile/user05.dbf' ORA-00600: internal error code, arguments: [krhpfh_03-1208], [fno =], [11], [fecpc =], [245637], [fhcpc =], [237283], [], [], [], [], [] ORA-01110: data file 11: '/sharespace/73data/datafile/user05.dbf' ORA-00600: internal error code, arguments: [krhpfh_03-1208], [fno =], [11], [fecpc =], [245637], [fhcpc =], [237283], [], [], [], [], [] ORA-01110: data file 11: '/sharespace/73data/datafile/user05.dbf' ORA-01122: database file 11 failed verification check ORA-01110: data file 11: '/sharespace/73data/datafile/user05.dbf' ORA-01208: data file is an old version - not accessing current version Process ID: 287225 Session ID: 563 Serial number: 46727
发现还是报错,看能必须对数据库中止后才能维护,常规关闭已经无法进行
SQL> shutdown abort ORACLE instance shut down.
启动到mount
SQL> startup mount; ORACLE instance started. Total System Global Area 8.0973E+10 bytes Fixed Size 2237088 bytes Variable Size 1.1274E+10 bytes Database Buffers 6.9256E+10 bytes Redo Buffers 439947264 bytes Database mounted.
进行介质恢复/sharespace/73data/datafile/user05.dbf
。。。。
recover恢复数据库是以归档日志进行恢复的,如果归档日志不存在,则恢复不了
查看数据文件SCN号:
SQL> col checkpoint_change# format 99999999999999999999 SQL> select file#,checkpoint_change# from v$datafile; FILE# CHECKPOINT_CHANGE# ---------- --------------------- 1 15905428863965 2 15905428863965 3 15905428863965 4 15905428863965 5 15905428863965 6 15905428863965 7 15905428863965 8 15905428863965 9 15905428863965 10 15905428863965 11 15905428863965 FILE# CHECKPOINT_CHANGE# ---------- --------------------- 12 15905428863965 13 15905428863965 14 15905428863965 15 15905428863965 16 15905428863965 17 15905428863965
查看数据文件头SCN号:
SQL> select file#,checkpoint_change# from v$datafile_header; FILE# CHECKPOINT_CHANGE# ---------- --------------------- 1 15905428863965 2 15905428863965 3 15905428863965 4 15905428863965 5 15905428863965 6 15905428863965 7 15905428863965 8 15905428863965 9 15905428863965 10 15905428863965 11 15905412272409 FILE# CHECKPOINT_CHANGE# ---------- --------------------- 12 15905412277789 13 15905412277789 14 15905412281504 15 15905412281504 16 15905412286155 17 15905412286155
查看数据文件信息:
SQL> col name format a100 SQL> set linesize 2000 SQL> select file#,name from v$dbfile; FILE# NAME ---------- ---------------------------------------------------------------------------------------------------- 4 /data/oracle/app/oracle/oradata/orcl/users01.dbf 3 /data/oracle/app/oracle/oradata/orcl/undotbs01.dbf 2 /data/oracle/app/oracle/oradata/orcl/sysaux01.dbf 1 /data/oracle/app/oracle/oradata/orcl/system01.dbf 5 /data/oracle/app/oracle/oradata/orcl/dwjk001.dbf 6 /data/oracle/app/oracle/oradata/orcl/dwjk002.dbf 7 /data/oracle/app/oracle/oradata/orcl/dwjk003.dbf 8 /data/oracle/app/oracle/oradata/orcl/user02.dbf 9 /data/oracle/app/oracle/oradata/orcl/user03.dbf 10 /data/oracle/app/oracle/oradata/orcl/user04.dbf 11 /sharespace/73data/datafile/user05.dbf FILE# NAME ---------- ---------------------------------------------------------------------------------------------------- 12 /sharespace/73data/datafile/user06.dbf 13 /sharespace/73data/datafile/user07.dbf 14 /sharespace/73data/datafile/user08.dbf 15 /sharespace/73data/datafile/user09.dbf 16 /sharespace/73data/datafile/user10.dbf 17 /sharespace/73data/datafile/user11.dbf 17 rows selected.