1

我们有一个遗留/生产数据库。它一直在持续开发和使用,支持一个已经发展了 10 多年的网站。该数据库由多种技术访问 - perl cgi、php 和 java webapps。

积累了很多垃圾。我希望进行一次重大的重构。我确信有些部分是完全遗留的(明显的是零行的表)。为了确定最常用的部分,我首选的策略是检测数据库,而不是检查大量潜在的访问组件。

oracle (10g) 是否有能力在每个表上放置一个触发器来报告访问它的时间和频率?有人可以指出我如何做到这一点或其他一些机制来实现相同的目标吗?

(请评论有关其他策略的建议,以帮助在此场景中进行数据库重构)。

4

2 回答 2

5

如果您只想知道访问了哪些表(或者即使您想了解更多详细信息),那么最简单的方法是使用 Oracle 的内置 AUDIT 功能。 了解更多

请记住,某些数据库对象可能只能每季度甚至每年使用一次。因此,您确实需要一套体面的文档或一套覆盖率 100% 的回归测试。当然,如果你有其中任何一个,你可能不会在这里问你的问题:)

于 2010-02-18T13:44:46.750 回答
1

如果您在 10g 上并为表打开了 TABLE MONITORING,则可以轻松访问 DBA_ALL_TAB_MODIFICATIONS。

它保存有关表修改的信息,包括自上次分析以来对表的插入、更新和删除的大致数量。

有关打开表监控和计算百分比变化的查询的一些信息在这里:链接

于 2010-02-18T14:27:18.000 回答