ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 伪列Ora_rowscn

伪列Ora_rowscn

原创 Linux操作系统 作者:Xuan_Baby 时间:2012-06-09 09:57:30 0 删除 编辑

前段时间同事问我能否查询表中每条记录的更新时间,这张表没有用于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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-03-09

  • 博文量
    12
  • 访问量
    30526