測試恢復3==當資料庫處於開啟狀態時的恢復

oracle_db發表於2012-04-26
說明:資料庫在開啟狀態下需要恢復要怎麼做呢?首先明確什麼時候需要這麼做這麼做的前提是什麼===發生損壞的檔案和SYSTEM表空間沒關係【系統表空間如果有問題那隻能在關閉狀態下進行恢復】,資料庫在恢復的時候要求開啟【這樣不影響業務或者說影響業務的程度要小一點】,當前資料庫正處在開啟狀態下。。。。

開啟狀態下的常規恢復流程:
1.把受影響的資料檔案離線
2.還原資料檔案RESTORE DATAFILE;
3.應用歸檔日誌APPLY ARCHIVELOG
4.然後把資料檔案ONLINE
========================準備工作==============================
如:
會話1:增加T表資料
SQL> show user;
USER is "QQ1"
SQL> select * from t;

        ID NAME
---------- ----------
         0 qq1
         1 qq2
         2 qq3

SQL> insert into t values (3,'qq4');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from t;

        ID NAME
---------- ----------
         0 qq1
         1 qq2
         2 qq3
         3 qq4

SQL> 
會話2:手動切換日誌
SQL> alter system switch logfile;

System altered.

SQL> alter system switch logfile;

System altered.

SQL> 
切換日誌以後在歸檔檔案中會看到剛歸檔的歸檔日誌
[oracle@oraclelinux 2012_04_26]$ ll
total 23308
-rw-r-----  1 oracle oinstall 21413888 Apr 26 10:11 o1_mf_1_53_7skcppkm_.arc
-rw-r-----  1 oracle oinstall  1565184 Apr 26 10:59 o1_mf_1_54_7skgjqyf_.arc
-rw-r-----  1 oracle oinstall   825856 Apr 26 11:01 o1_mf_1_55_7skgmvm2_.arc
-rw-r-----  1 oracle oinstall     1024 Apr 26 11:01 o1_mf_1_56_7skgn9cp_.arc
[oracle@oraclelinux 2012_04_26]$ ll
total 23796
-rw-r-----  1 oracle oinstall 21413888 Apr 26 10:11 o1_mf_1_53_7skcppkm_.arc
-rw-r-----  1 oracle oinstall  1565184 Apr 26 10:59 o1_mf_1_54_7skgjqyf_.arc
-rw-r-----  1 oracle oinstall   825856 Apr 26 11:01 o1_mf_1_55_7skgmvm2_.arc
-rw-r-----  1 oracle oinstall     1024 Apr 26 11:01 o1_mf_1_56_7skgn9cp_.arc
-rw-r-----  1 oracle oinstall   489984 Apr 26 11:25 o1_mf_1_57_7skj11s9_.arc
[oracle@oraclelinux 2012_04_26]$ ll
total 23804
-rw-r-----  1 oracle oinstall 21413888 Apr 26 10:11 o1_mf_1_53_7skcppkm_.arc
-rw-r-----  1 oracle oinstall  1565184 Apr 26 10:59 o1_mf_1_54_7skgjqyf_.arc
-rw-r-----  1 oracle oinstall   825856 Apr 26 11:01 o1_mf_1_55_7skgmvm2_.arc
-rw-r-----  1 oracle oinstall     1024 Apr 26 11:01 o1_mf_1_56_7skgn9cp_.arc
-rw-r-----  1 oracle oinstall   489984 Apr 26 11:25 o1_mf_1_57_7skj11s9_.arc
-rw-r-----  1 oracle oinstall     1536 Apr 26 11:26 o1_mf_1_58_7skj2sn1_.arc
[oracle@oraclelinux 2012_04_26]$ ll
total 23816
-rw-r-----  1 oracle oinstall 21413888 Apr 26 10:11 o1_mf_1_53_7skcppkm_.arc
-rw-r-----  1 oracle oinstall  1565184 Apr 26 10:59 o1_mf_1_54_7skgjqyf_.arc
-rw-r-----  1 oracle oinstall   825856 Apr 26 11:01 o1_mf_1_55_7skgmvm2_.arc
-rw-r-----  1 oracle oinstall     1024 Apr 26 11:01 o1_mf_1_56_7skgn9cp_.arc
-rw-r-----  1 oracle oinstall   489984 Apr 26 11:25 o1_mf_1_57_7skj11s9_.arc
-rw-r-----  1 oracle oinstall     1536 Apr 26 11:26 o1_mf_1_58_7skj2sn1_.arc
-rw-r-----  1 oracle oinstall     4608 Apr 26 11:26 o1_mf_1_59_7skj3oqc_.arc
[oracle@oraclelinux 2012_04_26]$ 

以上的準備是為了保證資料在發生更新以後,可用的歸檔完好無損的存在著!

===========================災難發生===========================
會話1:測試用T表所有表空間資料檔案被刪除
[root@oraclelinux dbtest]# pwd
/u01/oradata/dbtest
[root@oraclelinux dbtest]# ll
total 1626024
-rw-r-----  1 oracle oinstall   7061504 Apr 26 11:36 control01.ctl
-rw-r-----  1 oracle oinstall   7061504 Apr 26 11:36 control02.ctl
-rw-r-----  1 oracle oinstall   7061504 Apr 26 11:36 control03.ctl
-rw-r--r--  1 oracle oinstall      1228 Mar 22 21:09 ctl
-rw-r-----  1 oracle oinstall 104865792 Apr 26 11:31 example01.dbf
-rw-r-----  1 oracle oinstall  20979712 Apr 26 11:31 paul01.dbf
-rw-r-----  1 oracle oinstall  52436992 Apr 26 11:31 qq01.dbf
-rw-r-----  1 oracle oinstall  52429312 Apr 26 11:26 redo01.log
-rw-r-----  1 oracle oinstall  52429312 Apr 26 11:36 redo02.log
-rw-r-----  1 oracle oinstall  52429312 Apr 26 11:25 redo03.log
-rw-r-----  1 oracle oinstall  52429312 Mar 23 14:50 redo04a.log
-rw-r-----  1 oracle oinstall  52429312 Apr 26 11:26 redo04.log
-rw-r-----  1 oracle oinstall 461381632 Apr 26 11:35 sysaux01.dbf
-rw-r-----  1 oracle oinstall 576724992 Apr 26 11:35 system01.dbf
-rw-r-----  1 oracle oinstall  20979712 Apr 25 22:00 temp01.dbf
-rw-r-----  1 oracle oinstall 115351552 Apr 26 11:34 undotbs01.dbf
-rw-r-----  1 oracle oinstall   5251072 Apr 26 11:31 users01.dbf
-rw-r-----  1 oracle oinstall  20979712 Apr 26 11:31 wenchuan01.dbf
-rw-r-----  1 oracle oinstall  20979712 Apr 26 11:31 wenchuan2.dbf
[root@oraclelinux dbtest]# rm -rf qq01.dbf 
[root@oraclelinux dbtest]# 
=====================恢復開始==================================
我們知道是那個資料檔案丟失了QQ01.DBF,檢視對應資料檔案編號
SQL> select file#,name from v$datafile;

     FILE# NAME
---------- ------------------------------
   

         9 /u01/oradata/dbtest/qq01.dbf

2.讓這個資料檔案離線
SQL> alter database datafile 9 offline;

Database altered.

SQL> 
3.RESTORE恢復
把之前熱備的資料檔案複製到資料庫存放資料檔案的目錄下
[root@oraclelinux hot]# ls
qq01.dbf
[root@oraclelinux hot]# cp qq01.dbf /u01/oradata/dbtest/
4.RECOVER資料檔案
SQL> recover datafile 9;就使用一命令
這一步是做log applied
5.讓資料檔案ONLINE
SQL> alter database datafile 9 online;

Database altered.

SQL> 
6.檢查恢復結果,標準是T表中有4條記錄
SQL> select * from t;

        ID NAME
---------- ----------
         0 qq1
         1 qq2
         2 qq3
         3 qq4

SQL> 
=========================恢復結束=============================





來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15720542/viewspace-722274/,如需轉載,請註明出處,否則將追究法律責任。

相關文章