Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->数据库应用 ->SQL Server ->正文

怎么样获得应用程序所执行的SQL语句

来源:赛迪网技术社区  作者:Webmaster 时间:2007-04-17 点击: [收藏] [投稿]

我们在确定应用程序性能的时候,更多地会关注其中SQL语句的执行情况。通常应用的性能瓶颈会在数据库这边,因此数据库的sql语句是我们优化的重点。

要对sql语句进行优化,首先要知道应用程序执行了哪些SQL语句。下面我介绍三种方法来获得应用程序所执行的SQL语句。

方法一:

如果你采用的数据库是oracle的话,那么可以利用oracle本身的10046事件跟踪SQL语句。步骤如下:

1、首先获得spid、sid、serial#,machine为你的机器名

  
  SQL> select b.spid,a.sid,a.serial#,
    a.machine from v$session a,v$process b where 
    a.paddr = b.addr and a.machine='yz';
  
  SPID        SID  SERIAL# MACHINE
  
  9497         49    3406   yz
  

2、利用10046事件开始跟踪

  
  SQL>execute sys.dbms_system.set_ev(49, 3406,10046,1,'');
  PL/SQL procedure successfully completed.
  

3、这时候你可以运行应用程序,对于web 应用你就可以打开你认为性能比较差页面。

4、如果你要查看这段时间执行了哪些sql语句,可以执行下面的语句结束跟踪:

  
  SQL>execute sys.dbms_system.set_ev(49,3406,10046,0,'');
  
  PL/SQL procedure successfully completed.
  

5、SQL trace 工具会收集这个过程中执行的SQL的性能状态数据,记录到一个跟踪文件中.这个跟踪文件提供了许多有用的信息,例如解析次数.执行次数,CPU使用时间等。

6、这时候你可以通过下面的语句获得产生的跟踪文件所在的目录:

 

 
  SQL> select value from v$parameter where name = 'user_dump_dest';
  
  VALUE
  
   /opt/oracle/admin/ocn/udump
  

7、在/opt/oracle/admin/ocn/udump下找到yzoracle_ora_9497.trc。9497是你当前应用的spid。

8、注意yzoracle_ora_9497.trc是不可读的,我们需要执行oracle的tkprof命令,将yzoracle_ora_9497.trc转化为我们可读的文本文件。

 

 
  tkprof yzoracle_ora_9497.trc yzoracle_ora_9497.sql
  

这样你就可以在yzoracle_ora_9497.sql文件中看到所有的sql语句执行次数,CPU使用时间等数据。

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:Sqlite数据库在Media NAS系统的应用   下一篇:使用查询分析器调整SQL服务器脚本

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号