Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为运行在jboss上并使用ojdbc14.jar的封闭源代码应用程序启用SQL跟踪_Java_Oracle_Jdbc - Fatal编程技术网

Java 如何为运行在jboss上并使用ojdbc14.jar的封闭源代码应用程序启用SQL跟踪

Java 如何为运行在jboss上并使用ojdbc14.jar的封闭源代码应用程序启用SQL跟踪,java,oracle,jdbc,Java,Oracle,Jdbc,我有一个java应用程序(部署在Jboss/WebLogic上),我必须使用它,它使用ojdbc14.jar与oracle对话,这是一个整洁的应用程序,但文档很糟糕,很多魔术都发生在幕后。我需要跟踪所有SQL调用 我完全控制数据库、应用服务器、DBA权限、管理员权限以及一切 我该怎么做?我应该学习AOP吗?我应该研究Jdbc包装器吗。 请提供一个hack。您可以使用类似JDBC代理驱动程序(其作用类似于装饰程序)的东西: P6Spy是一个开放源代码框架,应用程序可以截取和选择性地修改数据库语句。

我有一个java应用程序(部署在Jboss/WebLogic上),我必须使用它,它使用ojdbc14.jar与oracle对话,这是一个整洁的应用程序,但文档很糟糕,很多魔术都发生在幕后。我需要跟踪所有SQL调用

我完全控制数据库、应用服务器、DBA权限、管理员权限以及一切

我该怎么做?我应该学习AOP吗?我应该研究Jdbc包装器吗。
请提供一个hack。

您可以使用类似JDBC代理驱动程序(其作用类似于装饰程序)的东西:

P6Spy是一个开放源代码框架,应用程序可以截取和选择性地修改数据库语句。P6Spy发行版包括P6Log,它拦截并记录使用JDBC的任何应用程序的数据库语句。此应用程序对于开发人员监视EJB服务器生成的SQL语句特别有用,使开发人员能够编写代码,从而在服务器上实现最高效率。P6Spy设计为在几分钟内安装,无需更改代码


另一个选项是在Oracle级别激活SQL日志记录(请参见和
DBMS\u MONITOR
)。

以下是常见的选项:

  • JDBC代理,如@Pascal提到的P6Spy
  • 应用程序级日志记录。这可能/可能不可能。如果是Hibernate应用程序,您可以打开它
  • TCP代理(我的最爱)。带上一个像or这样的工具,让你所有的流量都通过它。这是我的最爱,因为它捕捉了一切
  • 以太网。WireShark可以向您显示流量-需要设置一些过滤器,但您不必修改应用程序配置
  • Oracle日志记录。这可能需要大量服务器资源,并且需要一些设置

作为一名Oracle人员,我只需要打开数据库跟踪

当然,在10g中已经发生了很多跟踪——自动工作负载存储库(AWR)可能已经在记录重要的SQL语句

如果使用Enterprise manager,则可以在数据库中看到实时事件:


正如Pascal所说,DBMS_MONITOR也是单个会话监视的好工具:

要添加另一个具有更广阔视角的选项,可以在应用程序服务器中使用JavaEE探查器,并将其配置为记录SQL语句


我个人使用过(免费评估限制为5个线程),效果非常好。

这是一款休眠前的应用程序,尽管它现在已经混合使用了