下面恢复数据库
recover database;
ORA-00279: change1552528 generatedat06/28/201314:57:57 neededfor thread 1
ORA-00289: suggestion:/u01/fast_recovery_area/MIKE/archivelog/2013_06_28/o1_mf_1_1_8wtf58m4_.arc
ORA-00280: change1552528for thread1isinsequence #1
Specify log:{=suggested| filename | AUTO| CANCEL}...
一路回车下去,数据库使用归档日志来恢复数据库。最后打开数据库。
alter databaseopen;
最后用test用户连上查t1数据,数据回来了。
再查select file#,checkpoint_change#from v$datafile;
select file#,checkpoint_change#from v$datafile_header;
发现控制文件和数据文件头部的SCN是同步的。
案例二:recover tablespace (恢复表空间)
模拟环境:
1.用test用户登录创建一个表再插入一些数据提交
create table t01(id int) tablespacetest;
insert into t01 values(1);
insert into t01 values(2);
insert into t01 values(3);
commit;
2.模拟介质失败
shutdown abort
rm -f /u01/oradata/siqian11g/test01.dbf
3.起库
出错:
ORA-01157: cannot identify/lockdatafile6- see DBWRtracefile
ORA-01110:datafile6:'/u01/oradata/siqian11g/test01.dbf'
查看下要恢复的数据文件:
select file#,error from v$recover_file;
FILE#ERROR
---------------------------------------------------------------------------
1 UNKNOWN ERROR
2 UNKNOWN ERROR
3 UNKNOWN ERROR
4 UNKNOWN ERROR
5 UNKNOWN ERROR
6 FILENOTFOUND
4.还原数据文件
cp /backup/cold/test01.dbf/u01/oradata/siqian11g/
5.将数据文件offline(模拟高可用性),然后起库
alter database datafile6offline;
起库
alter database open;
6.恢复表空间
recover tablespacetest;
ORA-00279: change2067764 generatedat06/29/201312:11:34 neededfor thread 1
ORA-00289: suggestion:/backup/arch/arch_1_819372290_12.log
ORA-00280: change2067764for thread1isin sequence #12
Specify log:{=suggested| filename | AUTO| CANCEL}...
一路回车下去来恢复表空间。
7.将数据文件online
alter database datafile6online;
8.验证
conn test/test
test@SIQIAN11>select*from t01;
ID
----------
1
2
3
案例三:在database open状态下恢复表空间
----database open状态下恢复数据文件(除了system表空间)
模拟环境:
1.test用户登录
test@SIQIAN11>select*from t01;
ID
----------
1
2
3
插入一些数据:
insert into t01 values(4);
insert into t01 values(5);
insert into t01 values(6);
commit;
2.在database open状态下删除test01.dbf
[Oracle@siqian siqian11g]$ rm-f/u01/oradata/siqian11g/test01.dbf
然后清除data buffer
sys@SIQIAN11>alter system flush buffer_cache;
sys@SIQIAN11>select*from test.t01;
select * from test.t01
*
ERROR at line 1:
ORA-01116: errorin opening databasefile6
ORA-01110:datafile6:'/u01/oradata/siqian11g/test01.dbf'
ORA-27041: unabletoopenfile
Linux Error: 2: No suchfileor directory
Additional information:3
3.将被损坏的datafile offline
alter database datafile6offline;
4.还原数据文件
[oracle@siqian siqian11g]$ cp/backup/cold/test01.dbf/u01/oradata/siqian11g/