立夏诗词大全:P6Spy的应用实践

来源:百度文库 编辑:中财网 时间:2024/04/29 14:32:29

oracle 学习(2)-sql语句拦截(跟踪)  

2011-04-17 23:31:28|  分类: 工作学习 |  标签:数据库  oracle   |字号 订阅

一、问题的引出

在我们 Java 开发应用程序的过程中,难免会碰到系统的性能问题,特别在企业应用的开发过程中,都会与数据库进行打交道。当我们碰到数据库性能时,最有效的就是直接跟踪每一个 SQL 语句的执行情况,SQL 语句的优化、索引的优化往往也是最容易取得最直接的效果的。另外,作为测试人员,也有了解SQL语句执行的需求。那么在只执行页面操作,就能获得相关操作具体执行的SQL语句呢?由此,我们引出了SQL语句跟踪(拦截)问题。此专业介绍P6Spy 这个剖析工具,看它是如何无侵入性地进行数据库操作的监控与剖析。

二、 问题的进一步理解

软件的架构一般为: Clients->Application Servers->Database Servers, 其中客户端就是大量的用户,它们经过TCP(其上的协议可以为:HTTP, RMI, IIOP,Texedo, CICS等)连接到Application Servers;Application Servers在于千兆的速度与数据库进行连接(传输的则为SQL)。

三、P6spy的介绍

P6Spy 是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架。通过 P6Spy 我们可以对 SQL 语句进行拦截,相当于一个 SQL 语句的记录器,这样我们可以用它来作相关的分析,比如性能分析。P6Spy 用 Log4J 来记录 JDBC 调用的日记信息。

1.      P6Spy架构原理

简单地讲,我们可以认为 P6Spy 就是一个代理(Proxy),它只做了一层对 JDBC 驱动的拦截,然后转发出去,这样的设计与实际的应用程序没有任何的耦合性,除了在配置中将驱动程序改成 P6Spy 的拦截驱动外,程序其他地方并不需要做任何的改变。这层拦截器除了可能会给系统带来略微的性能下降外,对程序其他方面没有任何的影响。而相对于这一点点的性能下降,在开发环境中对于开发人员来说是无法感觉到,相比它所带来的好处,完全可以忽略不计。

P6Spy 支持 WebSphere、WebLogic、JBoss、Resin 和 Tomcat 等绝大多数的应用服务器。

 图 1. P6Spy 对数据库进行拦截监控的处理过程

2.      使用步骤

首先,你的应用系统应当是基于数据库的,然后你需要去获取 P6Spy 相关的文件。

下面介绍 P6Spy 的安装与使用的详细操作过程:

  1. 下载P6Spy 的文件包,也可以下载它的源文件包来研究;
  2. 把 P6Spy 的 jar 包 p6spy.jar 放到 CLASSPATH 中,如果是 Web 应用程序则放在 YourWebApp/WEB-INF/lib/ 目录下;
  3. 把 spy.properties 放到 CLASSPATH 目录下,如果是 Web 应用程序放在 YourWebApp/WEB-INF/classess/ 目录下,注意不是 lib/ 目录
  4. 修改你应用系统中的数据库驱动名称为 P6Spy 的驱动程序名称 com.p6spy.engine.spy.P6SpyDriver 其它的全部使用默认值,暂时先都不用修改;
  5. 打开配置文件 spy.properties 文件,找到 realdriver,把它的值改为你的应用系统的真正的数据库驱动名称;

找到 # realdriver=oracle.jdbc.driver.OracleDriver 把前面的 # 注释符去掉,因为我们用的是 Oracle 数据库,即改为
realdriver=oracle.jdbc.driver.OracleDriver
同时把 realdriver=org.gjt.mm.mysql.Driver 用 # 注释掉,即改为
# realdriver=org.gjt.mm.mysql.Driver

运行你的应用程序或 Web 应用程序,可以在 spy.log 里看到 P6Spy 监测到的 SQL 详细的执行与操作的记录信息了,包含有完整的 SQL 执行参数。

四、应用实践

利用Tomcat 做P6Spy的应用实践练习

编写一个简单的web应用服务,利用jsp脚本,编写一个通过表单提交查询数据库表中的数据,并显示在页面中
A. 01.jsp 通过表单提交查询条件给testoracle.jsp;
B. Testoracle.jsp通过jdbc操作数据库qc_db 中的tdz表

 脚本文件01.jsp 

利用表单传递数据


这里演示的是利用p6spy查询应用程序执行的sql语句,执行后可打开c:/spy.log查看sql语句


查询的表是:qc_db.tdz


调用路径:01.jsp --》testoracle.jsp


================================================



 

输入序号进行查询:
 
 



    
    
 




 脚本文件01.jsp<%@ page contentType="text/html;charset=gb2312"%>  

<%@ page import="java.sql.*"%>

  

  

<%Class.forName(" oracle.jdbc.driver.OracleDriver ").newInstance();

//这里就是将来需求配置更改的地方,由原来的jdbc 驱动,修改为p6spy驱动//com.p6spy.engine.spy.P6SpyDriver

String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为你的数据库的SID

String user="qc_db";

String password="qcdb";

String id= request.getParameter("id");

  out.println("你输入的序号是:"+id+"
");

Connection conn= DriverManager.getConnection(url,user,password);  

Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

String sql2="insert into test_table values('1','luyx')";  

stmt.executeUpdate(sql2);  

conn.commit();

String sql="select * from tdz where  vjsztm='"+id+"'";  

ResultSet rs=stmt.executeQuery(sql); 

 

   while(rs.next())

   {%>   您的第一个字段内容为:<%=rs.getString(1)%>   您的第二个字段内容为:<%=rs.getString(2)%>   <%}%>   <%out.print("数据库操作成功,恭喜你");%>   <%rs.close();   stmt.close();   conn.close();   %>  QC_DB.TDZ表结构

   -- Create table
create table TDZ
(
  VJSZTM VARCHAR2(100),
  VXM    VARCHAR2(100),
  VXB    VARCHAR2(100),
  VZY    VARCHAR2(100),
  VBJ    VARCHAR2(100),
  VDZLX  VARCHAR2(100)
)
创建表后并插入一些数据

1.       准备好以上文件和数据后,在Tomcat下下发布jsp应用服务。输入查询条件,能够正常运行

2.       通过配置“P6Spy介绍—使用步骤”的方法进行配置,注意将log文件放在C盘下(当然你也可以更换存放地址),重启Tomcat服务。

3.       进行查询,你则可在log文件中看到类似以下的日志内容

论文的实践价值或应用前景 自考计算机应用本科的实践课有哪些 学习护理伦理学的必要性及如何应用到将来的实践中 党的纪律和组织原则在大学生活中的实践与应用 关于《生物酶试剂在生产实践中应用》的论文开头怎么写 哪里有提供自考专科计算机及应用专业的实践培训 计算机等级考试一级证书是不是能代替自考“计算机应用基础”的理论以及实践考?? 在行政管理专业中计算机应用的实践考核具体考什么? 【②○○分悬赏~!】谁有《ASP工程应用与项目实践》的光盘 【②○○分悬赏~!】谁有《ASP工程应用与项目实践》的光盘内容?? 【②○○分悬赏~!】谁有《ASP工程应用与项目实践》的光盘内容? 管理系统中计算机的应用是都要参加实践考试吗? 有考过 管理系统中计算机应用(实践) 的福建考生请进 谁能举出双曲面在生活实践中应用的实例吗? 求《物流设备应用》实践报告! 世界历史发展的普遍规律的相互性及其理论上的内在互动关系原理于实践应用分别是什么 自考本科<管理系统中计算机应用>的实践环节的单科合格证有时间限制吗? 【②○○分悬赏~!】谁有《ASP工程应用与项目实践》的随书光盘呢?? 请问哪里可以免费下载《网络环境下教育管理的实践与应用》这篇论文 有谁知道北京市高自考“管理系统中计算机应用”上机实践题目及相应的运行程序 ★★★★请教考过计算机及其应用专业实践课程的网友!!★★★ 请问怎样才能把思维导图应用到实践中去,我觉得想象很费尽,怎么才能轻松不费力的应用思维导图啊 急需关于酒店实践的实践报告 试述血乳酸在运动实践中的应用及其意义?