Welcome 微信登录

首页 / 数据库 / MySQL / Oracle执行语句跟踪

系统上的某个接口提交数据经常超时(超过3秒),而我单独在后台数据库(Oracle)执行insert,只需要17ms。提交数据的客户端没有任何的调试日志,只能通过跟踪后台语句记录实际调用过程中的数据库执行时间。从而发现问题耗时最多的阶段。

安装dbms_support包

SQL> @? dbmsadmindbmssupp.sqlSQL> grant execute on dbms_support to test;

找到需要跟踪的会话,一个接口可能会建立多个会话,需要根据会话建立的时间来判断真正需要跟踪的会话。

SQL> alter session set nls_date_format="YYYY-MM-DD HH24:MI:SS";SQL> select sid,serial#,logon_time from v$session where username=&name and program=&program;输入 name 的值:"test"输入 program 的值:"test.exe"

使用start_trace_in_session进行跟踪

SQL>exec dbms_support.start_trace_in_session(1157,59729,TRUE,TRUE);

开始跟踪后,在客户端进行对应的操作。

使用stop_trace_in_session结束跟踪

SQL> exec dbms_support.stop_trace_in_session(1157,59729);

使用以下的语句获得trace文件的位置。

SELECTd.VALUE || "" || LOWER (RTRIM (i.INSTANCE, CHR (0))) || "_ora_" || p.spid || ".trc" trace_file_nameFROM (SELECT p.spidFROM v$mystat m, v$session s, v$process p WHERE m.statistic# = 1 AND s.SID = &SID AND p.addr = s.paddr) p, (SELECT t.INSTANCEFROM v$thread t, v$parameter v WHERE v.NAME = "thread" AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i, (SELECT VALUEFROM v$parameter WHERE NAME = "user_dump_dest") d

用文本编辑器可以直接打开trace文件

图中的这一段就是对一个语句的从解析到返回数据的整个过程,如果统计从开始请求到消息返回客户端的时间,直接将红框中的两个tim相减就可以了,11592216806504-11592199796058=17010446,其单位是1/1000000秒。若要单独获取执行时间,可以EXEC的TIM减掉PARSE的TIM,差值即为执行的时间。其它字段的说明可以参照这个文档。

另外也可以使用TKPROF将trace文件转换成为执行计划解析的文本。

D:apporaclediag dbmswxmesdbwxmesdb race>tkprof wxmesdb_ora_6520.trc trace_1.txtTKPROF: Release 12.1.0.1.0 - Development on 星期三 1月 6 08:30:11 2016Copyright (c) 1982, 2013, Oracle and/or its affiliates.All rights reserved.如上图所示,可以得到执行时间为17秒,与上一步中通过TIM相减的差值一致。--EOF--更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2016-02/128532p2.htm
  • 1
  • 2
  • 下一页
【内容导航】
第1页:使用sql trace实现语句追踪第2页:使用10046事件实现语句追踪
为啥HBase需要搭建SQL引擎层Oracle 12C RAC的optimizer_adaptive_features造成数据插入超时相关资讯      10046事件  Oracle执行语句跟踪  sql trace 
  • 如何使用SQL_TRACE和10046事件  (05/26/2015 10:15:27)
  • Oracle 10046事件  (03/05/2015 18:56:15)
  • 使用10046事件查看Oracle执行计划  (04/01/2015 20:22:16)
  • Oracle 10046跟踪事件操作步骤  (10/07/2013 13:37:07)
本文评论 查看全部评论 (0)
表情: 姓名: 字数