oracle Flashback Query簡介

來源:互聯網
上載者:User

Flashback 是ORACLE 自9i 就開始提供的一項特性,在9i 中利用oracle 查詢多版本一致的特點,實現從復原段中讀取表一定時間內操作過的資料,可用來進行資料比對,或者修正意外提交造成的錯誤資料,該項特性也被稱為Flashback Query。

一、Flashback Query

正如前言中所提,Flashback Query 是利用多版本讀一致性的特性從UNDO 資料表空間讀取操作前的記錄資料!

什麼是多版本讀一致性

Oracle 採用了一種非常優秀的設計,通過undo 資料來確保寫不堵塞讀,簡單的講,不同的事務在寫資料時,會將資料的前映像寫入undo 資料表空間,這樣如果同時有其它事務查詢該表資料,則可以通過undo 資料表空間中資料的前映像來構造所需的完整記錄集,而不需要等待寫入的事務提交或復原。

flashback query 有多種方式構建查詢記錄集,記錄集的選擇範圍可以基於時間或基於scn,甚至可以同時查詢出記錄在undo 資料表空間中不同事務時的前映象。用法與標準查詢非常類似,要通過flashback query 查詢undo 中的撤銷資料,最簡單的方式只需要在標準查詢語句的表名後面跟上as of timestamp(基於時間)或as of scn(基於scn)即可。as of timestamp|scn 的文法是自9iR2 後才開始提供支援。

1、As of timestamp 的樣本:

SQL>  alter session set nls_date_format='YYYY-MM-DD hh24:mi:ss';

會話已更改。

SQL> select sysdate from dual;

SYSDATE

-------------------

2009-10-15 19:04:16

SQL> select * from A;

ID

----------

2

1

3

4

類比使用者誤操作,刪除資料

SQL> delete from A;

已刪除4行。

SQL> commit;

提交完成。

SQL> select * from A;

未選定行

查看刪除之前的狀態:

假設當前距離刪除資料已經有5 分鐘左右的話:

SQL> select * from A as of timestamp sysdate-5/1440;

ID

----------

2

1

3

4

或者:

SQL>select * from A as of timestamp to_timestamp('2009-10-15 19:04:16','YYYY-MM-DD hh24:mi:ss');

ID

----------

2

1

3

4

用Flashback Query恢複之前的資料:

SQL>Insert into A select * from A as of timestamp to_timestamp('2009-10-15 19:04:16','YYYY-MM-DD hh24:mi:ss');

已建立4行。

SQL> COMMIT;

提交完成。

SQL> select * from A;

ID

----------

2

1

3

4

如上述樣本中所表示的,as of timestamp 的確非常易用,但是在某些情況下,我們建議使用as of scn 的方式執行flashback query,比如需要對多個相互有主外鍵約束的表進行恢複時,如果使用as of timestamp 的方式,可能會由於時間點不統一的緣故造成資料選擇或插入失敗,通過scn 方式則能夠確保記錄的約束一致性。

2. As of scn 樣本

查看SCN:

SELECT dbms_flashback.get_system_change_number FROM dual;

SELECT CURRENT_SCN FROM V$DATABASE;

SQL> SELECT CURRENT_SCN FROM V$DATABASE;

CURRENT_SCN

-----------

1095782

刪除資料:

SQL> delete from A;

已刪除4行。

SQL> commit;

提交完成。

查看刪除之前的狀態:

SQL> select * from A as of scn 1095782;

ID

----------

2

1

3

4

用Flashback Query恢複之前的資料:

SQL> insert into A select * from A as of scn 1095782;

已建立4行。

SQL> commit;

提交完成。

查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.