【发布时间】:2016-12-14 17:25:41
【问题描述】:
我有一个相当大的数据库(大约 1100 个表)。我有兴趣拍摄数据库的快照,在应用程序中做一些工作,拍摄另一个快照并比较两者以确定哪些表被触及。我正在为 Oracle 使用 TOAD。这样的事情是否可能,或者有更好的方法吗?
【问题讨论】:
我有一个相当大的数据库(大约 1100 个表)。我有兴趣拍摄数据库的快照,在应用程序中做一些工作,拍摄另一个快照并比较两者以确定哪些表被触及。我正在为 Oracle 使用 TOAD。这样的事情是否可能,或者有更好的方法吗?
【问题讨论】:
我并没有真正使用 TOAD,但我认为它与您想要什么关系不大。
假设只有一个应用程序正在运行,我认为您可以通过检查 DBA_TAB_MODIFICATIONS 来检查哪些表被访问,这些表需要设置 MONITORING 属性。请参阅ALL_TAB_MODIFICATIONS 的文档,然后您可以将其与在要监视的表上启用细粒度审计相结合。这将允许您监视 INSERT、UPDATE 和 DELETE 查询,查看绑定变量等等。查看文档About Fine-Grained Auditing 你需要有企业版才能使用细粒度审计
您需要还原应用程序所做的更改吗?
如果是这样,恢复更改的最佳和最简单的方法是 Oracle 闪回技术。它只是允许您根据闪回保留目标检查表的先前状态。同样,文档在 Using Flashback Database and Restore Points 和 Oracle Flashback query 主题上的内容非常多,闪回技术是必须从 Oracle 购买的额外功能。
理论上,您也可以通过执行数据库时间点恢复来做到这一点,这是通过 RMAN 检查文档以获取有关此 Database Backup and Recovery Basics 10g 的完整信息完成的.
我认为解决您的问题的最佳方法是在应用程序端添加或启用 SQL 查询日志记录。
【讨论】: