伪列Ora_rowscn

前段时间同事问我能否查询表中每条记录的更新时间,这张表没有用于Sysdate的Date的字段, 使我想起Ora_rowscn这个伪列
1、查询Ora_rowscn
      select ora_rowscn,t.*  from tab_name;
2、Ora_rowscn分类
      select DEPENDENCIES from dba_tables 可以看出这里有两种值,
       分别为:  ROWDEPENDENCIES 和NOROWDEPENDENCIES,
       解释:当你更新DML SQL的时候,如果采用的是ROWDEPENDENCIES 的方式,那么在更新数据的时候,同时更新SQL影响的数据的伪列Ora_orwscn,如果采用的是NOROWDEPENDENCIES的方式,那么在更新数据的时候,同时更新SQL影响数据的所在的Data Block的伪列Ora_orwscn,也就是说整个Block的所有记录都更新成同一个相同的scn值.
3、Ora_rowscn的用途
      我们知道可以把scn转为Date,也就该条记录更新的对应的数据库时间
     select scn_to_timestamp(ora_rowscn) ,t.* from tab_name;
     这里可能碰到如下的错误,那是因为用于换算的scn值,oracle只能认识到距今5天的数据,超过5天,是不能换算出来的.
     SQL> SELECT SCN_TO_TIMESTAMP(ORA_ROWSCN) FROM dept;
SELECT SCN_TO_TIMESTAMP(ORA_ROWSCN) FROM dept
*
ERROR at line 1:
ORA-08181: specified number is not a valid system change number
ORA-06512: at "SYS.SCN_TO_TIMESTAMP", line 1



至今还没好的方法,能查询每条记录更新的时间,如有好方法的望告知下,Thanks!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26634508/viewspace-732341/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26634508/viewspace-732341/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值