Backup And Recovery User's Guide-執行資料庫時間點恢復

LuiseDalian發表於2014-02-28

執行資料庫時間點恢復

為了進行恢復,RMAN DBPITR還原在目標時間點之前的備份,然後使用增量備份或重做日誌前滾資料庫到目標時間點。

可以恢復到SCN時間日誌序號還原點Oracle建議在重要的時間點建立還原點來使基於時間點的恢復更易於管理。

 

Oracle建議在可能的情況下執行閃回資料庫而不是資料庫時間點恢復

使用備份的介質恢復應該是閃回技術不能用於撤銷最近的改變時,最後的選擇。

資料庫時間點恢復的先決條件

資料庫必須執行在歸檔模式

必須具有來自於DBPIRT的目標SCN之前的所有資料檔案的備份,和在備份SCN和目標SCN之間的歸檔日誌。

執行資料庫時間點恢復

這部分描述DBPITR的基本步驟,這個過程假設如下:

n  在當前資料庫incarnation中執行DBPITR,如果目標時間點不在當前的incarnation中,則參考18.6.3“恢復資料庫到祖先incarnation”。

n  控制檔案是當前的。如果需要還原備份的控制檔案,則參考使用備份控制檔案執行恢復(在第20章)

n  資料庫正在使用當前的伺服器引數檔案。如果必須還原伺服器引數檔案,則參考還原伺服器引數檔案(第20章)

 

執行DBPITR,可以通過使用SET UNTIL命令在過程的開始設定目標時間,這樣可以避免錯誤。

而不是在RESTORERECOVER命令中單獨地使用UNTIL子句。

這可以確保從備份還原的資料檔案具有足夠早的時間戳,可以用於後序的RECOVER操作。

練習:執行DBPITR

--1. 確定結束恢復的時間、SCN、還原點、日誌序號. 可以使用閃回查詢功能來幫助你確定何時發生了邏輯損壞錯誤。

--  如果對錶開啟了閃回資料歸檔,則可以查詢存在於過去的資料。

--  也可以使用預警日誌來確定事件的時間,即從哪你必須恢復

--  也可以使用SQL查詢來確定包含目標SCN的日誌序號,然後一直恢復到這個日誌。

--  下面的查詢列出當前資料庫incarnation中的所有日誌

SELECT RECID, STAMP, THREAD#, SEQUENCE#, FIRST_CHANGE# FIRST_TIME, NEXT_CHANGE#

FROM   V$ARCHIVED_LOG

WHERE  RESETLOGS_CHANGE# = ( SELECT RESETLOGS_CHANGE# FROM V$DATABASE_INCARNATION WHERE  STATUS = 'CURRENT');

RECID      STAMP      THREAD#    SEQUENCE#  FIRST_CHAN FIRST_TIM NEXT_CHANG

---------- ---------- ---------- ---------- ---------- --------- ----------

         1  344890611          1          1      20037 24-SEP-05      20043

         2  344890615          1          2      20043 24-SEP-05      20045

         3  344890618          1          3      20045 24-SEP-05      20046

-- 例,如果你發現使用者在9:02意外地刪除了一個表空間,則可以恢復到9:00,剛好在刪除之前,但會丟失這個時間之後的改變。

--2. 如果你正在使用目標時間表示式而不是SCN,則在呼叫RMAN之前要確定時間格式環境變數是正確的

NLS_LANG = american_america.us7ascii

NLS_DATE_FORMAT="Mon DD YYYY HH24:MI:SS"

--3. 連線RMAN到目標資料庫,使資料庫進入MOUNT狀態

SHUTDOWN IMMEDIATE;

STARTUP MOUNT;

--4. 在一個RUN塊中執行下列操作

--   a. 使用SET UNTIL指定目標時間、還原點、SCN或日誌序號。

如果指定一個時間則時間的格式為NLS_LANGNLS_DATE_FORMAT環境變數指定的。

--   b. 如果自動通道沒有被配置,則手動地根據需要分配磁碟或磁帶通道。

--   c. 還原和恢復資料庫

RUN

{

  SET UNTIL SCN 1000;   

  RESTORE DATABASE;

  RECOVER DATABASE;

}

-- 其它的形式

SET UNTIL TIME 'Nov 15 2004 09:00:00';   --使用時間表示式

SET UNTIL SEQUENCE 9923;                 --使用日誌序號

SET UNTIL RESTORE POINT before_update;   --使用還原點

--5. SQL*Plus中以read-only方式開啟資料庫,根據需要執行一些查詢確定邏輯損壞已經被回退了。

ALTER DATABASE OPEN READ ONLY;

-- 如果對資料庫的狀態滿意,則執行完第6步後結束;如果結果不是希望的,則你可能選擇了錯誤的SCN

-- 此時應該更深入地調查一下這種不需要的改變,並確定一個新的目標SCN,重複DBPITR

--6. 如果對希望的結果滿意,則可執行下面互斥的操作之一

--   a.以讀寫方式開啟資料庫,丟棄所有在目標SCN之後的改變。

        SHUTDOWN IMMEDIATE;

        STARTUP MOUNT;

        ALTER DATABASE OPEN RESETLOGS;

        -- 如果資料檔案是離線的,OPEN RESETLOGS操作會失敗,除非資料檔案是正常離線或是隻讀的。

        -- RESETLOGS之後,可以使只讀的檔案或正常離線的表空間聯機,因為它們不需要任何redo

--   b. 使用Data Pump Export工具從資料庫中匯出一個或多個資料庫物件。然後可以恢復資料庫到當前的時間點,然後重新匯入前面匯出的物件。

--      這樣就可以使這些物件回到不希望的改變之前的狀態,並且不會丟失其它的改變。

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

相關文章