oracle用老的控制文件备份恢复新建的数据文件(二)

2014-11-24 16:14:04 · 作者: · 浏览: 1
1110: data file 5: '/app/oracle/product/10.2.0/db_1/dbs/MISSING00005'
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01111: name for data file 5 is unknown - rename to correct file
ORA-01110: data file 5: '/app/oracle/product/10.2.0/db_1/dbs/MISSING00005'
SQL> alter database rename file '/app/oracle/product/10.2.0/db_1/dbs/MISSING00005' to '/database/oradata/skyread/tbs_tbs.dbf';
alter database rename file '/app/oracle/product/10.2.0/db_1/dbs/MISSING00005' to '/database/oradata/skyread/tbs_tbs.dbf'
*
ERROR at line 1:
ORA-01511: error in renaming log/data files
ORA-01141: error renaming data file 5 - new file '/database/oradata/skyread/tbs_tbs.dbf' not found
ORA-01111: name for data file 5 is unknown - rename to correct file
ORA-01110: data file 5: '/app/oracle/product/10.2.0/db_1/dbs/MISSING00005'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
将数据文件进行恢复并ONLINE:
oracle@readerlogdb-> mv tbs_tbs.dbf.bak tbs_tbs.dbf
SQL> alter database rename file '/app/oracle/product/10.2.0/db_1/dbs/MISSING00005' to '/database/oradata/skyread/tbs_tbs.dbf';
Database altered.
SQL> recover datafile 5;
Media recovery complete.
SQL> select count(*) from t02;
select count(*) from t02
*
ERROR at line 1:
ORA-00376: file 5 cannot be read at this time
ORA-01110: data file 5: '/database/oradata/skyread/tbs_tbs.dbf'
SQL> select file#,name,CHECKPOINT_CHANGE# ,status from v$datafile;
FILE# NAME CHECKPOINT_CHANGE# STATUS
-------------------- -------------------------------------------------- -------------------- -------
1 /database/oradata/skyread/system01.dbf 122694852856 SYSTEM
2 /database/oradata/skyread/tbs_test.dbf 122694852856 ONLINE
3 /database/oradata/skyread/sysaux01.dbf 122694852856 ONLINE
4 /database/oradata/skyread/users01.dbf 122694852856 ONLINE
5 /database/oradata/skyread/tbs_tbs.dbf 122694852882 OFFLINE
18 /database2/oradata/skyread/TBS_MRPMUSIC01.dbf 122694852856 ONLINE
26 /database/oradata/skyread/sf01.dbf 122694852856 ONLINE
31 /database2/oradata/skyread/undotbs02 122694852856 ONLINE
8 rows selected.
SQL> alter database datafile '/database/oradata/skyread/tbs_tbs.dbf' online;
Database altered.
SQL> select count(*) from t02;
COUNT(*)
--------------------
1876
最后,如果是system表空间损坏,又无备份,那么是无法打开数据库的,如果是sysaux,无备份,数据库还是可以open,当然要在重建控制文件的时候去掉损坏的数据文件,否则是无法创建成功的,如下实例:
SQL> CREATE CONTROLFILE REUSE DATABASE "SKYREAD" NORESETLOGS FORCE LOGGING ARCHIVELOG
2 MAXLOGFILES 20
3 MAXLOGMEMBERS 5
4 MAXDATAFILES 1000
5 MAXINSTANCES 8
6 MAXLOGHISTORY 2337
7 LOGFILE
8 GROUP 1 '/database/oradata/skyread/redo01.log' SIZE 512M,
9 GROUP 2 '/database/oradata/skyread/redo02.log' SIZE 512M,
10 GROUP 3 '/database/oradata/skyread/redo03.log' SIZE 512M,
11 GROUP 4 '/database/oradata/skyread/redo04.log' SIZE 512M,
12 GROUP 5 '/databas