巧用flashback database實現靈活的資料回滾

jeanron100發表於2015-04-24
之前寫了一篇博文分享了使用flashback database的特性來在測試環境中避免重複匯入大批次的資料,造成時間和儲存空間的浪費。http://blog.itpub.net/23718752/viewspace-1584057/
今天碰到的這個問題更有針對性和普遍性,在很多時候都需要一套獨立的環境來作為客戶的培訓和演示需要,環境中的資料一旦配置完成,一般是很少需要改動的。如果培訓完成後,第二天如果還有培訓或者演示,想得到原來的初始化資料就很困難了。
這個時候我們可以嘗試使用flashback database來實現。
在之前的例子中分享了根據時間點或者scn可以達到閃回資料庫的目的,其實還有一種方式比較普遍通用,就是使用restore point來做閃回資料庫的操作。
假設環境初始化完成之後,我們可以直接設定一個restore point,在後期就不用過分關注時間點或者scn來做閃回操作了。
create restore point original_state_BASE guarantee flashback database;

設定了這個restore point之後,我們可以使用下面的指令碼來檢視設定的這個恢復點。
col NAME for a20
col TIME for a35
set lines 200
col STORAGE_SIZE for a50
SELECT NAME, SCN, TIME, DATABASE_INCARNATION# DI,GUARANTEE_FLASHBACK_DATABASE, STORAGE_SIZE/1024/1024/1024 
FROM V$RESTORE_POINT
WHERE GUARANTEE_FLASHBACK_DATABASE='YES';
NAME                        SCN TIME                                        DI GUA STORAGE_SIZE/1024/1024/1024
-------------------- ---------- ----------------------------------- ---------- --- ---------------------------
ORIGINAL_STATE_BASE     4465165 17-APR-15 10.48.01.000000000 AM              1 YES                           0
ORIGINAL_STATE          4465180 17-APR-15 10.48.10.000000000 AM              1 YES                   .68359375

設定了之後,如果後面需要閃回恢復就很容易了。
參考指令碼如下,可以很快達到預期的目的。
set echo on feed on
set time on timing on
-spoo logs/restore_flashback.log
select name from v$database;
SELECT current_scn FROM v$database;
col NAME for a20
col TIME for a35
set lines 100

SELECT NAME, SCN, TIME, DATABASE_INCARNATION# DI,GUARANTEE_FLASHBACK_DATABASE, STORAGE_SIZE
FROM V$RESTORE_POINT
WHERE GUARANTEE_FLASHBACK_DATABASE='YES';

shutdown immediate;
startup mount;
flashback database to restore point ORIGINAL_STATE;
alter database open read only;
shutdown immediate;
startup mount;
alter database open resetlogs;
spoo off

當然了這個回退的原理就是flashback database,但是在特定的使用場景中就賦予了更多的實際意義。
在這個基礎上如果根據業務需要,每週的某幾天需要做這個回退操作,就可以設定為crontab的方式來自動執行,就不用大半夜,大清早再去做這些回退了。

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

相關文章