过程:插数据56--查日志--关库--删文件,归档和当前日志组--起库报错--查询--转出文件--恢复报错--关库--重新转储所有数据文件--mount--不完全恢复--开库resetlogs
1、首先做一个全备份
sys@TEST0910> @/u01/app/oracle/bak/cold_bak
2、插入三次数据,分别是提交归档,提交不归档,不提交不归档
sys@TEST0910> select count(*) from scott.test10;
COUNT(*)
----------
14
1 row selected.
sys@TEST0910> insert into scott.test10 select * from scott.emp;
14 rows created.
sys@TEST0910> commit;
Commit complete.
sys@TEST0910> alter system archive log current;
System altered.
sys@TEST0910> select count(*) from scott.test10;
COUNT(*)
----------
28
1 row selected.
sys@TEST0910> insert into scott.test10 select * from scott.emp;
14 rows created.
sys@TEST0910> commit;
Commit complete.
sys@TEST0910> select count(*) from scott.test10;
COUNT(*)
----------
42
1 row selected.
sys@TEST0910> insert into scott.test10 select * from scott.emp;
14 rows created.
sys@TEST0910> select count(*) from scott.test10;
COUNT(*)
----------
56
1 row selected.
3、查询当前日志组以及数据文件的位置
sys@TEST0910> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
1 1 1 52428800 512 1 YES ACTIVE 1886382 22-SEP-13 1888062 22-SEP-13
2 1 2 52428800 512 1 NO CURRENT 1888062 22-SEP-13 2.8147E+14
3 1 0 52428800 512 1 YES UNUSED 0 0
3 rows selected.
sys@TEST0910> col member for a50
sys@TEST0910> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- -------------------------------------------------- ---
2 ONLINE /u01/app/oracle/oradata/test0910/redo02.log NO
1 ONLINE /u01/app/oracle/oradata/test0910/redo01.log NO
3 ONLINE /u01/app/oracle/oradata/test0910/redo03.log NO
3 rows selected.
sys@TEST0910> select name from v$archived_log;
NAME
------------------------------------------------------------------
/u01/app/oracle/fast_recovery_area/TEST0910/archivelog/2013_09_22/o1_mf_1_3_93xzwjf2_.arc
/u01/app/oracle/fast_recovery_area/TEST0910/archivelog/2013_09_22/o1_mf_1_4_93y4xkgl_.arc
/u01/app/oracle/fast_recovery_area/TEST0910/archivelog/2013_09_22/o1_mf_1_5_93y8cd3d_.arc
/u01/app/oracle/fast_recovery_area/TEST0910/archivelog/2013_09_22/o1_mf_1_1_93ybyg39_.arc
/u01/app/oracle/fast_recovery_area/TEST0910/archivelog/2013_09_22/o1_mf_1_2_93ybyrlr_.arc
/u01/app/oracle/fast_recovery_area/TEST0910/archivelog/2013_09_22/o1_mf_1_3_93yclq3y_.arc
/u01/app/oracle/fast_recovery_area/TEST0910/archivelog/2013_09_22/o1_mf_1_1_93ydsdf2_.arc
查看数据文件
sys@TEST0910> select file#,name from v$datafile;
FILE# NAME
---------- --------------------------------------------------
1 /u01/app/oracle/oradata/test0910/system01.dbf
2 /u01/app/oracle/oradata/test0910/sysaux01.dbf
3 /u01/app/oracle/oradata/test0910/undotbs01.dbf
4 /u01/app/oracle/oradata/test0910/disk1/users01.dbf
5 /u01/app/oracle/oradata/test0910/example01.dbf
6 /u01/app/oracle/oradata/test0910/testtb.dbf
7 /u01/app/oracle/oradata/test0910/lxtb01.dbf
7 rows selected.
4、模拟断电并且删除数据文件,当前日志文件,归档日志文件
sys@TEST0910> shutdown abort
ORACLE instance shut down.
当前日志没了,数据文件没了,归档日志没了
[oracle@rtest /]$ rm /u01/app/oracle/oradata/test0910/disk1/users01.dbf
[oracle@rtest /]$ rm /u01/app/oracle/oradata/test0910/redo02.log
[oracle@rtest /]$ rm /u01/app/oracle/fast_recovery_area/TEST0910/archivelog/2013_09_22/o1_mf_1_1_93ydsdf2_.arc
[oracle@rtest /]$ rm /u01/app/oracle/fast_recovery_area/TEST0910/archivelog/2013_09_22/o1_mf_1_3_93yclq3y_.arc
5、起库报错
sys@TEST0910> startup;
ORACLE instance started.
Total System Global Area 2505338880 bytes
Fixed Size 2230952 bytes
Variable Size 587203928 bytes
Database Buffers 1895825408 bytes
Redo Buffers 20078592 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 4 - see DBWR trace file
ORA-01110: data file 4: '/u01/app/oracle/oradata/test0910/disk1/users01.dbf'
sys@TEST0910> select file#,error from v$recover_file;
FILE# ERROR
---------- -----------------------------------------------------------------
4 FILE NOT FOUND
1 row selected.
6,shutdown abort后转储所有冷备份的数据文件
sys@TEST0910> shutdown abort;
ORACLE instance shut down.
转储所有的数据文件
[oracle@rtest /]$ cp /u01/app/oracle/bak/cold_bak/users01.dbf /u01/app/oracle/oradata/test0910/disk1/users01.dbf
[oracle@rtest /]$ cp /u01/app/oracle/bak/cold_bak/example01.dbf /u01/app/oracle/oradata/test0910/example01.dbf
[oracle@rtest /]$ cp /u01/app/oracle/bak/cold_bak/lxtb01.dbf /u01/app/oracle/oradata/test0910/lxtb01.dbf
[oracle@rtest /]$ cp /u01/app/oracle/bak/cold_bak/sysaux01.dbf /u01/app/oracle/oradata/test0910/sysaux01.dbf
[oracle@rtest /]$ cp /u01/app/oracle/bak/cold_bak/system01.dbf /u01/app/oracle/oradata/test0910/system01.dbf
[oracle@rtest /]$ cp /u01/app/oracle/bak/cold_bak/testtb.dbf /u01/app/oracle/oradata/test0910/testtb.dbf
[oracle@rtest /]$ cp /u01/app/oracle/bak/cold_bak/undotbs01.dbf /u01/app/oracle/oradata/test0910/undotbs01.dbf
7、起库到mount状态,使用基于cancel的不完全恢复,最后resetlogs打开数据库。
sys@TEST0910> startup mount;
ORACLE instance started.
Total System Global Area 2505338880 bytes
Fixed Size 2230952 bytes
Variable Size 587203928 bytes
Database Buffers 1895825408 bytes
Redo Buffers 20078592 bytes
Database mounted.
sys@TEST0910> recover database until cancel;
ORA-00279: change 1887633 generated at 09/22/2013 14:06:32 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/fast_recovery_area/TEST0910/archivelog/2013_09_22/o1_mf_1_1_93ydsdf2_.arc
ORA-00280: change 1887633 for thread 1 is in sequence #1
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: cannot open archived log '/u01/app/oracle/fast_recovery_area/TEST0910/archivelog/2013_09_22/o1_mf_1_1_93ydsdf2_.arc'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
ORA-00308: cannot open archived log '/u01/app/oracle/fast_recovery_area/TEST0910/archivelog/2013_09_22/o1_mf_1_1_93ydsdf2_.arc'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
sys@TEST0910> recover database until cancel;
ORA-00279: change 1887633 generated at 09/22/2013 14:06:32 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/fast_recovery_area/TEST0910/archivelog/2013_09_22/o1_mf_1_1_93ydsdf2_.arc
ORA-00280: change 1887633 for thread 1 is in sequence #1
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.
sys@TEST0910> alter database open resetlogs;
Database altered.
sys@TEST0910> select count(*) from scott.test10;
COUNT(*)
----------
14
1 row selected.