取得SQL层的trace

本文介绍如何在Oracle数据库中使用DBMS_SESSION.SET_SQL_TRACE过程来跟踪特定SQL语句的执行细节,包括设置trace、查看trace文件位置及使用tkprof工具解析trace文件的方法。
		# **取得SQL层的trace**#

可以直接将结构体中取得相应sql语句的trace,当然建立一个包体在其中的一个过程或者方法里取得sql语句的trace也可以。
##下面是在结构体中取得相应的sql语句的trace。##

declare
  tool int;
begin
  --开启当前session的trace
  dbms_session.set_sql_trace(sql_trace => true);
  
  --trace记录的是下面这段sql语句的执行详情
  SELECT distinct cyinm.tool_no into tool
  FROM CUX_14497_BEGINNING_CARRYING cbc,
       CUX_14497_Y_ITEM_NUMBER_MST  cyinm,
       CUX_14497_y_item_no_sup_mst  cyinsm,
       mtl_system_items_b           msib,
       financials_system_params_all fspa
  WHERE fspa.inventory_organization_id = msib.organization_id
   AND fspa.org_id = fnd_profile.value('ORG_ID')
   AND msib.segment1 = cbc.y_item_no
   AND msib.inventory_item_id = cyinm.inventory_item_id
   AND msib.organization_id = cyinm.organization_id
   AND cyinm.y_item_no_id = cyinsm.y_item_no_id
   AND cbc.supplier_id = cyinsm.supplier_id
   AND cyinsm.spec=9;
   
end;

执行完成后我们需要查看生成的trace所在位置。

--查看生成trace的所在路径
SELECT D.VALUE || '/' || LOWER(RTRIM(I.INSTANCE, CHR(0))) || '_ora_' ||
       P.SPID || '.trc' TRACE_FILE_NAME
  FROM (SELECT P.SPID
          FROM V$MYSTAT M, V$SESSION S, V$PROCESS P
         WHERE M.STATISTIC# = 1
           AND S.SID = M.SID
           AND P.ADDR = S.PADDR) P,
       (SELECT T.INSTANCE
          FROM V$THREAD T, V$PARAMETER V
         WHERE V.NAME = 'thread'
           AND (V.VALUE = 0 OR T.THREAD# = TO_NUMBER(V.VALUE))) I,
           --犹豫配置文件存在错误,当时我所用的路径不是在这个目录
       (SELECT VALUE FROM V$PARAMETER WHERE NAME = 'user_dump_dest') D;

突然发现可以通过下面这段代码可直接查看trace文件的生成位置,文件的所在位置是对的但是文件名字好像不对,还是要通过上面的代码查看trace文件名。

select * from v$diag_info where name='Default Trace File';

可能是因为oracle版本的原因。

此时可在服务器上相应的位置查找到生成的trace文件
这是通过WinSCP在服务器上查看生成的trace
这是通过WinSCP在服务器上查看生成的trace
然后通过putty软件的tkporf命令对生成的trace文件进行可读性解析:
[tkprof TRAIN_ora_5646.trc trc187262.txt
tkprof TRAIN_ora_5646.trc trc187262.txt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值