我有以下查询来跟踪当前日期修改了哪些表:
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;`
结果
如您所见,查询工作正常,但我想添加更多复杂性,例如添加字段“LAST_CHANGE_TYPE”,显示最新流程中的最后交易类型(添加、删除或修改)。
另一个对监控我的 DW 很有用的查询也会很好。
像监控所有可能的操作一样,跟踪用户做了什么,例如:
- 如果可能,则删除约束指定什么样的约束
- 修改包体
列出操作时,有必要查看每个操作的用户和日期。
| 对象 |类型 | 来源 | 操作类型 | 用户 | 日期 |
| 约束 | PK | 表 A | 下降 | 斯科特 | 2011 年 11 月 11 日|
| 表 | 表 | 表 B | 改变 | 人力资源 | 05/05/2002|
目前对所有建议开放
正如贾斯汀所说, all_tab_modifications 不是自上次收集统计信息以来对表的修改次数的实时准确计数
我建议您跟踪此类事件,请参阅以下 链接
请参阅 Oracle Database 11g:实时 SQL 监控
Oracle 数据库 11g 中引入的实时 SQL 监控提供了一种非常有效的方法来识别资源密集型长时间运行和并行 SQL 语句的运行时性能问题。交互式企业管理器屏幕使用新的、细粒度的 SQL 统计信息显示 SQL 执行的详细信息,这些统计信息开箱即用,不会对生产系统造成性能损失。执行计划的每个步骤的统计信息都通过关键性能指标进行跟踪,包括运行时间、CPU 时间、读写次数、I/O 等待时间和其他各种等待时间。这使 DBA 能够比以前更深入地分析 SQL 执行,并为受监控的 SQL 语句决定最合适的调优策略。