10g新特性——閃回版本查詢
先舉例說明下10g中的flashbak
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 – Production
SQL> create table sunwg (id number);
表已建立。
SQL> insert into sunwg values (1);
已建立 1 行。
SQL> insert into sunwg values (2);
已建立 1 行。
SQL> insert into sunwg values (3);
已建立 1 行。
SQL> commit;
提交完成。
SQL> select to_char(sysdate,'yyyymmdd hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,'
-----------------
20080310 11:26:20
SQL> delete from sunwg where id = 2;
已刪除 1 行。
SQL> commit;
提交完成。
SQL> select * from sunwg;
ID
--------------------
1
3
SQL> select * from sunwg as of timestamp to_date('20080310 11:26:20','yyyymmdd hh24:mi:ss');
ID
------------------
1
2
3
透過flashback我們能很容易的找到被刪掉的ID = 2的記錄。但是,有的時候僅僅找到丟失的資料還遠遠不夠,我們還希望知道在這兩個時間點的變化情況。在9i中,這是很難實現的,除非做時時的檢測。在10g中,則要簡單的多。
SQL> update sunwg set id = 4 where id =3;
已更新 1 行。
SQL> commit;
提交完成。
SQL> select * from sunwg;
ID
----------------
1
4
現在我們透過10g新提供的閃回版本查詢來找到在兩個時間點之前表sunwg到底發生了什麼事情。
SQL> select versions_starttime,versions_endtime,versions_operation, id
2 from sunwg
3 versions between timestamp minvalue and maxvalue
4 order by VERSIONS_STARTTIME;
VERSIONS_STARTTIME VERSIONS_ENDTIME V ID
-------------------- -------------------- -------- - ----------
10-3月 -08 11.25.44 10-3月 -08 11.31.24 I 3
10-3月 -08 11.25.44 10-3月 -08 11.26.38 I 2
10-3月 -08 11.25.44 I 1
10-3月 -08 11.26.38 D 2
10-3月 -08 11.31.24 U 4
上面這個查詢就是10g新提供的閃回版本查詢特性。從這個結果我們能看到ID = 3的記錄是在11:25:44秒插入到資料的,然後是在11:31:24秒生命終止了,我們知道在這個時刻ID = 3的被更新為ID = 4的記錄了。我們看ID = 4這條記錄也可以看得出來,這條記錄是在11:31:24的時候被更新了。
做過資料倉儲的人應該很清楚這就是最基礎的記歷史的格式,在資料倉儲中為了記錄歷史資訊,所以每條記錄都會自己的生命週期資訊,一般得到這樣的資訊需要進行大量的查詢和比對工作。但是利用10g的新特性,我們能很輕易的查詢到這樣的資訊。
在上述查詢中,列 versions_starttime、versions_endtime、versions_xid、versions_operation 是偽列,與 ROWNUM、LEVEL 等其他熟悉的偽列相類似。其他偽列 — 如 VERSIONS_STARTSCN 和 VERSIONS_ENDSCN — 顯示了該時刻的系統更改號。列 versions_xid 顯示了更改該行的事務識別符號。有關該事務的更多詳細資訊可在檢視 FLASHBACK_TRANSACTION_QUERY 中找到,其中列 XID 顯示事務 id。例如,透過查詢FLASHBACK_TRANSACTION_QUERY中VERSIONS_XID 值等於 000A000D00000029的記錄,我們可以得到實際的語句UNDO_SQL。
最大的可用版本依賴於 UNDO_RETENTION。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8394333/viewspace-1000668/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle Database 10g新特性-閃回版本查詢OracleDatabase
- [閃回特性之閃回版本查詢]Flashback Version Query
- 閃回查詢之閃回版本查詢
- 【閃回特性之閃回查詢】使用閃回查詢(select as of)
- 閃回版本查詢與閃回事務查詢
- 閃回版本查詢操作
- Oracle 10G 新特性——閃回表Oracle 10g
- 閃回版本查詢技術:
- Oracle閃回查詢,閃回版本查詢與閃回事務查詢的使用區別總結Oracle
- Oracle 11G 閃回技術 閃回版本查詢和閃回事務查詢Oracle
- Oracle Database 10g新特性-閃回表OracleDatabase
- 閃回查詢之閃回表查詢
- oracle閃回版本查詢學習Oracle
- 閃回版本查詢(Flashback Version Query)
- Oracle 10g的閃回查詢概述Oracle 10g
- 閃回表、閃回查詢
- 【閃回特性之閃回事務查詢】Flashback Transaction Query
- 【備份恢復】閃回技術之閃回版本查詢
- Oracle 11G 閃回技術 使用閃回版本查詢Oracle
- Oracle 11g 閃回版本查詢Oracle
- 聊聊閃回版本查詢Flashback Version Query
- oracle flashback特性(1.2)--閃回查詢之As of scnOracle
- 閃回查詢
- 閃回(關於閃回查詢)
- 閃回刪除、閃回查詢
- 【Flashback】10G的新特性“閃回表”清除方法
- 基本閃回查詢和閃回表
- 閃回技術一:閃回查詢
- oracle flashback特性(1.1)--閃回查詢之As of timestampOracle
- oracle flashback特性(1.4)--閃回查詢之Transaction queryOracle
- Oracle9i,.10g 閃回查詢(flashback)Oracle
- oracle閃回查詢Oracle
- 閃回查詢(轉)
- 閃回查詢(1)
- oracle 閃回查詢Oracle
- 學習Oracle10g:閃回版本查詢Oracle
- DM7閃回與閃回查詢
- oracle flashback特性(1.5)--閃回查詢之制約因素Oracle