10046 event 知多少

1、在当前session级打开trace

    适用于SQL语句可以在新的session创建后再运行。

    在session级收集10046 trace:

    alter session set tracefile_identifier='10046';   --为便于区分 tracefile,最好做这一步

    alter session set timed_statistics = true;

    alter session set statistics_level=all;

    alter session set max_dump_file_size = unlimited;

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

    -- 执行需要被trace的SQL --

    select * from dual;

    exit;

    如果不退出当前session, 可以用以下命令关闭trace:

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

    注意,如果session没有被彻底地关闭并且跟踪被停止了,某些重要的trace信息的可能会丢失。

 

2、跟踪一个已经开始的进程

如果需要跟踪一个已经存在session,可以用 oradebug连接到session上,并发起10046 trace。

    a. 首先,用某种方法找到需要被跟踪的session.

        例如,在SQL*Plus里,找出目标session的OS的进程ID(spid):

 

select distinct  sess.sid     db_sid,

       sess.serial# db_serial#,

       process.pid     db_process_id,

       process.spid    os_process_id,

       sess.program

  from v$process process, v$session sess

 where sess.paddr = process.ADDR

   and sess.sid = &sid;

 

        注:SPID 是操作系统的进程标识符(os pid),PID 是Oracle的进程标识符(ora pid)。

    b. 一旦找到OS PID,就可以用以下命令初始化跟踪:

       假设需要被跟踪的OSPID是9834. 以sysdba的身份登录到SQL*Plus并执行下面的命令:

SQL>    connect / as sysdba

SQL>    oradebug setospid 7090

Oracle pid: 19, Unix process pid: 3050, image: oracle@Oracle11g (Q000)

 

SQL>   oradebug unlimit

 

SQL>    oradebug event 10046 trace name context forever,level 12

 

SQL>    oradebug tracefile_name;

/u01/app/oracle/diag/rdbms/prod/prod/trace/prod_q000_3050.trc

 

SQL>    oradebug event 10046 trace name context

跟踪过程完成以后,关闭oradebug跟踪:

SQL>  oradebug event 10046 trace name context off

 

 Note: 也可以通过oradebug使用 'setorapid'命令连接到一个session。

     c、下面的例中, 使用PID(Oracle进程标识符)(而不是SPID), oradebug命令将被改为:

SQL>    connect / as sysdba

SQL>    oradebug setorapid 29

 

SQL>    oradebug unlimit

 

SQL>    oradebug event 10046 trace name context forever,level 12

 

SQL>    oradebug tracefile_name;

/u01/app/oracle/diag/rdbms/prod/prod/trace/prod_q000_3050.trc

 

SQL>    oradebug event 10046 trace name context off

 

跟踪过程完成以后,关闭oradebug跟踪:

SQL>  oradebug event 10046 trace name context off      

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2017-05-10 22:10  Oracle-fans  阅读(225)  评论(0编辑  收藏  举报