例如有表a,往里插入了10条数据或者是更新了某一条或几条数据,我怎么知道哪些是新插入的或者哪些是更新的,更新了哪几个字段?

解决方案 »

  1.   

    查redo日志
    或者
    用最简单的方式
    select * from T1 as of timestamp to_timestamp('2017-12-04 22:10:00','YYYY-MM-DD HH24:MI:SS');--时间自己定,可以查看当时的表的情况 对比下就可以了。
      

  2.   

    ora_rowscn能获取多久之前的数据变化呢,2个小时后ora_rowscn获取的时间就不准了
      

  3.   

    短时间的查询,可以参考一下 2# 的建议,这个依赖于 UNDO ;如果长时间的记录这些数据,可以用触发器,把变化前的数据,备份到另一张表中
      

  4.   

    Oracle日志挖掘工具也可以查到对表的所有的操作,可以在网上搜索下logminer了解使用方法。
      

  5.   

    可以依赖2#,或者业务自己实现,比如表里面加入一个最近操作类型(update,insert),一个最近操作时间
      

  6.   

    1、通过flashback,闪回可以查看短时间的内容
    2、通过logminer分析日志,可以查看
    3、通过建立触发器,将变化的内容写到指定表中查看
      

  7.   

    都说的好高深,
    1.在表上冗余两个createddate,modifieddate字段,就可以定位数据是进行了插入操作还是更新操作
    2.如果要定位到更新字段,建议触发器