首页 > 数据库 > Oracle > Oracle 10046 SQL TRACE
出处链接:http://www.askmaclean.com/archives/maclean-10046-sql-trace.html
10046 trace帮助我们解析 一条/多条SQL、PL/SQL语句的运行状态 ,这些状态包括 :Parse/Fetch/Execute三个阶段中遇到的等待事件、消耗的物理和逻辑读、CPU时间、执行计划等等。
即10046 为我们揭示了 一条/多条SQL 的运行情况, 对于 以点入手的 SQL调优是很好的辅助工具,特别是在 10g之前没有ASH的情况下。 但整体系统调优 不是10046 所擅长的, 10046 是 性能调优的起钉器 , AWR是性能调优 的锤子。
10046还能帮助我们分析 一些 DDL维护命令的内部工作原理, RMAN、Data Pump Expdp/Impdp等工具的缓慢问题等。
10046 TRACE的LEVEL:
不同的Level 对应不同的跟踪级别
?1 启用标准的SQL_TRACE功能 ( 默认) 包含了 SQL语句、响应时间、服务时间、处理的行数,物理读和写的数目、执行计划以及其他一些额外信息。 到版本10.2中 执行计划写入到 trace 的条件是仅当相关游标 已经关闭时, 且与之相关的执行统计信息是所有执行次数的总和数据。 到版本11.1中仅在每次游标的第一次执行后将执行计划写入到trace , 执行统计信息仅仅和这第一次执行相关
?4 比level 1时多出 绑定变量的 trace
?8 比level 1多出等待事件,特别对于9i中指出 latch free等待事件很有用,对于分析全表扫描和索引扫描也很有用
?12 比level 1 多出 绑定变量和 等待事件
?16 在11g中为每一次执行生成STAT信息,仅在11.1之后可用
?32 比level 1少执行计划
? 64 和level 1 相比 在第一次执行后还可能生成执行计划信息 ; 条件是某个游标在前一次执行的前提下 运行耗时变长了一分钟。仅在 11.2.0.2中可用
?Level 28 (4 + 8 + 16) 代表 同时启用 level 4 、level 8、level 16
?level 68 ( 64 + 4 ) 代表 同时启用 level 64、level 4
设置的方法如下:
session 级别: alter session set events ‘10046 trace name context forever,level X’;
system 级别 : alter system set events ‘10046 trace name context forever,level X’;
针对非本会话的 某一个进程设置,如果你知道他的SPID 操作系统进程号
oradebug setospid SPID;
oradebug event 10046 trace name context forever, level X;
--------------------------------------------------------------------------------------------------------------------------
普通用户权限限制:
SQL> alter session set events '10046 trace name context forever,level 12';
ERROR:
ORA-01031: insufficient privileges
普通用户需赋予以下权限:
SQL> grant alter session to mims;
Grant succeeded.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31401608/viewspace-2149358/ ,如需转载,请注明出处,否则将追究法律责任。