如何跟踪 DML 和 DDL 日常事件

Bil*_*lli 5 oracle monitoring activity-monitor

我有以下查询来跟踪当前日期修改了哪些表:

SELECT TABLE_OWNER, 
       TABLE_NAME, 
       INSERTS,
       UPDATES,
       DELETES,
       TIMESTAMP AS `LAST_CHANGE`
FROM  ALL_TAB_MODIFICATIONS
WHERE TO_CHAR(TIMESTAMP,'DD/MM/YYYY') = TO_CHAR(sysdate,'DD/MM/YYYY') 
ORDER BY LAST_CHANGE DESC;`
Run Code Online (Sandbox Code Playgroud)

结果

在此处输入图片说明

如您所见,查询工作正常,但我想添加更多复杂性,例如添加一个字段“LAST_CHANGE_TYPE”,显示最新进程中的最后一个事务类型(添加、删除或修改)。

另一个对监视我的 DW 有用的查询也很好。

就像监控所有可能的操作一样,跟踪用户所做的事情,例如:

  • 删除约束,如果它可能指定什么样的约束
  • 修改包正文

列出操作后,有必要查看每个操作的用户和日期。

| 对象 |类型 | 来源 | 操作类型 | 用户 | 日期 |

| 约束 | PK | 表A | 下降 | 斯科特 | 11/11/2011|

| 表 | 表 | 表 B | 改变 | 人力资源 | 05/05/2002|

目前对所有建议开放

小智 1

正如 Justin 所说,all_tab_modifications 并不是自上次收集统计信息以来对表的修改次数的实时准确计数

我建议您跟踪此类事件,请参阅以下 链接