oracle之10046事件

10046事件
按照信息收集的内容可以分为4个级别:
1、level 1等同于SQL_TRACE
2、level 4在level 1 的基础上增加了收集绑定变量的信息
3、level 8在level 1 的基础上增加了等待事件的信息
4、level 12等同于level4 + level 8同时收集绑定变量的信息和等待事件的信息。
因为level 12是level 4与level 8的整合,由于篇幅关系,只做level 12的实验。
10046事件level 12实验数据的准备:
SQL> conn scott/scott
Connected.
SQL>    alter session set events '10046 trace name context forever,level 12';

Session altered.

SQL> variable x number; --定义两个变量
SQL> variable y varchar2;
SQL> exec :x:=20;

PL/SQL procedure successfully completed.

SQL> exec :y:='T';

PL/SQL procedure successfully completed.

SQL> select object_id,object_name from t where object_id=:x or object_name=:y;

OBJECT_ID OBJECT_NAME
------------------------------------------------------------------------------------------------------------------------------------------
            20 ICOL$
        59410 T
        59633 T


SQL> alter session set events '10046 trace name context off';

Session altered.

查看trace文件中的相关信息:
cat /u01/oracle/admin/ORCL/udump/orcl_ora_4235.trc

=====================
PARSING IN CURSOR #1 len=72 dep=0 uid=54 oct=3 lid=54 tim=1300735198568516 hv=1308460522 ad='3ddcec04'
select object_id,object_name from t where object_id=:x or object_name=:y
END OF STMT
PARSE #1:c=0,e=102,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=1300735198568508
BINDS #1:
kkscoacd
Bind#0    --绑定变量 x (level 4)
    oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
    oacflg=03 fl2=1000000 frm=00 csi=00 siz=56 off=0
    kxsbbbfp=b7f08da4    bln=22    avl=02    flg=05
    value=20
Bind#1    --绑定变量 y (level 4)
    oacdty=01 mxl=32(01) mxlc=00 mal=00 scl=00 pre=00
    oacflg=03 fl2=1000000 frm=01 csi=31 siz=0 off=24
    kxsbbbfp=b7f08dbc    bln=32    avl=01    flg=01
    value="T"
EXEC #1:c=1000,e=225,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=1300735198568832
WAIT #1: nam='SQL*Net message to client' ela= 3 driver id=1650815232 #bytes=1 p3=0 obj#=-1 tim=1300735198568876
--等待事件 (level 8)
FETCH #1:c=0,e=93,p=0,cr=4,cu=0,mis=0,r=1,dep=0,og=1,tim=1300735198569009
WAIT #1: nam='SQL*Net message from client' ela= 225 driver id=1650815232 #bytes=1 p3=0 obj#=-1 tim=1300735198569291
--等待事件 (level 8)
WAIT #1: nam='SQL*Net message to client' ela= 6 driver id=1650815232 #bytes=1 p3=0 obj#=-1 tim=1300735198585989
FETCH #1:c=16997,e=16852,p=0,cr=707,cu=0,mis=0,r=2,dep=0,og=1,tim=1300735198586188
WAIT #1: nam='SQL*Net message from client' ela= 23029863 driver id=1650815232 #bytes=1 p3=0 obj#=-1 tim=1300735221616167
STAT #1 id=1 cnt=3 pid=0 pos=1 obj=59633 op='TABLE ACCESS FULL T (cr=711 pr=0 pw=0 time=86 us)'
======================================================================================================
10046事件的用途:
1、找到有问题的SQL。
2、通过跟踪方式对有问题的SQL进行分析,找到原因并为优化提供重要信息。

今天刚刚学习了Oracle的10046事件的相关知识,与大家做个分享。

10046事件
按照信息收集的内容可以分为4个级别:
1、level 1等同于SQL_TRACE
2、level 4在level 1 的基础上增加了收集绑定变量的信息
3、level 8在level 1 的基础上增加了等待事件的信息
4、level 12等同于level4 + level 8同时收集绑定变量的信息和等待事件的信息。
因为level 12是level 4与level 8的整合,由于篇幅关系,只做level 12的实验。
10046事件level 12实验数据的准备:
SQL> conn scott/scott
Connected.
SQL>  alter session set events '10046 trace name context forever,level 12';

Session altered.

SQL> variable x number; --定义两个变量
SQL> variable y varchar2;
SQL> exec :x:=20;

PL/SQL procedure successfully completed.

SQL> exec :y:='T';

PL/SQL procedure successfully completed.

SQL> select object_id,object_name from t where object_id=:x or object_name=:y;

OBJECT_ID OBJECT_NAME
------------------------------------------------------------------------------------------------------------------------------------------
        20 ICOL$
     59410 T
     59633 T


SQL> alter session set events '10046 trace name context off';

Session altered.

查看trace文件中的相关信息:
cat /u01/oracle/admin/ORCL/udump/orcl_ora_4235.trc

=====================
PARSING IN CURSOR #1 len=72 dep=0 uid=54 oct=3 lid=54 tim=1300735198568516 hv=1308460522 ad='3ddcec04'
select object_id,object_name from t where object_id=:x or object_name=:y
END OF STMT
PARSE #1:c=0,e=102,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=1300735198568508
BINDS #1:
kkscoacd
Bind#0  --绑定变量 x (level 4)
  oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
  oacflg=03 fl2=1000000 frm=00 csi=00 siz=56 off=0
  kxsbbbfp=b7f08da4  bln=22  avl=02  flg=05
  value=20
Bind#1  --绑定变量 y (level 4)
  oacdty=01 mxl=32(01) mxlc=00 mal=00 scl=00 pre=00
  oacflg=03 fl2=1000000 frm=01 csi=31 siz=0 off=24
  kxsbbbfp=b7f08dbc  bln=32  avl=01  flg=01
  value="T"
EXEC #1:c=1000,e=225,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=1300735198568832
WAIT #1: nam='SQL*Net message to client' ela= 3 driver id=1650815232 #bytes=1 p3=0 obj#=-1 tim=1300735198568876
--等待事件 (level 8)
FETCH #1:c=0,e=93,p=0,cr=4,cu=0,mis=0,r=1,dep=0,og=1,tim=1300735198569009
WAIT #1: nam='SQL*Net message from client' ela= 225 driver id=1650815232 #bytes=1 p3=0 obj#=-1 tim=1300735198569291
--等待事件 (level 8)
WAIT #1: nam='SQL*Net message to client' ela= 6 driver id=1650815232 #bytes=1 p3=0 obj#=-1 tim=1300735198585989
FETCH #1:c=16997,e=16852,p=0,cr=707,cu=0,mis=0,r=2,dep=0,og=1,tim=1300735198586188
WAIT #1: nam='SQL*Net message from client' ela= 23029863 driver id=1650815232 #bytes=1 p3=0 obj#=-1 tim=1300735221616167
STAT #1 id=1 cnt=3 pid=0 pos=1 obj=59633 op='TABLE ACCESS FULL T (cr=711 pr=0 pw=0 time=86 us)'
======================================================================================================
10046事件的用途:
1、找到有问题的SQL。
2、通过跟踪方式对有问题的SQL进行分析,找到原因并为优化提供重要信息。

执行以下命令关闭10046事件:
SQL>  alter session set events '10046 trace name context off';

Session altered.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值