p6spy我的理解就是:p6spy应用的数据源给劫持了,应用操作数据库其实在调用p6spy的数据源,p6spy

劫持到需要执行的sql或者hql之类的语句之后,他自己去调用一个realDatasource,再去操作数据库,

只要劫持到那些sql之后,能干的事情就很多了。

p6spy 可以输出日志到文件中、控制台、或者传递给 Log4j,而且还能配搭 SQL Profiler 或 

IronTrackSQL 图形化监控 SQL 语句,监测到哪些语句的执行是耗时的,逐个优化。关于与 SQL 

Profiler 或 IronTrackSQL 的配合使用可参数文件的链接。 

p6spy在sourceforge上下载:http://sourceforge.net/projects/p6spy/?source=dlp

p6spy的weblogic配置:

1、首先通过上面链接下载P6spy的jar包

wKioL1XT6d_RfrbCAABTCognnL0062.jpg

2、把这些jar包放到weblogic的domian的lib目录,例如D:\bea\user_projects\domains\base_domain1\lib将

wKioL1XT6jjhSWpvAAGEnpUrLmU457.jpg

3、由于weblogic的应用都需要配置数据源(rcu),所以会在domian的config目录下生成对应的jdbc的XML的配置,我们需要把数据源jdbc的驱动更改成p6spy的驱动。

wKioL1XT6x7x1Lp3AAE4TVLGcAQ707.jpg

下面是具体代码:

<?xml version='1.0' encoding='UTF-8'?>
<jdbc-data-source xmlns="http://www.bea.com/ns/weblogic/jdbc-data-source" xmlns:sec="http://www.bea.com/ns/weblogic/90/security" xmlns:wls="http://www.bea.com/ns/weblogic/90/security/wls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/ns/weblogic/jdbc-data-source http://www.bea.com/ns/weblogic/jdbc-data-source/1.0/jdbc-data-source.xsd">
  <name>数据源的名称</name>
  <jdbc-driver-params>
    <url>jdbc:oracle:thin:@192.168.0.23:1521:数据库实例</url>
    <driver-name>com.P6Driver</driver-name>
    <!-- 把上面这行改成p6的驱动即可-->
    <properties>
      <property>
        <name>用户名</name>
        <value>表空间</value>
      </property>
    </properties>
    <password-encrypted>数据库密码</password-encrypted>
  </jdbc-driver-params>
  <jdbc-connection-pool-params>
    <initial-capacity>1</initial-capacity>
    <max-capacity>15</max-capacity>
    <capacity-increment>1</capacity-increment>
    <test-table-name>SQL SELECT 1 FROM DUAL</test-table-name>
    <statement-cache-size>10</statement-cache-size>
    <statement-cache-type>LRU</statement-cache-type>
  </jdbc-connection-pool-params>
  <jdbc-data-source-params>
    <jndi-name>nstc/jdbc/WebData</jndi-name>
    <global-transactions-protocol>TwoPhaseCommit</global-transactions-protocol>
  </jdbc-data-source-params>
</jdbc-data-source>

4、发布执行weblogic的应用,当应用需要调用数据源访问数据库时,即可被p6拦截sql语句,并在自己的p6控制台展示相对应的sql,便于调错。

wKioL1XT7GmxZJP8AAURpy5b4po557.jpg总结

P6spy是一个很好用的开源的sql拦截监控工具,通过解析sql语句可以让我们更清晰的分析错误,从而高效的开发程序。它能支持目前大多数的orm及其他主流框架,SSH,SSI,springMVC等,主流的应用服务器也都支持,如tomcat,weblogic,jboss,WebSphere等。这次是在weblogic上面配置的,只是对p6的初步理解,后面会继续研究在其他服务器和框架上的配置。