xingcyx

编码未动,测试先行

常用链接

统计

积分与排名

软件测试

最新评论

使用oracle的10046事件跟踪SQL语句

我们在分析应用程序性能问题的时候,更多地需要关注其中SQL语句的执行情况,因为通常应用程序的性能瓶颈会在数据库这边,因此数据库的sql语句是我们优化的重点。利用Oracle的10046事件,可以跟踪应用程序所执行的SQL语句,并且得到其解析次数.执行次数,CPU使用时间等信息。这对我们分析、定位数据库性能问题是非常有用的。

具体的方法如下:

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

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='SYS_F85';
 
SPID                SID    SERIAL#   MACHINE
----------------------------------------------------------------
24722                15        196 SYS_F85


2、利用10046事件开始跟踪

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

参数说明:
15:SID
196:SERIAL#

注意这里必须以sysdba登录。

3、在应用程序中执行对数据库的操作,比如性能较差的一些查询、插入、删除操作等。

4、关闭事件结束跟踪
SQL>execute sys.dbms_system.set_ev(15,196,10046,0,'');

PL/SQL procedure successfully completed.

5、获得产生的跟踪文件所在的目录
SQL> select value from v$parameter where name = 'user_dump_dest';

VALUE

--------------------------------------------------------------------------------
/oracle/admin/ora9i/udump

转到该目录下可以看到生成了一个ora9i_ora_24722.trc文件,此处的24722即SPID的值。

6、在命令行下执行oracle的tkprof命令,将ora9i_ora_24722.trc转化为文本文件。如:
$ tkprof  ora9i_ora_24722.trc ora9i_ora_24722.sql

此时在ora9i_ora_24722.sql文件中,就可以看到刚才执行应用程序时所执行的sql语句的执行次数、

CPU使用时间等数据。

posted on 2007-01-09 16:27 xingcyx 阅读(786) 评论(0)  编辑  收藏 所属分类: 修习心得


标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-01-18 11:22 编辑过
 
 

推荐图书:
走出软件作坊》、《悟透JavaScript》、《Head First 设计模式
相关链接:
网站导航: