巧用flashback database實現靈活的資料回滾
之前寫了一篇博文分享了使用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的方式來自動執行,就不用大半夜,大清早再去做這些回退了。
今天碰到的這個問題更有針對性和普遍性,在很多時候都需要一套獨立的環境來作為客戶的培訓和演示需要,環境中的資料一旦配置完成,一般是很少需要改動的。如果培訓完成後,第二天如果還有培訓或者演示,想得到原來的初始化資料就很困難了。
這個時候我們可以嘗試使用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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 巧用flashback database實現靈活的資料切換Database
- [Flashback]Flashback Database閃回資料庫實驗Database資料庫
- 【Flashback】Flashback Database閃回資料庫功能實驗Database資料庫
- 【Flashback】Flashback Database閃回資料庫功能實踐Database資料庫
- Flashback Database 閃回資料庫Database資料庫
- 【Flashback】啟用Flashback Database閃回資料庫功能Database資料庫
- 閃回資料庫(flashback database)知識分享資料庫Database
- 閃回資料庫時間視窗(flashback database window)資料庫Database
- 第5章 閃回資料庫Understanding the Flashback Database資料庫Database
- Oracle 閃回特性(FLASHBACK DATABASE)OracleDatabase
- 如何實現車聯網的靈活資料採集
- flashback query閃回資料
- 啟用Flashback Database閃回資料庫功能(閃回區滿解決辦法 )Database資料庫
- Oracle 資料回滾Oracle
- 實踐資料回滾解決方案
- 資料庫訪問抽象類實現專案資料庫靈活切換資料庫抽象
- 利用flashback閃回表和資料
- Oracle Database 11g閃回技術flashbackOracleDatabase
- Flashback DatabaseDatabase
- 使用 Flash Table 回滾資料
- 利用oracle的日誌挖掘實現回滾Oracle
- MySQL實現事務的提交和回滾MySql
- 閃回資料歸檔-- Flashback Data ArchiveHive
- [Flashback]開啟資料庫閃回資料庫功能資料庫
- 【Flashback】使用Flashback Drop技術閃回被DROP表的指定版本資料
- ORACLE 閃回檢視v$flashback_database_log/statOracleDatabase
- 使用 JavaScript 實現靈活的固定導航功能JavaScript
- EMQX Cloud 自定義函式實現多種 IoT 資料形式的靈活轉化MQCloud函式
- 使用FLASHBACK_TRANSACTION_QUERY查詢回滾事務SQLSQL
- 巧用閃回資料庫來檢視歷史資料資料庫
- 【Flashback】Flashback Drop閃回刪除功能實踐
- flashback技術之---flashback databaseDatabase
- 【Flashback】11g的閃回資料歸檔初探
- flashback database 方法Database
- 配置Flashback DatabaseDatabase
- 【Flashback】使用檢視快速獲得Flashback Query閃回查詢資料
- 回滾操作、回滾段的理解
- 巧用ROW_NUMBER 實現SQL資料任意排序SQL排序