首页 > 数据库 > Oracle > 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博客 ” ,链接:https://blog.itpub.net/222350/viewspace-971065/ ,如需转载,请注明出处,否则将追究法律责任。