9i新特性之Flashback Query的應用(1)
在9i之前,如果出現的誤操作,只能透過備份來完成基於時間點的恢復,9i給提供了一個新的特性Flashback Query,我們可以應用此特性,可以很方便的實現恢復。但是要注意的是,Flashback Query 僅僅是一個查詢的機制,不會真正的UNDO任何資料。
1. 什麼是Flashback Query?
利用Oracle 多版本讀一致的特性透過undo 來提供所需的前映象中的資料。透過這個功能,可以看到歷史資料,甚至用歷史資料來修復誤操作引起的錯誤。可以透過指定時間或者SCN 來檢索需要的資料。{Uses Oracle's multiversion read-consistency capabilities to restore data by applying undo as needed. You can view and repair historical data, and you can perform queries on the database as of a certain wall clock time or user-specified system commit number (SCN).}
可以理解成,Oracle在之前的版本中就已經存在了Flashback Query了,之前我們把它稱為多版本的讀一致性。(多版本特性提供跨多個使用者會話的一致性檢視,Oracle不執行dirty read)
2. 準備工作
the best way:資料庫處於Automatic Undo Management 狀態(也有文章說必須,我查詢了oracle文件應用了這個詞Prerequisite,同時在AskTom上我也查詢到相應的解釋,指明最好是自動Undo管理,手動的Undo管理也是可以的,並且有例子)
最大可以閃回查詢的時間段由UNDO_RETENTION 初始化引數(單位為秒)指定,參看下面執行命令
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 600
undo_suppress_errors boolean FALSE
undo_tablespace string UNDOTBS1
SQL>
這是一個可以動態的修改的引數,可以透過ALTER SYSTEM SET UNDO_RETENTION =
比較顯然的是,你設定了相對大的UNDO_RETENTION,就必須設定足夠大的UNDO ROLLBACK SEGMENTS。
3. 如何使用Flashback Query?
我們可以透過兩種方式來使用Flashback Query:
用SQL
使用SELECT 語句的AS OF 來進行閃回查詢,語法如下:
as of scn ( timestamp) expr
透過關鍵詞 AS OF 可以對錶,檢視,物化檢視 進行Flashback Query,可以制定SCN或者TIMESTAMP,其中TIMESTAMP是9i中出現的,可以有毫秒的時間單位,如
SQL> select systimestamp from dual;
SYSTIMESTAMP
---------------------------------------------------------------------------
29-12月-03 10.15.05.171000 下午 +08:00
下面,進行一個例子:
SQL> connect scott/tiger
已連線。
SQL> create table test (id number(1));
表已建立。
SQL> insert into test values (1);
已建立 1 行。
SQL> insert into test values (2);
已建立 1 行。
SQL> commit;
提交完成。
SQL> select * from test;
ID
----------
1
2
SQL> delete from test where id=1;
已刪除 1 行。
SQL> commit;
提交完成。
SQL> select * from test;
ID
----------
2
SQL> select * from test as of timestamp (systimestamp -interval'10'second);
ID
----------
1
2
SQL> insert into test (select * from test as of timestamp (systimestamp -interva
l'10'second) where id =1);
已建立 1 行。
SQL> commit;
提交完成。
SQL> select * from test;
ID
----------
2
1
現在,利用了Flashback Query 我們恢復了test表中被誤刪除的記錄。當然我們可以透過一些其他的方法,類似於建立一箇中間表等,進行這種少量資料的誤操作的恢復.
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18921899/viewspace-1017050/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 9i新特性之Flashback Query的應用(2)
- 9i新特性之Flashback Query的應用---針對DML誤操作的恢復
- flashback version query和 flashback transaction query簡單應用
- Flashback Query的應用(轉帖)
- flashback技術之---flashback query
- oracle flashback特性(1.4)--閃回查詢之Transaction queryOracle
- flashback技術之---flashback Transaction Query
- flashback技術之---flashback version query
- 【閃回特性之閃回事務查詢】Flashback Transaction Query
- [閃回特性之閃回版本查詢]Flashback Version Query
- flashback總結四之Flashback_Query
- Oracle10g的Flashback之Flashback Transaction QueryOracle
- flashback總結六之Flashback_Transaction_Query
- oracle10g之flashback version query 和flashback transaction query 實驗Oracle
- (轉)oracle10g新特性之 flashbackOracle
- 10G新特性筆記之FLASHBACK筆記
- 全面學習oracle flashback特性(1.4)--閃回查詢之Transaction queryOracle
- flashback總結五之Flashback_Query_Version(上)
- 閃回之 Flashback Query (dml表、過程、函式、包等)、Flashback version Query函式
- 【徵文】全面學習oracle flashback特性(1.4)--閃回查詢之Transaction queryOracle
- 應用oracle flashback--Flashback Table之RECYCLEBINOracle
- 【Flashback】Flashback Query功能實踐
- oracle flashback特性(2.1)--Flashback Table之RECYCLEBINOracle
- flashback總結五之Flashback_Query_Version(下)_補充
- 使用Oracle9i的新特性Flashback Query恢復誤刪除資料(轉eygle)Oracle
- 【徵文】應用oracle flashback(2.1)--Flashback Table之RECYCLEBINOracle
- oracle10G新特性之ASM的應用OracleASM
- Flashback Query Benefits (368)
- 11G新特性:FLASHBACK ARCHIVEHive
- 9i新特性之資料庫監控系列資料庫
- oracle 10g flashback version query 和 flashback transaction query實驗Oracle 10g
- 【徵文】應用oracle flashback(2.3)--Flashback Table之注意事項Oracle
- oracle10G新特性之段顧問的應用Oracle
- 11G新特性:FLASHBACK ARCHIVE - 01Hive
- 11G新特性:FLASHBACK ARCHIVE – 02Hive
- 11G Flashback Data Archive新特性的研究Hive
- ORACLE Flashback Query偽列Oracle
- 全面學習oracle flashback特性(2.1)--Flashback Table之RECYCLEBINOracle