[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可以读取的数据块数量