[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;
每天进步一点点,多思考,多总结
版权声明:本文为CNblog博主「zaituzhong」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。