Oracle中,能否获取当前名空间下,各表的最后更新时间,所谓更新就是说该表有添加编辑删除操作。

解决方案 »

  1.   

    [PHP]
    select table_name,to_char(LAST_ANALYZED,'yyyy-mm-dd,hh24:mm:ss') from user_tables;
    [/PHP]
      

  2.   

    如果是10g的话可以使用ORA_ROWSCN。
    如:
    select scn_to_timestamp(max(ORA_ROWSCN)) from tjincome就能够得到最后提交tjincome事务的时间。
        ORA_ROWSCN是根据系统最后更新时间来进行计算。ORA_ROWSCN在默认情况下是采用数据块为单位的,也就是一个数据库块(block)上共享一个ORA_ROWSCN,当数据更新的时候,这个block快的ORA_ROWSCN就会自动更新。所以你表中的数据可能很多行都有相同的ORA_ROWSCN值。
        如果想每一行都有其独立的值,可以利用Oracle 9i提供的ROWDEPENDENCIES建表关键字,这个关键字在Oracle9i中是为了增加行依赖性跟踪特性的,支持推进复制。在 Oracle10g中有可以用来做行级别的ORA_ROWSCN用了。用这个关键字建表以后,在每行会增加一个隐藏的COLUMN,所以每行会增加6个 byte的开销,如:create table ttt (id number) rowdependencies
      

  3.   

    当然要获得当前用户下的所有表就是:
    select * from user_all_tables;
      

  4.   

    To:skyspark(星)
    多谢指教,可为什么查出来LAST_ANALYZED有的有时间,有的为空,我手工操作一个表,再查也不见有改动,还有什么其它设置吗?
    TO:shangqiao(伤桥)
    多谢兄弟,不过我现在是9i,10g的功能暂时用不上。非常感谢!
      

  5.   

    参考一下:
    http://www.qqread.com/oracle/2006/08/s380188052.html
      

  6.   

    To:yugas(yuga) 
     多谢指点,触发器对我来说不是太好的选择,数据库中有一千多张表,总不能建一千多个触发器吧,难道没有更好的办法?