Backup And Recovery User's Guide-使用閃回資料庫來回退資料庫-執行閃回資料庫操作

LuiseDalian發表於2014-02-28

執行閃回資料庫操作

這部分呈獻了執行資料庫閃的基本技術,通過時間表示式指定了希望的目標時間點、保證的或普通的還原點的名稱、SCN

場景:回退資料庫到當前資料庫incarnation中的時間點。回退資料庫到剛好在最近的OPEN RESETLOGS之前的時間點。

 

預設在FLASHBACK DATABASE命令中使用的SCN是指資料庫的incarnation的直接祖先路徑中的SCN

在資料庫使用RESETLOGS選項開啟之後,它並沒有被拋棄,這個incarnation在這個路徑中。

練習:執行閃回資料庫操作

--1. 連線SQL*Plus到目標資料庫,FLASHBACK DATABASE確定希望的SCN、還原點、時間點

--1.1 確定在閃回資料庫視窗中最早的SCN

SELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME FROM V$FLASHBACK_DATABASE_LOG;

--1.2 閃回資料庫可以達到的最近的SCN是資料庫的當前的SCN

SELECT CURRENT_SCN FROM   V$DATABASE;

--1.3 查詢可用的保證的還原點

--注意如果閃回視窗不能向回延伸到期望的目標時間點,並且在目標時間點沒有保證的還原點,則可以使用資料庫基於時間點的恢復來達到相同的結果

SELECT NAME, SCN, TIME, DATABASE_INCARNATION#, GUARANTEE_FLASHBACK_DATABASE

FROM   V$RESTORE_POINT

WHERE  GUARANTEE_FLASHBACK_DATABASE='YES';

 

NAME                   SCN TIME                  DATABASE_INCARNATION# GUA

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

BEFORE_CHANGES     5753126 04-MAR-05 12.39.45 AM                     2 YES

--2. 一致地關閉資料庫,確保不被任何例項開啟,然後MOUNT資料庫

SHUTDOWN IMMEDIATE;

STARTUP MOUNT;

--3. 重複步驟1中的查詢。當資料庫被關閉的時候,一些閃回日誌被產生。

--   如果因為快速恢復區空間的壓力,一些閃回日誌被刪除,則你的目標SCN有可能達不到

--   注意:如果當目標SCN超出了閃回視窗時執行FLASHBACK DATABASE,則FLASHBACK DATABASE會因為ORA-38729錯誤而失敗,

此時資料庫不會改變。

--4. 開啟RMAN連線到目標資料庫

--5. 執行SHOW命令來檢視被配置的通道。在閃回操作過程中,RMAN可能需要從備份還原歸檔重做日誌。

--   檢視通道是否被配置

SHOW ALL;

RMAN configuration parameters for database with db_unique_name PROD1 are:

.

.

.

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default

CONFIGURE DEVICE TYPE SBT_TAPE PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default

CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS  "SBT_LIBRARY=/usr/local/oracle/backup/lib/libobk.so";

-- 如果需要的裝置和通道已經被配置了,則不需要其它的操作;否則 使用CONFIGURE命令配置自動通道或在RUN塊中包含ALLOCATE CHANNEL命令

--6. 執行RMANFLASHBACK DATABASE命令

--6.1 指定SCN

FLASHBACK DATABASE TO SCN 46963;

--6.2 指定還原點

FLASHBACK DATABASE TO RESTORE POINT BEFORE_CHANGES;

--6.3 指定時間

FLASHBACK DATABASE TO TIME  "TO_DATE('09/20/05','MM/DD/YY')";

--如果FLASHBACK DATABASE命令完成了,則資料庫保持MOUNT狀態並且被恢復到指定的時間點

--7. SQL*Plus中以read-only方式開啟資料庫,執行查詢來驗證資料庫的內容

ALTER DATABASE OPEN READ ONLY;

-- 如果滿足於結果,則執行完步驟8後結束,否則跳轉到第9步。

--8. 如果滿足結果,則執行下面互相排它的操作:

--a. 通過帶RESETLOGS選項開啟資料庫,使資料庫可以更新;如果資料庫當前是隻讀開啟,則執行下面的命令:

SHUTDOWN IMMEDIATE

STARTUP MOUNT

ALTER DATABASE OPEN RESETLOGS;

--注意:在執行了OPEN RESETLOGS選項之後,則在閃回資料庫目標SCN之後的資料庫改變都被拋棄.

--      不過可以使用"回退資料庫到被拋棄的incarnation分支中的SCN"技術來回退資料庫到保留在閃回視窗的SCN範圍。

--b. 使用Oracle資料泵匯出來進行物件的邏輯備份,然後使用RMAN來恢復資料庫到當前的時間點。

--    這個步驟通過重新應用在redo日誌中的所有改變來撤銷閃回資料庫的影響,使資料庫回到最近的SCN

--    在以讀寫方式重新開啟資料庫後,可以使用資料庫泵匯入工具匯入被匯出的物件

RECOVER DATABASE;

--9. 如果你發現使用了錯誤的還原點、SCN或時間點,則MOUNT資料庫,而後執行下面互斥的操作:

--9.1 如果你選擇的目標時間點不夠向前,則使用另一個閃回資料庫命令,在時間更向前回退資料庫

FLASHBACK DATABASE TO SCN 42963;  --比當前的SCN要早

--9.2 如果選擇的目標SCN太往前了,則使用RECOVER DATABASE UNTIL TO 來使資料庫向前前進到希望的SCN

RECOVER DATABASE UNTIL SCN 56963;  --比當前的SCN要晚

--9.3 如果想完全撤銷FLASHBACK DATABASE命令的影響,則可以進行完全恢復.重新應用對資料庫的所有改變,使資料庫到達最近的SCN

RECOVER DATABASE;

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

相關文章