使用10046 trace跟踪SQL

工作环境:

1、本地工作环境为WIN7 旗舰版 64位系统,本地装有11.2.0.1.0 版本的oracle数据库;

2、服务器环境为:linux,oracle版本为:11.2.0.4.0 ;

3、本地使用pl/sql工具:

PL/SQL Developer
  Version 9.0.6.1665
 
01.275052 - Unlimited user license
  Windows 7 (64-bit) 6.1 Build 7600
  Language: 简体中文  (英宇世纪)

使用10046 trace 目的:

分析SQL执行的顺序;

操作步骤:

1、以SYSDBA登陆服务器数据库;

2、新建sql窗口;

3、命令执行顺序如下:

1)、开启级别为12的Trace,level后面的数字设置了Trace的级别:
ALTER SESSION SET EVENTS '10046 trace name context forever, level 12'

2)、执行需要跟踪的SQL语句。

也可以对单挑语句进行跟踪:altersession set events 'sql_trace [sql: sql_id=g3yc1js3g2689 |sql_id=7ujay4u33g337]bind=true, wait=true';

3)、关闭Trace,任何级别
ALTER SESSION SET EVENTS '10046 trace name context off'

4)、获取生成的trace文件路径

SELECT D.VALUE || '/' || LOWER(RTRIM(I.INSTANCE, CHR(0))) || '_ora_' ||
       P.SPID || '.trc' TRACE_FILE_NAME
  FROM (SELECT P.SPID
          FROM SYS.V$MYSTAT M, SYS.V$SESSION S, SYS.V$PROCESS P
         WHERE M.STATISTIC# = 1
           AND S.SID = M.SID
           AND P.ADDR = S.PADDR) P,
       (SELECT T.INSTANCE
          FROM SYS.V$THREAD T, SYS.V$PARAMETER V
         WHERE V.NAME = 'thread'
           AND (V.VALUE = 0 OR T.THREAD# = TO_NUMBER(V.VALUE))) I,
       (SELECT VALUE FROM SYS.V$PARAMETER WHERE NAME = 'user_dump_dest') D;

4、取得文件使用notepad++打开,直接找到,trace中执行的SQL语句,文件中会打印完整的语句,打开trc文件后截图如下:找出所有的obj#=***;

5、在PL/SQL的SQL窗口中执行如下语句,查看obj门对应的表:

查看obj们对应的表名

SELECT OBJECT_ID, OBJECT_NAME

  FROM DBA_OBJECTS

 WHERE OBJECT_ID IN (90631, 90627, 90598, 90595);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值