Backup And Recovery User's Guide-執行完全資料庫恢復-執行關閉的資料庫的恢復

LuiseDalian發表於2014-03-04

執行關閉的資料庫的恢復

這部分描述了在資料庫沒有開啟的情況執行完全恢復。

可以在一個操作中恢復所有損壞的資料檔案,也可以在單獨的操作中,執行每個損壞的資料檔案的個別的恢復。

練習:還原和恢復損壞的或丟失的資料檔案

--1. 如果資料庫是OPEN狀態,查詢V$RECOVER_FILE來確定哪一個資料檔案必須被恢復和為什麼被恢復。

--   如果你計劃執行完全恢復而不是時間點恢復,則可以只恢復需要恢復的資料檔案,而不是整個資料庫。

--   對於時間點恢復,必須還原和恢復所有的資料檔案,除非執行的是TSPITR

--   也可以使用閃回資料庫,但閃回資料庫也是影響所有的資料檔案並回退整個資料庫到過去的時間點。

--   可以查詢V$RECOVER_FILE檢視,列出需要恢復的資料檔案的編號、狀態和錯誤資訊

SELECT FILE#, ERROR, ONLINE_STATUS, CHANGE#, TIME FROM V$RECOVER_FILE;

 

--注意:你不能在介質失敗影響到了資料檔案之後,在控制檔案是被還原的或重新建立的情況下, 使用V$RECOVER_FILE.

--      因為被還原的或重新建立的控制檔案不包含更新V$RECOVER_FILE檢視所需要的準確的資訊。

 

-- 也可以對V$DATAFILEV$TABLESPACE檢視通過檔案編號進行連線操作,來檢視資料檔案和表空間的名稱。

-- ERROR列列出了每個需要恢復的資料檔案的問題。

COL DF# FORMAT 999

COL DF_NAME FORMAT A35

COL TBSP_NAME FORMAT A7

COL STATUS FORMAT A7

COL ERROR FORMAT A10

COL CHANGE# FORMAT 99999999

SELECT r.FILE# AS df#, d.NAME AS df_name, t.NAME AS tbsp_name, d.STATUS, r.ERROR, r.CHANGE#, r.TIME

FROM   V$RECOVER_FILE r, V$DATAFILE d, V$TABLESPACE t

WHERE  t.TS# = d.TS# AND d.FILE# = r.FILE#;

 

--2. 查詢V$ARCHIVED_LOGV$RECOVERY_LOG檢視,確定哪些歸檔重做日誌檔案是需要的。

--   V$ARCHIVED_LOG列出所有的歸檔重做日誌的檔名,V$RECOVERY_LOG只列出資料庫執行介質恢復所需要的歸檔重做日誌。

--   V$RECOVERY_LOG也包含可能的檔案的名稱,這個名稱基於通過LOG_ARCHIVE_FORMAT引數指定的命名的慣例。

--   注意V$RECOVERY_LOG只有在資料檔案需要介質恢復的時候才被填充. 因此這個檢視對於計劃的恢復是沒用的,例如從使用者錯誤的恢復.

--         如果資料檔案需要恢復,但資料檔案的備份不存在,則你需要從資料檔案被新增到資料庫開始後產生的所有redo資訊。

 

--3. 如果所有的歸檔日誌在預設的位置可用,則跳轉到第4

--   如果一些歸檔日誌必須被還原並且有足夠的空間可以被使用,則還原需要的歸檔重做日誌檔案到LOG_ARCHIVE_DEST_1引數指定的位置

--   當在介質恢復的過程中資料庫會自動定位正確的日誌檔案.

--   如果沒有足夠的空間則可以還原部分或所有的歸檔重做日誌檔案到其它的位置.

cp /disk2/arch/* $ORACLE_HOME/oradata/trgt/arch

 

--4. 如果資料庫處於開啟狀態,則關閉資料庫

SHUTDOWN IMMEDIATE

--5. 檢查介質確定問題的來源.如果引起介質失敗的硬體問題是暫時的並且如果資料並沒有損壞(如磁碟或控制器電源失敗),則不需要介質恢復

--   開啟資料庫,恢復正常的操作. 如果不能修復問題,則繼續第6

--6. 如果資料檔案永久地損壞了,則找到損壞的檔案的最近的備份,只還原被介質失敗損壞的資料檔案.不要還原未損壞的資料檔案或聯機重做日誌.

--   例如ORACLE_HOME/oradata/trgt/users01.dbf是唯一損壞的資料檔案,並且找到/backup/users01_10_24_02.dbf是該檔案最近的備份

--7. 使用作業系統工具來還原資料檔案到預設的位置

cp /backup/users01_10_24_06.dbf $ORACLE_HOME/oradata/trgt/users01.dbf

-- 使用下面的指導來確定將資料檔案恢復到哪裡

-- a. 如果硬體問題被修復了,則可以還原資料檔案到預設的位置,然後還原歸檔重做日誌到預設的位置並開始恢復。

-- b. 如果硬體問題仍然存在,就不以還原資料檔案到原始的位置,則需要還原資料檔案到一個替代的儲存裝置,

--    使用ALTER DATABASE RENAME FILE通知控制檔案這些檔案新位置.

-- c. 如果還原資料檔案到裸裝置或分割槽,則使用的技術與還原檔案到檔案系統是類似的。

--    要清楚檔案在裸裝置上的命名的慣例並使用支援裸裝置的作業系統工具

--8. 使用管理員許可權連線到資料庫,然後MOUNT資料庫但不OPEN

STARTUP MOUNT

--9. 如果還原一個或多個資料檔案到替代的位置,然後更新控制檔案來反映新的資料檔案的名稱.

ALTER DATABASE RENAME FILE '?/oradata/trgt/users01.dbf' TO '/disk2/users01.dbf';

--10. 獲得所有資料檔案的名稱和狀態,這些檔案通常和控制檔案在一起,也可以查詢V$DATAFILE檢視

SELECT NAME,STATUS FROM V$DATAFILE;

--11. 確定所有需要恢復的資料檔案聯機. 唯一的例外是被正常離線的表空間中的資料檔案或只讀表空間中的資料檔案.

ALTER DATABASE DATAFILE '/oracle/dbs/tbs_10.f' ONLINE;

-- 如果指定的資料檔案已經聯機,則資料庫會忽略這個語句. 如果希望建立一個指令碼來使所有的一次全部聯機

SPOOL onlineall.sql

SELECT 'ALTER DATABASE DATAFILE '''||name||''' ONLINE;' FROM V$DATAFILE;

SPOOL OFF

 

SQL> @onlineall

--12. 如果還原歸檔日誌檔案到替代的位置,則可以在介質恢復之前使用SET LOGSOURCE命令指定新的位置

--    也可以跳過該步,RECOVER命令中直接指定位置. 注意覆蓋redo log source不會影響到正在被歸檔的聯機重做日誌組的歸檔重做日誌目的地。

 

SET LOGSOURCE /tmp

--13. 恢復資料庫、表空間、資料檔案

--13.1 整個資料庫

RECOVER AUTOMATIC DATABASE  

--13.2 恢復指定的表空間

RECOVER AUTOMATIC TABLESPACE users  

--13.3 恢復指定的資料檔案

RECOVER AUTOMATIC DATAFILE '?/oradata/trgt/users01.dbf';

-- 如果沒有選擇自動應用歸檔重做日誌,則必須接受或拒絕每一個提示的日誌.如果進行自動恢復,則資料庫會自動地應用日誌.

-- 恢復繼續進行,只到所有需要歸檔日誌和聯機重做日誌已經被應用到被還原的資料檔案.當介質恢復結束後,資料庫會給出通知.

Media recovery complete.

--如果不需要歸檔重做日誌來完成介質恢復,則資料會應用所有必要的聯機重做日誌檔案並且結束恢復.

--14. 恢復結束之後,開啟資料庫

ALTER DATABASE OPEN;

--15. 在歸檔日誌被應用並確定每個歸檔日誌檔案在離線的儲存上仍然存在後,就可以刪除還原的歸檔日誌檔案的備份來釋放空間了.

$ rm /tmp/*.arc

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

相關文章