使用archive log恢復data file

--創建測試表空間
create tablespace test2 
datafile '/u01/app/oracle/oradata/normal/test2_01.dbf' 
size 10M reuse;

--切換日誌並查看創建的表空間的 創建scn
SQL> alter system switch logfile;
SQL> /
SQL> /
SQL> /
SQL> select file#, creation_change#, name from v$datafile;
     FILE# CREATION_CHANGE# NAME
---------- ---------------- --------------------------------------------------
         1                8 /u01/app/oracle/oradata/normal/system01.dbf
         2             5224 /u01/app/oracle/oradata/normal/undotbs01.dbf
         3             5349 /u01/app/oracle/oradata/normal/sysaux01.dbf
         4             5826 /u01/app/oracle/oradata/normal/users01.dbf
         5             7948 /u01/app/oracle/oradata/normal/chenhao01.dbf
         6           155204 /u01/app/oracle/oradata/normal/undotbs02.dbf
         7           517792 /u01/app/oracle/oradata/normal/system02.dbf
         8           769957 /u01/app/oracle/oradata/normal/outln01.dbf
         9           818947 /u01/app/oracle/oradata/normal/test01.dbf
        10          1204801 /u01/app/oracle/oradata/normal/test2_01.dbf

--查看oracle將創建表空間test2的日誌記入到哪個歸檔日誌
select name 
from v$archived_log 
where 1204801 between first_change# and next_change#;
NAME
------------------------------------------------------------------------------------------
/u01/app/oracle/flash_recovery_area/NORMAL/archivelog/2014_09_02/o1_mf_1_101_b0c0p9n5_.arc

--創建測試表
SQL> create table t4 tablespace test2 as select * from dba_objects;
SQL> select count(*) from t4;

  COUNT(*)
----------
     13564

SQL> alter system switch logfile;
SQL> /
SQL> /
SQL> /

--在操作系統上刪除文件/u01/app/oracle/oradata/normal/test2_01.dbf
[oracle@normal normal]$ rm -f test2_01.dbf

--嘗試關閉數據庫時報錯
SQL> shutdown immediate
ORA-01116: error in opening database file 10
ORA-01110: data file 10: '/u01/app/oracle/oradata/normal/test2_01.dbf'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

--查看 file# 10 的數據文件信息,並將它設置爲offline
SQL> select file#, name, status from v$datafile where file# = 10;

     FILE# NAME                                               STATUS
---------- -------------------------------------------------- -------
        10 /u01/app/oracle/oradata/normal/test2_01.dbf        ONLINE

SQL> alter database datafile 10 offline;
SQL> select file#, name, status from v$datafile where file# = 10;

     FILE# NAME                                               STATUS
---------- -------------------------------------------------- -------
        10 /u01/app/oracle/oradata/normal/test2_01.dbf        RECOVER

--恢復數據文件
SQL> alter database create datafile 10;
SQL> recover datafile 10;
ORA-00279: change 1204801 generated at 09/02/2014 16:38:55 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/flash_recovery_area/NORMAL/archivelog/2014_09_02/o1_mf_1_101_b0c0p9n5_.arc
ORA-00280: change 1204801 for thread 1 is in sequence #101


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 1205121 generated at 09/02/2014 16:41:45 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/flash_recovery_area/NORMAL/archivelog/2014_09_02/o1_mf_1_102_b0c0pb11_.arc
ORA-00280: change 1205121 for thread 1 is in sequence #102


ORA-00279: change 1205124 generated at 09/02/2014 16:41:45 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/flash_recovery_area/NORMAL/archivelog/2014_09_02/o1_mf_1_103_b0c0pcvk_.arc
ORA-00280: change 1205124 for thread 1 is in sequence #103


ORA-00279: change 1205127 generated at 09/02/2014 16:41:47 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/flash_recovery_area/NORMAL/archivelog/2014_09_02/o1_mf_1_104_b0c0pcw6_.arc
ORA-00280: change 1205127 for thread 1 is in sequence #104


ORA-00279: change 1205130 generated at 09/02/2014 16:41:47 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/flash_recovery_area/NORMAL/archivelog/2014_09_02/o1_mf_1_105_b0c11rh3_.arc
ORA-00280: change 1205130 for thread 1 is in sequence #105


ORA-00279: change 1205510 generated at 09/02/2014 16:47:52 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/flash_recovery_area/NORMAL/archivelog/2014_09_02/o1_mf_1_106_b0c11s4c_.arc
ORA-00280: change 1205510 for thread 1 is in sequence #106


Log applied.
Media recovery complete.		
		
--測試數據文件已經恢復
SQL> alter database datafile 10 online;
SQL> select file#, name, status from v$datafile where file# = 10;

     FILE# NAME                                               STATUS
---------- -------------------------------------------------- -------
        10 /u01/app/oracle/oradata/normal/test2_01.dbf        ONLINE		
SQL> select count(*) from t4;

  COUNT(*)
----------
     13564

[oracle@normal normal]$ ls -l test2_01.dbf
-rw-r----- 1 oracle oinstall 10493952 Sep  2 16:56 test2_01.dbf	
發佈了48 篇原創文章 · 獲贊 19 · 訪問量 37萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章