Java 如何为运行在jboss上并使用ojdbc14.jar的封闭源代码应用程序启用SQL跟踪
我有一个java应用程序(部署在Jboss/WebLogic上),我必须使用它,它使用ojdbc14.jar与oracle对话,这是一个整洁的应用程序,但文档很糟糕,很多魔术都发生在幕后。我需要跟踪所有SQL调用 我完全控制数据库、应用服务器、DBA权限、管理员权限以及一切 我该怎么做?我应该学习AOP吗?我应该研究Jdbc包装器吗。Java 如何为运行在jboss上并使用ojdbc14.jar的封闭源代码应用程序启用SQL跟踪,java,oracle,jdbc,Java,Oracle,Jdbc,我有一个java应用程序(部署在Jboss/WebLogic上),我必须使用它,它使用ojdbc14.jar与oracle对话,这是一个整洁的应用程序,但文档很糟糕,很多魔术都发生在幕后。我需要跟踪所有SQL调用 我完全控制数据库、应用服务器、DBA权限、管理员权限以及一切 我该怎么做?我应该学习AOP吗?我应该研究Jdbc包装器吗。 请提供一个hack。您可以使用类似JDBC代理驱动程序(其作用类似于装饰程序)的东西: P6Spy是一个开放源代码框架,应用程序可以截取和选择性地修改数据库语句。
请提供一个hack。您可以使用类似JDBC代理驱动程序(其作用类似于装饰程序)的东西: P6Spy是一个开放源代码框架,应用程序可以截取和选择性地修改数据库语句。P6Spy发行版包括P6Log,它拦截并记录使用JDBC的任何应用程序的数据库语句。此应用程序对于开发人员监视EJB服务器生成的SQL语句特别有用,使开发人员能够编写代码,从而在服务器上实现最高效率。P6Spy设计为在几分钟内安装,无需更改代码
另一个选项是在Oracle级别激活SQL日志记录(请参见和
DBMS\u MONITOR
)。以下是常见的选项:
- JDBC代理,如@Pascal提到的P6Spy
- 应用程序级日志记录。这可能/可能不可能。如果是Hibernate应用程序,您可以打开它
- TCP代理(我的最爱)。带上一个像or这样的工具,让你所有的流量都通过它。这是我的最爱,因为它捕捉了一切
- 以太网。WireShark可以向您显示流量-需要设置一些过滤器,但您不必修改应用程序配置
- Oracle日志记录。这可能需要大量服务器资源,并且需要一些设置
正如Pascal所说,DBMS_MONITOR也是单个会话监视的好工具:要添加另一个具有更广阔视角的选项,可以在应用程序服务器中使用JavaEE探查器,并将其配置为记录SQL语句
我个人使用过(免费评估限制为5个线程),效果非常好。这是一款休眠前的应用程序,尽管它现在已经混合使用了