Oracle手工完全恢复案例(归档模式)(三)
复数据文件
----新建一个表空间,没有备份,数据文件被删除
1.新建一个表空间
create tablespace ts_no_test datafile'/u01/oradata/siqian11g/ts_no_test01.dbf'size10m;
此时控制文件中有了这个表空间的信息。
2.用test用户在新建表空间中加表
test@SIQIAN11>createtable t02(idint) tablespace ts_no_test;
insert into t02 values(1);
insert into t02 values(2);
insert into t02 values(3);
commit;
3.关库并删除该表空间的数据文件
shutdown abort
rm -f /u01/oradata/siqian11g/ts_no_test01.dbf
4.起库
startup
出错:
ORA-01157: cannot identify/lockdatafile7- see DBWR tracefile
ORA-01110:datafile7:'/u01/oradata/siqian11g/ts_no_test01.dbf'
查看需要恢复的文件:
sys@SIQIAN11>selectfile#,errorfrom v$recover_file;
FILE# ERROR
---------------------------------------------------------------------------
1 UNKNOWN ERROR
2 UNKNOWN ERROR
3 UNKNOWN ERROR
4 UNKNOWN ERROR
5 UNKNOWN ERROR
6 UNKNOWN ERROR
7 FILENOTFOUND
7 rows selected.
5.恢复数据文件
sys@SIQIAN11>alter database datafile7offline;
sys@SIQIAN11>alter databaseopen;(高可用性)
由于我没做备份,所以不能做还原(resotre),但控制文件中记录了刚才创建的表空间的信息,所以可以先创建一个原来的数据文件,然后再来恢复。
alter database create datafile '/u01/oradata/siqian11g/ts_no_test01.dbf';
sys@SIQIAN11>recover datafile7;
Media recovery complete.
sys@SIQIAN11>alter database datafile7online;
6.验证
sys@SIQIAN11>select*from test.t02;
ID
----------
1
2
3
案例五:将数据文件恢复到新的位置
模拟环境:
1.用test用户在t01表中插入一些数据 test@SIQIAN11>begin 2 for iin 11..15 3 loop 4 insertinto t01 values(i); 5 endloop; 6 end; 7 / PL/SQLprocedure successfully completed. 2.关库删除相关数据文件模拟介质失败 [oracle@siqian siqian11g]$ rm-f /u01/oradata/siqian11g/test01.dbf 3.起库 startup 出错: ORA-01157: cannot identify/lockdata file6 - see DBWR tracefile ORA-01110:data file6:'/u01/oradata/siqian11g/test01.dbf' 查看所要恢复的文件信息 sys@SIQIAN11>selectfile#,errorfrom v$recover_file; FILE# ERROR --------------------------------------------------------------------------- 1 UNKNOWN ERROR 2 UNKNOWN ERROR 3 UNKNOWN ERROR 4 UNKNOWN ERROR 5 UNKNOWN ERROR 6 FILENOT FOUND 6 rows selected. 4.将失败的介质offline并还原到新位置 sys@SIQIAN11>alter database datafile6 offline; sys@SIQIAN11>alter databaseopen;(高可用性) [oracle@siqian siqian11g]$ cp/backup/cold/test01.dbf/u01/oradata/ 5.将控制文件中的数据文件名重命名 alter database rename file'/u01/oradata/siqian11g/test01.dbf' to'/u01/oradata/test01.dbf'; 6.恢复数据文件 sys@SIQIAN11>recover datafile6; ORA-00279: change2067764 generated at06/29/201312:11:34 neededfor thread 1 ORA-00289: suggestion: /backup/arch/arch_1_819372290_12.log ORA-00280: change2067764 for thread1 is in sequence #12 Specify log:{=suggested| filename | AUTO| CANCEL}... 回车下去恢复。。。 7.将被offline的数据文件online sys@SIQIAN11>alter database datafile6 online; 8.验证 sys@SIQIAN11>select* from test.t01; ID ---------- 11 12 13 14 15 1 2 3 4 5 6 11 rows selected.