如何使用Oracle 10g获取表访问指标?

如何使用Oracle 10g获取表访问指标?,oracle,testing,monitoring,legacy,instrumentation,Oracle,Testing,Monitoring,Legacy,Instrumentation,我们有一个遗留/生产数据库。作为一个经过10年发展的网站,它一直在不断开发和使用。数据库可以通过多种技术访问——perl cgi、php和java webapps 积存了大量的原油。我希望进行一次重大的重构。我确信有些部分是完全遗留的,最明显的部分是零行的表。要确定哪些部分最常用,我首选的策略是对数据库进行检测,而不是通过大量潜在的访问组件 oracle 10g是否有能力在每个表上设置触发器,以报告访问它的时间和频率?有人能告诉我如何做这个或其他机制来实现相同的目标吗 请对本系列中帮助数据库重构

我们有一个遗留/生产数据库。作为一个经过10年发展的网站,它一直在不断开发和使用。数据库可以通过多种技术访问——perl cgi、php和java webapps

积存了大量的原油。我希望进行一次重大的重构。我确信有些部分是完全遗留的,最明显的部分是零行的表。要确定哪些部分最常用,我首选的策略是对数据库进行检测,而不是通过大量潜在的访问组件

oracle 10g是否有能力在每个表上设置触发器,以报告访问它的时间和频率?有人能告诉我如何做这个或其他机制来实现相同的目标吗


请对本系列中帮助数据库重构的其他策略提出建议。

如果您只想知道访问了哪些表,或者甚至想了解更多详细信息,那么最简单的方法就是使用Oracle的内置审计功能


请记住,某些数据库对象只能每季度甚至每年使用一次。所以你真的需要一套像样的文档或者一套100%覆盖率的回归测试。当然,如果您有这两个表中的任何一个,您可能不会在这里问您的问题:

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


请记住,某些数据库对象只能每季度甚至每年使用一次。所以你真的需要一套像样的文档或者一套100%覆盖率的回归测试。当然,如果您有这两个选项中的任何一个,您可能不会在这里问您的问题:

如果您使用的是10g,并且启用了表监控功能,那么您可以轻松访问DBA\u ALL\u TAB\u修改

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


关于打开表格监控的一些信息和计算百分比变化的查询如下:

如果您在10g上,并且为表格打开了表格监控,您可以轻松访问DBA\u ALL\u TAB\u修改

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


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

+1不要以为某个表在过去X段时间内没有被访问,将来就不会被访问。也不要以为一个未使用的表没有被pl/sql引用。一些PL/SQL可能会避免类型声明,而倾向于使用%ROWTYPE语法声明变量或集合。DBA_DEPENDENCIES视图可以帮助显示存在哪些静态依赖项;除了扫描DBA_源代码并祈祷找到动态依赖项之外,没有任何帮助。+1不要因为某个对象在过去的X个时间段内没有被访问就认为它将来不会被访问。也不要假设一个未使用的表没有被pl/sql引用。一些PL/SQL可能会避免类型声明,而倾向于使用%ROWTYPE语法声明变量或集合。DBA_DEPENDENCIES视图可以帮助显示存在哪些静态依赖项;除了扫描DBA_源代码并祈祷找到动态依赖项之外,别无帮助。