查看: 5764|回复: 1

怎样跟踪sql执行语句?

[复制链接]
论坛徽章:
0
跳转到指定楼层
1#
发表于 2004-10-11 11:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在oracle中,怎样跟踪sql执行语句?好像可以通过创建sql跟踪事件来实现,具体怎么做,各位大虾能否详细说明每个步骤,多谢了
论坛徽章:
0
2#
发表于 2005-10-16 18:11 | 只看该作者
数据库是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使用时间等数据.

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表