10g中的新偽列ORA_ROWSCN總結
10g中的新偽列ORA_ROWSCN總結
這個偽列是10g中引進的,在oracle的官方文件上說的是:這個偽列是為了提供每一行最近修改的SCN的上限。
For each row, ORA_ROWSCN returns the conservative upper bound system change number (SCN) of the most recent change to the row. |
不過oracle隨後也說這是一行最新修改的大致SCN的確定。為什麼是這樣的哪?Oracle解釋說是這個SCN的跟蹤是對這個行駐留塊的事務提交的SCN而得到的。
This pseudocolumn is useful for determining approximately when a row was last updated. It is not absolutely precise, because Oracle tracks SCNs by transaction committed for the block in which the row resides. |
如果需要更為精細,精確的每一行的SCN的話,就需要在新增表的時候新增一個行級獨立的跟蹤。例如:
CREATE TABLE ... NOROWDEPENDENCIES | ROWDEPENDENCIES |
同時在使用這個偽列的時候,有一定的限制:
1、不能用於查詢檢視使用,但是可以在DML語句的where子句上使用
Select × from *** |
Where ora_rowscn =*** |
2、不能用於flashback。
這裡解釋一下為什麼這個偽列會有誤差?
其實原因很簡單,以為Oracle是透過讀資料塊中的ITL上的SCN來返回的數值。
做個試驗。
新增一個表
SQL> create table t as select rownum a from all_objects where rownum <11; Table created SQL> select a,ora_rowscn from t; A ORA_ROWSCN ---------- ---------- 1 4926419 2 4926419 3 4926419 4 4926419 5 4926419 6 4926419 7 4926419 8 4926419 9 4926419 10 4926419 10 rows selected SQL> |
這時候會發現這10行都是放在一個資料塊中。而且SCN都是一樣的
SQL> select a,ora_rowscn,rowid from t; A ORA_ROWSCN ROWID ---------- ---------- ------------------ 1 4926419 AAANNQAAEAAAAA8AAA 2 4926419 AAANNQAAEAAAAA8AAB 3 4926419 AAANNQAAEAAAAA8AAC 4 4926419 AAANNQAAEAAAAA8AAD 5 4926419 AAANNQAAEAAAAA8AAE 6 4926419 AAANNQAAEAAAAA8AAF 7 4926419 AAANNQAAEAAAAA8AAG 8 4926419 AAANNQAAEAAAAA8AAH 9 4926419 AAANNQAAEAAAAA8AAI 10 4926419 AAANNQAAEAAAAA8AAJ 10 rows selected SQL> |
修改一個行的數值。
SQL> update t set a=11 where a=1; 1 row updated SQL> commit; Commit complete |
再次查詢,會發現所有的行都改變了。
SQL> select a,ora_rowscn,rowid from t; A ORA_ROWSCN ROWID ---------- ---------- ------------------ 11 4926492 AAANNQAAEAAAAA8AAA 2 4926492 AAANNQAAEAAAAA8AAB 3 4926492 AAANNQAAEAAAAA8AAC 4 4926492 AAANNQAAEAAAAA8AAD 5 4926492 AAANNQAAEAAAAA8AAE 6 4926492 AAANNQAAEAAAAA8AAF 7 4926492 AAANNQAAEAAAAA8AAG 8 4926492 AAANNQAAEAAAAA8AAH 9 4926492 AAANNQAAEAAAAA8AAI 10 4926492 AAANNQAAEAAAAA8AAJ 10 rows selected SQL> |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/222350/viewspace-971065/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- rman總結(包含10g rman中的新特性)
- 總結偽類與偽元素
- 偽元素和偽類的區別總結
- slub機制偽總結
- JavaScript陣列方法總結(中)JavaScript陣列
- 偽分散式hdfs的配置(個人總結)分散式
- js中陣列常用方法總結JS陣列
- Android 6.0 中的新技術總結Android
- CSS的總結(選擇器,偽類等…)CSS
- css中連結偽類的順序CSS
- 10g閃回總結
- ORACLE 中ROWNUM(偽列)用法解析(轉載)Oracle
- web應用中通過偽列排序Web排序
- rownum偽列的應用
- 10G RAC: srvctl 命令總結
- js偽陣列JS陣列
- oracle偽列rownumOracle
- Oracle level偽列Oracle
- JavaScript基礎總結(三)——陣列總結JavaScript陣列
- oracle 10g rac srvctl 命令總結Oracle 10g
- 所有陣列的方法(api)總結陣列API
- 陣列中常用的方法總結陣列
- js中this的總結JS
- ORACLE Flashback Query偽列Oracle
- 在Oracle 10g和9i上對於開發者一些新的特性的總結Oracle 10g
- JS陣列方法總結JS陣列
- JS陣列API總結JS陣列API
- 列舉簡單總結
- javascript陣列方法總結JavaScript陣列
- 新寫法-slide的總結IDE
- C# 6.0 的新特性總結C#
- row-level dependency tracking (10g new feature) SCN_TO_TIMESTAMP ora_rowscn
- 陣列的三種宣告方式總結、多維陣列的遍歷、Arrays類的常用方法總結陣列
- css3 中的偽類和偽元素CSSS3
- ORACLE 10G中閃回彙總Oracle 10g
- 列許可權的一點總結!
- 移除陣列 arr 中的所有值與 item 相等的元素。不要直接修改陣列 arr,結果返回新的陣列陣列
- 關於10G DATAGUARD實施的幾點總結