巧用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】Flashback Database閃回資料庫功能實驗Database資料庫
- flashback query閃回資料
- ORACLE 閃回檢視v$flashback_database_log/statOracleDatabase
- flashback實現資料快速復原
- 如何實現車聯網的靈活資料採集
- 【Flashback】Flashback Drop閃回刪除功能實驗
- Oracle 資料回滾Oracle
- 實踐資料回滾解決方案
- oracle 10g flashback databaseOracle 10gDatabase
- mysql資料誤刪後的資料回滾MySql
- 利用oracle的日誌挖掘實現回滾Oracle
- MySQL實現事務的提交和回滾MySql
- 使用 navigateTo 實現靈活的路由導航路由
- Flashback database必須要有之前的archivelog嗎?DatabaseHive
- Flashback Drop閃回刪除功能實踐
- Oracle 12.2新特性: PDB級閃回資料庫(Flashback PDB)Oracle資料庫
- EMQX Cloud 自定義函式實現多種 IoT 資料形式的靈活轉化MQCloud函式
- Redis 實戰篇:巧用資料型別實現億級資料統計Redis資料型別
- [20210722]ORA-38760與flashback database.txtDatabase
- 創業者需要的品質:靈活!靈活!靈活創業
- WebSocket的故事(六)—— Springboot中,實現更靈活的WebSocketWebSpring Boot
- 萬國資料攜手聯想凌拓 合力實現資料雲上雲下靈活排程
- Redis 實戰篇:巧用Bitmap 實現億級海量資料統計Redis
- SpringBoot利用java反射機制,實現靈活讀取Excel表格中的資料和匯出資料至Excel表格Spring BootJava反射Excel
- 在Oracle DG Standby庫上啟用flashback database功能OracleDatabase
- Spring Aop中解析spel表示式,實現更靈活的功能Spring
- 巧用標誌欄位實現填報資料的暫存與鎖定
- 資料庫startup啟動時前滾回滾進行例項恢復的理解資料庫
- Oracle閃回技術--Flashback Version QueryOracle
- database資料庫的資料結構Database資料庫資料結構
- Shadcn UI:現代前端的靈活元件庫UI前端元件
- 透過自定義feignclient 的LoadBalancerFeignClient實現靈活的負載均衡策略client負載
- FPGA -- SPI 時序實現(超級靈活,超級好用)FPGA
- GBASE資料實現資料層面同城雙活之應用
- 亞信安慧AntDB:靈活處理資料典範
- 金倉資料庫KingbaseES PLSQL 支援語句級回滾資料庫SQL
- MySQL資料庫出現 Ignoring query to other databaseMySql資料庫Database
- [20140516]取出回滾段資訊.txt
- Fiddler的靈活使用