SQLTrace

--========================

--  Sql Trace

--========================

 

一、用户进程跟踪文件

    用户跟踪文件在根据需要跟踪会话实际操作的时候根据要求产生

    通常用于帮助调整应用程序,比如检查由SQL的不良写法所致的相关问题等等

    由用户进程发出,服务器进程产生该类文件

    包含跟踪SQL命令的统计信息、包含用户的错误信息

    缺省情况下当用户出现会话错误时产生

    位置由user_dump_dest设定

    文件大小由max_dump_file_size 决定

    可以设定记录会话的所有信息

    分为基于会话级别和基于实例级别,大多数情况下,在session级别进行跟踪

 

二、不同级别的跟踪 

    instance level:

        alter system set sql_trace = true;

       

    session level:

        使用alter session命令启用跟踪

        alter session set sql_trace = true;

        使用dbms包来启用跟踪

        dbms_system.SET_SQL_TRACE_IN_SESSION

 

三:

10053 trace跟踪文件

可以通过alter session set event 来创建,但是前提是这条SQL被真正执行过。

常见创建方法:

alter session set tracefile_identifier='mytrace';

alter session set events '10053 trace name context forever';

select * from emp where ename='scott';

alter session set events '10053 trace name context off';

到了11g 对于10053有了优化,所以以上创建方法还可以是:

alter session set tracefile_identifier='mytrace'; 创建trace标识符

alter session set events 'trace [sql_compiler.*]';

select * from emp where name='scott';

alter session set events 'trace [sql_compiler.*] off'; 退出10053 trace.

但是有的场景是不允许你执行sql的,比如sql是修改数据的,或者sql很大对性能有影响,或者没有执行权限。这个时候我们可以使用dbms_sqldiag.dump_trace来实现,具体方法如下:

begin

dbms_sqldoag.dump_trace(p_sql_id=>'',

p_child_number=>0,

p_component=>'compiler',

p_file_id=>'mytrace');

end;

/

但是注意的是每次执行 dbms_sqldoag.dump_trace都会触发一此硬解析,因此不能再繁忙期或者频繁的执行。

 

 

方法1:10046事件

可以明确显示目标SQL的实际执行中每一个执行步骤所消耗的逻辑度,物理度和花费时间

激活10046事件:

alter session set events '10046 trace name content forever,level 12'

oradebug event 10046 trace name context forevel,level 12

 

在此session中执行sql

得到trace 文件路径

oradebug tracefile_name

关闭10046事件

alter session set events ' 10046 trace name context off'

oradebug event 10046 trace name context off

转载于:https://my.oschina.net/u/3862440/blog/2873342

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值