【原】非歸檔模式數據恢復 oracle11g r2


作者:david_zhang@sh 【轉載時請以超鏈接形式標明文章】
鏈接:http://www.cnblogs.com/david-zhang-index/archive/2012/04/03/2431490.html?updated=1

1.創建實驗表空間數據文件

 1 SQL> conn /as sysdba
 2 
 3 Connected.
 4 
 5 SQL> create tablespace data01 datafile '/u01/app/oracle/oradata/oracle/data01.dbf'size 10m;
 6 
 7 Tablespace created.
 8 
 9 SQL> create table david_01 tablespace data01 as select * from dba_objects;
10 
11 Table created.

2.數據文件offline

1 SQL> alter database datafile '/u01/app/oracle/oradata/oracle/data01.dbf' offline;
2 
3 Database altered.
4 
5 SQL> alter system switch logfile;
6 
7 System altered.

 3.數據文件online

 1 SQL> alter database datafile '/u01/app/oracle/oradata/oracle/data01.dbf' online;
 2 
 3 alter database datafile '/u01/app/oracle/oradata/oracle/data01.dbf' online
 4 
 5 *
 6 
 7 ERROR at line 1:
 8 
 9 ORA-01113: file 5 needs media recovery
10 
11 ORA-01110: data file 5: '/u01/app/oracle/oradata/oracle/data01.dbf'

 4.數據文件進行介質恢復

 1 SQL> recover datafile 5;
 2 
 3 ORA-00279: change 1179122 generated at 04/03/2012 23:35:49 needed for thread 1
 4 
 5 ORA-00289: suggestion : /u01/app/oracle/flash_recovery_area/ORACLE/archivelog/2012_04_03/o1_mf_1_25_7qp6 nqxt_.arc
 6 
 7 ORA-00280: change 1179122 for thread 1 is in sequence #25
 8 
 9  
10 
11 Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
12 
13 auto(自動搜索歸檔日志,本實驗無歸檔日志)
14 
15 ORA-00308: cannot open archived log '/u01/app/oracle/flash_recovery_area/ORACLE/archivelog/2012_04_03/o1_mf_1_25_7qp 6nqxt_.arc'
16 
17 ORA-27037: unable to obtain file status
18 
19 Linux-x86_64 Error: 2: No such file or directory
20 
21 Additional information: 3
22 
23  
24 
25 ORA-00308: cannot open archived log '/u01/app/oracle/flash_recovery_area/ORACLE/archivelog/2012_04_03/o1_mf_1_25_7qp 6nqxt_.arc'
26 
27 ORA-27037: unable to obtain file status
28 
29 Linux-x86_64 Error: 2: No such file or directory
30 
31 Additional information: 3

5.加上until cancle參數再次嘗試恢復,恢復數據原則要進程不斷嘗試

 1 SYS SQL> recover datafile 5 until cancel;
 2 
 3 ORA-00274: illegal recovery option UNTIL
 4 
 5  
 6 
 7 SQL> alter database datafile 5 online;
 8 
 9 alter database datafile 5 online
10 
11 *
12 
13 ERROR at line 1:
14 
15 ORA-01113: file 5 needs media recovery
16 
17 ORA-01110: data file 5: '/u01/app/oracle/oradata/oracle/data01.dbf'

6.將庫加載到mount狀態,再次嘗試介質恢復

 1 SQL> shutdown immediate;
 2 
 3 Database closed.
 4 
 5 Database dismounted.
 6 
 7 ORACLE instance shut down.
 8 
 9 SQL> startup mount;
10 
11 ORACLE instance started.
12 
13 Total System Global Area  534462464 bytes
14 
15 Fixed Size                  2215064 bytes
16 
17 Variable Size             406848360 bytes
18 
19 Database Buffers          121634816 bytes
20 
21 Redo Buffers                3764224 bytes
22 
23 Database mounted.

 恢復成功

1 SQL> recover database until cancel;
2 
3 Media recovery complete.

7.嘗試打開數據庫

 1 SQL> alter database open;
 2 
 3 alter database open
 4 
 5 *
 6 
 7 ERROR at line 1:
 8 
 9 ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
10 
11  
12 
13 SQL> alter database open RESETLOGS;
14 
15 Database altered.

將數據文件online

 1 SQL> alter database datafile 5 online;
 2 
 3 alter database datafile 5 online
 4 
 5 *
 6 
 7 ERROR at line 1:
 8 
 9 ORA-01190: control file or data file 5 is from before the last RESETLOGS
10 
11 ORA-01110: data file 5: '/u01/app/oracle/oradata/oracle/data01.dbf'

報錯信息提示:控制文件或文件5不在同一個resetlogs版本,再次嘗試恢復

1 SQL> recover datafile 5;
2 
3 ORA-00283: recovery session canceled due to errors
4 
5 ORA-19909: datafile 5 belongs to an orphan incarnation
6 
7 ORA-01110: data file 5: '/u01/app/oracle/oradata/oracle/data01.dbf'

還是失敗

8.修改參數,嘗試手動調整SCN,手動調整SCN以后必須用resetlogs模式打開數據庫,所以需要設置參數"_allow_resetlogs_corruption"=true

 1 SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile;
 2 
 3 System altered.
 4 
 5  
 6 
 7 SQL> shutdown immediate;
 8 
 9 Database closed.
10 
11 Database dismounted.
12 
13 ORACLE instance shut down.
14 
15 SQL> startup mount;
16 
17 ORACLE instance started.
18 
19 Total System Global Area  534462464 bytes
20 
21 Fixed Size                  2215064 bytes
22 
23 Variable Size             406848360 bytes
24 
25 Database Buffers          121634816 bytes
26 
27 Redo Buffers                3764224 bytes
28 
29 Database mounted.

 9.再次介質恢復

1 SQL> recover database until cancel;
2 
3 Media recovery complete.

備注:因為用RESETLOGS來打開數據庫,所以上面這一步很又做了一遍介質恢復(雖然不做這個操作也能打開數據庫),但個人覺得是必須要的,然后再將數據文件狀態聯機

1 SQL> alter database datafile 5 online;
2 
3 Database altered.
1 SQL> alter database open RESETLOGS;
2 
3 Database altered.

10.修改參數,將該參數修改回原來狀態

1 SQL> alter system reset "_allow_resetlogs_corruption" scope=spfile sid='*';
2 
3 System altered.

 11.查看數據文件

SQL> select FILE_ID,FILE_NAME,TABLESPACE_NAME,ONLINE_STATUS from dba_data_files;

再查看下恢復視圖

1 select * from v$recover_file

無任何內容顯示,到此本實驗結束

總結:本實驗討論在非歸檔情況下數據恢復,實驗中需注重oracle提示的錯誤信息,針對提示信息采取措施同時還需不斷嘗試打開數據庫。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM