暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 需要一个查询来识别从应用程序表中选择、插入、更新和删除的数量

askTom 2018-08-28
211

问题描述

嗨,

我们的一位客户想知道如何在60或90天之前在具有时间戳详细信息的应用程序表中获取DDL DML计数。

请提供一些查询以获取这些详细信息。他们不想启用审计,这是可能的,而不启用审计。


提前谢谢,

专家解答

您可以使用闪回查询查看一段时间内对表的更改。“版本之间” 子句允许您在定义的时间段内查看对表的更改:

create table t (
  c1 int
);

exec dbms_lock.sleep ( 5 );

insert into t values ( 1 );
insert into t values ( 2 );

commit;

update t set c1 = 3;

commit;

exec dbms_lock.sleep ( 5 );

delete t;

commit;

exec dbms_lock.sleep ( 5 );

select t.*, versions_operation, versions_starttime, versions_endtime
from   t versions between timestamp sysdate - interval '15' second and systimestamp
order  by versions_starttime;

C1   VERSIONS_OPERATION   VERSIONS_STARTTIME     VERSIONS_ENDTIME       
   2 I                    29-AUG-2018 05.57.16   29-AUG-2018 05.57.19   
   1 I                    29-AUG-2018 05.57.16   29-AUG-2018 05.57.19   
   3 U                    29-AUG-2018 05.57.19   29-AUG-2018 05.57.25   
   3 U                    29-AUG-2018 05.57.19   29-AUG-2018 05.57.25   
   3 D                    29-AUG-2018 05.57.25                    
   3 D                    29-AUG-2018 05.57.25   
复制


但是!

这使用撤消来显示更改。因此,只要您的undo_retention参数设置为,您就只能保证能够及时查看。默认为900秒 (15分钟)。所以你不太可能在60天前看到...

如果您需要更长的保留时间,则可以使用闪回数据存档。这允许您配置存储历史记录的时间。您可以在以下位置阅读更多信息:

https://oracle-base.com/articles/12c/flashback-data-archive-fda-enhancements-12cr1

或者你可以推出自己的解决方案。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论