2010-06-30 86 views
0

我希望找到一个工具,可以检测sybase数据库中冗余/未使用的表和存储过程。可以检测冗余数据库表的工具

从使用JDBC访问表和存储过程的Java应用程序访问数据库。

有400个表和类似数量的存储过程。

有什么建议吗?

回答

1

假设您使用ASE 12.5+,另一种方法是使用MDA表。我认为其中的一个表monOpenObjectActivity会跟踪所有对象的使用情况。您可以针对此表运行查询以查找索引,表格和sprocs的使用频率。如果你能找到解决问题的方法,那么它非常有用。

第一步是安装表格,因为它们在默认情况下不存在。最好的指南在这里:http://www.sypron.nl/mda.html。在该页面上还有一些示例查询,我认为标题为“在当前数据库中查找看似未使用的索引”的那个是你的一个。这个查询可以很容易地适用于报告所有对象的所有用法。

+0

感谢您的亚当。我已经在这里与DBA讨论过了,我们已经解决了这个问题。我们计划启用对我们稍后可以分析的表格的审计。 – 2010-07-02 08:20:57

0

假设表名在应用程序中都是硬编码的并且不是动态构建的,您可以搜索java代码和存储过程以查找名称400表。在没有出现的那些中,您需要先验证从使用过的表中没有FK引用,然后再将它们视为删除的候选对象。大多数数据库客户端工具(例如DBVisualizer)将允许您在表格的基础上查找这些工具。甚至可能有一种方法可以将其作为查询来发布,但我对Sybase确切地不太熟悉。

1

唯一确定应用程序未使用的方法是设置日志记录并通过应用程序的完整运行来运行。这可以从客户端和/或服务器完成。

您可以使用log4jdbc记录JDBC活动,或者也可以让DBA在该spid上设置一个跟踪。

而且一位优秀的DBA有权在生产中安排一项工作,收集定期快照以查看正在发生的事情,这可能会帮助您根据受监视的内容。

确定要删除的候选对象后,您可以创建一个ObjectLog表并脚本化表中的触发器,并在每个proc中调用以插入到该表中。在生产中运行一段时间会让你有信心放弃。

+0

谢谢你这个亚当。我已经在这里与DBA讨论过了,我们已经解决了这个问题。我们计划启用对我们稍后可以分析的表格的审计。 – 2010-07-02 08:20:25