[ORACE] Oracle trace 之二10046事件

10045事件是对SQL_TRACE 的增强通过10046可以看到ORACLE内核执行SQL_TRACE跟踪操作
SQL_TRACE的增强 'SQL_TRACE wait=false,bind=true',可以获得

1.级别
    1 --标准SQL的SQL_TRACE
    4 -- 1+ bind value [bind=true]
    8 -- 1+ 等待事件跟踪 [wait=true]
    12-- 1+4+9
    
    11g之后
    16 --为每次SQL执行生成STAT 信息输出 [plan_stat=all_executions]
    32 --不转储执行统计信息 [plan_stat=never]
    
    11.2.0.2之后
    64 --自适应的STAT转储 [plan_stat=adaptive]

    全局 event="10046 trace name context forever,level 12"
2.方法
2.1 方法1

    alter session set events '10046 trace name context forever 12'         --启用trace
    alter session set events '10046 trace name context off'                --停止trace

     11g之后

    alter session set events 'SQL_TRACE wait=true';


2.2 方法2    

SQL>     select sid,serial#,username from v$session where username is not null;

       SID    SERIAL# USERNAME
---------- ---------- --------------------------------------------------------------------------------------------------------------------------------
     3    62469 SYS
       217    44968 C##SAPR3
       395    39248 C##SAPR3
       596    21546 SYS

    exec dbms_system.set_ev(395,39248,10046,8,'');    --启用trace
    exec dbms_system.set_ev(395,39248,10046,0,'');    --停止trace
    
    'db file scattered read'全表扫描
    db_file_multiblock_read_count 全表扫描时每次IO可以读取的数据块数量

 2.3方法3

oradebug setospid 46237;     -- 知道OS的PID 
oradebug setorapid 24;         --知道 ORA的PID 
oradebug event 10046 trace name context forever, level 12;
原文地址:https://www.cnblogs.com/tingxin/p/12839897.html