Restore Points 制定回退方案

張衝andy發表於2017-03-10
                                                                                                                 Restore Points 制定回退方案


背景:Flashback Database 和 restore points 都可以提供一個基於時間點的回滾。


理論:
1) Normal Restore Points
對於Normal Restore Points, point的名稱和SCN 儲存在控制檔案裡。
Normal restore points 資訊儲存在控制檔案中,屬輕量級別,即使我們沒有手工的刪除這些points 資訊,控制檔案也會有刪除這些資訊,所以對於Normal restore points,我們不要其他的維護操作。
Restore Point 同Flashback Database 一樣,也會產生image 檔案,在沒有啟用Flashback Database的情況下,只在開始時建立一次image,並儲存在FRA中。 


2) Guaranteed Restore Points
Guaranteed restore points 的資訊也是儲存在控制檔案裡的,本質的不同是Guaranteed restore points 不會自動的刪除,必須手工的清除這些資訊。


如果我們建立了Guaranteed restore point,那麼即使我們沒有啟用Flashback Database,那麼我也可以恢復到我們建立的point。 但如果我們同時啟用了Flashback Database,那麼guaranteed  restore point 會強制保留從那個point 依賴的flashback log 檔案。 這樣我們就會rewind從我們建立point 以來的任一個SCN。


一句話表示,就是在不啟用FlashbackDatabase 的情況下, Guaranteed restore point 只能rewind到我們建立的點對應的SCN.


當我們建立了一個Guaranteed Restore Points,並且我們沒有啟動Flashback Database,那麼在這種情況下,DB 會也會建立一個block 的映象,並存在FRA空間裡,這個和Flashback Database 的一致,那麼不同的時,Flashback Database 會每隔一段時間建立一個block的image,而Restore Points 只在開始時建立一次,那麼恢復的時候也就只能恢復到這個時間點。
這裡要注意一點,我們建立Restore Point的名稱和對應的SCN是儲存在控制檔案裡的,這點前面有說明。


在不啟用Flashback Database 的情況下,我們建立Guaranteed Restore Points,只建立一次image,那麼會節省很多的FRA空間,這種方法在對資料庫進行升級的時候很有用,在升級之前我們建立一次Guaranteed Restore Point,然後升級DB,如果升級失敗,我們回退,如果升級生成,我們刪除Restore Point。


實際上,在我們進行變更操作之前,只需要建立一個映象就可以了,不需要時時記錄變化。而Resotre Points 恰好滿足我們的需求,又節省空間,並且恢復速度還快,因為它不像RMAN 那樣需要進行restore。所以用他非常方便。




注:
guaranteed模式下只要有足夠的閃回區,不會受DB_FLASHBACK_RETENTION_TARGE引數影響。
normal還原點至少保留2048個,保留的個資料受CONTROL_FILE_RECORD_KEEP_TIME引數決定,預設值是7天。


建立guaranteed還原點,必須滿足以下條件:
a.建立一個guaranteed 還原點必須有SYSDBA系統許可權。建立一個normal還原點,你必須有SELECT ANY DICTIONARY or FLASHBACK ANY TABLE privilege
b.必須建立flash recovery area
配置flash recover area共需要二個引數(DB_RECOVERY_FILE_DEST和DB_RECOVERY_FILE_DEST_SIZE)這兩個引數可以在資料庫執行過程中線上修改,修改後立即生效,比如以下列子:
SQL>alter system set db_recovery_file_dest='+XXXX' scope=both;
SQL>alter system set db_recovery_file_dest_size='10g' socpe=both sid='*';
c.資料庫必須是歸檔模式(如果是擔保還原點,歸檔目錄必須是共享的。








操作流程:


1.先建立restore point
SQL> create restore point upgrade_point guarantee flashback database;
Restore point created.


2. 檢視我們建立的restore point
SQL> select * from v$restore_point;


3. 進行打補丁或者升級等大動作
。。。。。


4.如果失敗,就進行回滾
注意:執行Flashback Database時,DB 不能處於open狀態.
SQL> shutdown immediate
SQL> startup mount;
SQL> select open_mode from v$database;
SQL>select * from v$restore_point;
SQL> flashback database to restore point upgrade_point;
--提示必須用Resetlogs開啟:
SQL> alter database open resetlogs;
SQL>@?/rdbms/admin/utlrp.sql   (重新編譯失效物件)
SQL> drop restore point upgrade_point;
SQL>select * from v$restore_point;  

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

相關文章