ITPub博客

首页 > 数据库 > Oracle > Oracle 10046 SQL TRACE

Oracle 10046 SQL TRACE

Oracle 作者:leodinas_kong 时间:2017-12-27 10:06:02 0 删除 编辑

出处链接: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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2016-10-11

  • 博文量
    102
  • 访问量
    126814