广告
返回顶部
首页 > 资讯 > 数据库 >Oracle 10046事件 介绍(一)
  • 250
分享到

Oracle 10046事件 介绍(一)

2024-04-02 19:04:59 250人浏览 薄情痞子
摘要

做oracle方面的工作时间长了,经常会听人提起10046事件,尤其是涉及到sql调优的时候更甚。那10046事件到底是什么呢,先做一个简单的介绍。1、什么是10046事件  10046事件是Or

oracle方面的工作时间长了,经常会听人提起10046事件,尤其是涉及到sql调优的时候更甚。那10046事件到底是什么呢,先做一个简单的介绍。

1、什么是10046事件

  10046事件是Oracle提供的一个用于分析性能的工具,它能帮助我们解析一条/多条SQL、PL/SQL语句的运行状态,这些状态包括 :Parse/Fetch/Execute三个阶段中遇到的等待事件、消耗的物理和逻辑读、CPU时间、执行计划等等。

2、10046事件的Level

不同的Level对应不同的跟踪级别

  • 1 启用标准的SQL_TRACE功能(默认)包含了SQL语句、响应时间、服务时间、处理的行数,物理读和写的数目、执行计划以及其他一些额外信息。到版本10.2中执行计划写入到trace的条件是仅当相关游标已经关闭时,且与之相关的执行统计信息是所有执行次数的总和数据。到版本11.1中仅在每次游标的第一次执行后将执行计划写入到trace,执行统计信息仅仅和这第一次执行相关

  • 4 比level 1时多出绑定变量的trace

  • 8 比level 1多出等待事件,特别对于9i中指出latchfree等待事件很有用,对于分析全表扫描和索引扫描也很有用

  • 12 比level 1多出绑定变量和等待事件

11g及以上版本

  • 16 在11g中为每一次执行生成STAT信息

  • 32 比level 1少执行计划

11.2.0.2及以上版本

  • 64 和level 1相比在第一次执行后还可能生成执行计划信息;条件是某个游标在前一次执行的前提下运行耗时变长了一分钟。

3、启用10046事件

1)对本session启用10046事件

a.

 alter session set events '10046 trace name context forever,level 12'

b. 

 oradebug setmypid

 oradebug event 10046 trace name context ,level 12

其中能修改的只有level级别

2)对其他session启用10046事件

oradebug setospid|setorapid xxx

oradebug event 10046 trace name context ,level 12

4、停用10046事件

分别对应上面不同的启用方式

alter session set events '10046 trace name context forever off'

oradebug event 10046 trace name context off

或者退出启用10046事件的session

5、获取10046事件生成的trace文件

a.对于11g及以上的版本,使用如下语句可以轻松得到

select value from v$diag_info where name='Default Trace File';

b.对于10g及以前的版本中需要使用如下sql

SELECT D.VALUE || '' || LOWER(RTRIM(I.INSTANCE, CHR(0))) || '_ora_' ||
       P.SPID || '.trc' TRACE_FILE_NAME
  FROM (SELECT P.SPID
          FROM SYS.V$MYSTAT M, SYS.V$SESSION S, SYS.V$PROCESS P
         WHERE M.STATISTIC# = 1
           AND S.SID = M.SID
           AND P.ADDR = S.PADDR) P,
       (SELECT T.INSTANCE
          FROM SYS.V$THREAD T, SYS.V$PARAMETER V
         WHERE V.NAME = 'thread'
           AND (V.VALUE = 0 OR T.THREAD# = TO_NUMBER(V.VALUE))) I,
       (SELECT VALUE FROM SYS.V$PARAMETER WHERE NAME = 'user_dump_dest') D;

c.如果使用oradebug命令则使用相对应的oradebug tracefile_name即可得到trace文件

6、格式化trace文件

 10046事件所产生的原始trace文件习惯称之为裸trace文件(raw trace),Oracle记录在裸trace文件中的内容一眼看上去并不是那么观,也不是那么容易看懂。为了祼trace文件能够以一种更直观、更容易懂的方式展现出来,Oracle提供了tkprof命令,这个命令是Oracle自带的,可以用它来翻译祼trace文件。

tkprof的语法如下:

[oracle@rhel6 10046]$ tkprof
Usage: tkprof tracefile outputfile [explain= ] [table= ]
              [print= ] [insert= ] [sys= ] [sort= ]
  table=schema.tablename   Use 'schema.tablename' with 'explain=' option.
  explain=user/passWord    Connect to ORACLE and issue EXPLAIN PLAN.
  print=integer    List only the first 'integer' SQL statements.
  aggregate=yes|no
  insert=filename  List SQL statements and data inside INSERT statements.
  sys=no           TKPROF does not list SQL statements run as user SYS.
  record=filename  Record non-recursive statements found in the trace file.
  waits=yes|no     Record summary for any wait events found in the trace file.
  sort=option      Set of zero or more of the following sort options:
    prscnt  number of times parse was called
    prscpu  cpu time parsing
    prsela  elapsed time parsing
    prsdsk  number of disk reads during parse
    prsqry  number of buffers for consistent read during parse
    prscu   number of buffers for current read during parse
    prsmis  number of misses in library cache during parse
    execnt  number of execute was called
    execpu  cpu time spent executing
    exeela  elapsed time executing
    exedsk  number of disk reads during execute
    exeqry  number of buffers for consistent read during execute
    execu   number of buffers for current read during execute
    exerow  number of rows processed during execute
    exemis  number of library cache misses during execute
    fchcnt  number of times fetch was called
    fchcpu  cpu time spent fetching
    fchela  elapsed time fetching
    fchdsk  number of disk reads during fetch
    fchqry  number of buffers for consistent read during fetch
    fchcu   number of buffers for current read during fetch
    fchrow  number of rows fetched
    userid  userid of user that parsed the cursor

7、简单示例,数据库版本11.2.0.4

zx@ORCL>alter session set events '10046 trace name context forever,level 12';

Session altered.

zx@ORCL>select * from scott.emp;

     EMPNO ENAME			  JOB				     MGR HIREDATE		    SAL       COMM     DEPTNO
---------- ------------------------------ --------------------------- ---------- ------------------- ---------- ---------- ----------
      7369 SMITH			  CLERK 			    7902 1980-12-17 00:00:00	    800 		   20
      7499 ALLEN			  SALESMAN			    7698 1981-02-20 00:00:00	   1600        300	   30
      ......

14 rows selected.

zx@ORCL>alter session set events '10046 trace name context off';

Session altered.

zx@ORCL>select value from v$diag_info where name='Default Trace File';

VALUE
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/u02/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_3239.trc

zx@ORCL>!
[oracle@rhel6 trace]$ tkprof /u02/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_3239.trc 10046.trc

TKPROF: Release 11.2.0.4.0 - Development on Thu Feb 16 21:38:57 2017

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.


[oracle@rhel6 trace]$ cat 10046.trc

TKPROF: Release 11.2.0.4.0 - Development on Thu Feb 16 21:38:57 2017

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

Trace file: /u02/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_3239.trc
Sort options: default

********************************************************************************
count    = number of times OCI procedure was executed
cpu      = cpu time in seconds executing 
elapsed  = elapsed time in seconds executing
disk     = number of physical reads of buffers from disk
query    = number of buffers Gotten for consistent read
current  = number of buffers gotten in current mode (usually for update)
rows     = number of rows processed by the fetch or execute call
********************************************************************************
......省略部分内容
********************************************************************************

SQL ID: ggqns3c1jz86c Plan Hash: 3956160932

select * 
from
 scott.emp


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        2      0.00       0.00          0          7          0          14
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        4      0.00       0.00          0          7          0          14

Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: SYS
Number of plan statistics captured: 1

Rows (1st) Rows (avg) Rows (max)  Row Source Operation
---------- ---------- ----------  ---------------------------------------------------
        14         14         14  TABLE ACCESS FULL EMP (cr=7 pr=0 pw=0 time=81 us cost=3 size=532 card=14)


Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       2        0.00          0.00
  SQL*Net message from client                     2        0.00          0.00
********************************************************************************

......省略部分内容

参考文档:https://blogs.oracle.com/askMaclean/entry/maclean教你读oracle_10046_sql_trace

MOS文档EVENT: 10046 "enable SQL statement tracing (including binds/waits)" (文档 ID 21154.1)

How To Collect 10046 Trace (SQL_TRACE) Diagnostics for PerfORMance Issues (文档 ID 376442.1)

官方文档:Http://docs.oracle.com/cd/E11882_01/server.112/e41573/sqltrace.htm#PFGRF94981

您可能感兴趣的文档:

--结束END--

本文标题: Oracle 10046事件 介绍(一)

本文链接: https://www.lsjlt.com/news/50829.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle 10046事件 介绍(一)
    做Oracle方面的工作时间长了,经常会听人提起10046事件,尤其是涉及到SQL调优的时候更甚。那10046事件到底是什么呢,先做一个简单的介绍。1、什么是10046事件  10046事件是Or...
    99+
    2022-10-18
  • Oracle 10046事件 介绍(二) ---tkprof
        之前简单的写了10046事件介绍的文章http://hbxztc.blog.51cto.com/1587495/1898624,当然收集10046 trace不是最终的目的,能够...
    99+
    2022-10-18
  • oracle中10046事件怎么用
    这篇文章主要介绍oracle中10046事件怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 10046的 定义      ...
    99+
    2022-10-18
  • oracle 10046事件故障诊断分析
    本篇文章为大家展示了oracle 10046事件故障诊断分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 什么是事件?EVENTS ...
    99+
    2022-10-19
  • Oracle 11g 查看执行计划10046事件
    使用10046事件查看真实的执行计划操作如下:SQL> conn / as sysdbaConnected.SQL> SQL> oradebug setmypid Stateme...
    99+
    2022-10-18
  • jquery事件绑定方法介绍
    一、bind() bing()用来绑定事件,例如: 二、unbind() unbind()用来解除事件的绑定。例如: 三、on() on()方法用来绑定事件,例如: 四、off...
    99+
    2022-11-13
  • jQuery中的常用事件介绍
    一、jQuery事件的分类 jQuery事件是对JavaScript事件的封装,常用事件分类如下: 1、基础事件 window事件。鼠标事件。键盘事件。表单事件。 2、复合事件是多个...
    99+
    2022-11-13
  • vue @tap事件之$event用法介绍
    目录vue $event用法vue奇怪的event对象event 对象乌龙vue $event用法 html   <span class="cha mui-badge...
    99+
    2022-11-13
  • JavaScript事件类型的简单介绍
    这篇文章主要讲解了“JavaScript事件类型的简单介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript事件类型的简单介绍”吧!DOM事...
    99+
    2022-10-19
  • H5的事件属性详细介绍
    这篇文章主要介绍“H5的事件属性详细介绍”,在日常操作中,相信很多人在H5的事件属性详细介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”H5的事件属性详细介绍”的疑惑有所帮...
    99+
    2022-10-19
  • 事件统计 | performance_schema全方位介绍
    |  导语 在上一篇 《事件记录 | performance_schema全方位介绍"》中,我们详细介绍了performance_schema的事件记录表,恭喜大家在学习pe...
    99+
    2022-10-18
  • React事件处理超详细介绍
    目录1. 事件绑定1.1 函数组件1.2 类组件2. 合成事件3. 事件传参的3种不同写法4. this 指向问题1. 事件绑定 React 元素的事件处理和 DOM 元素的很相似,...
    99+
    2022-11-13
  • JavaScript事件监听器详细介绍
    目录什么是事件1. 事件绑定2. 常见事件什么是事件 HTML 事件是发生在 HTML 元素上的“行为 ”。比如:页面上的 按钮被点击、鼠标移动到元素之上、按...
    99+
    2022-11-13
  • windows10事件管理器位置介绍
    windows10事件管理器在哪呢,事件管理器是win10系统中专门用来统计用户使用win10进行各种操作的记录中心,该功能能够帮助用户在系统中进行纪录,那样就可以随时查询进行的各种信息,下面就是windows10事件管理器位置介绍,如果有...
    99+
    2023-07-10
  • React中DOM事件和状态介绍
    目录DOM事件参数作用域状态无状态组件有状态组件使用状态数据初始化状态数据修改状态数据DOM事件 react中绑定事件的语法跟html中为元素绑定事件的语法相似, html中绑定事件...
    99+
    2022-11-13
  • ORACLE 12C Cloud Control软件结构介绍
        最近为测试ORACLE 12C Cloud Control,部署了下ORACLE 12C Cloud Control,发现与OCM考试时的GC有了很大的变化,下面简单介绍下CC的目录结构和进程、日志...
    99+
    2022-10-18
  • MySQL事件调度器的用法介绍
    本篇内容主要讲解“MySQL事件调度器的用法介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL事件调度器的用法介绍”吧! 事件调度器有时也可称为临时...
    99+
    2022-10-18
  • Android的Touch事件处理机制介绍
    Android的Touch事件处理机制比较复杂,特别是在考虑了多点触摸以及事件拦截之后。 Android的Touch事件处理分3个层面:Activity层,ViewGroup层...
    99+
    2022-06-06
    touch Android
  • winform关闭窗体FormClosing事件用法介绍
    在窗体中有FormClosing这个事件,这个事件是在窗体关闭时候运行的。如果要取消某个事件的操作,那么就在该事件中写上e.Cancel=true就能取消该事件,也就是不执行该事件。...
    99+
    2022-11-13
  • windows10事件查看器清空方式介绍
    事件查看器是系统自带的纪录作用,它可以纪录系统进行的各项操作,有些windows10客户想要将事件查看器清空以释放更多内存,那么应该如何操作呢?先打开运行窗口,输入eventvwr.msc迅速调成事件查看器,以后选定Windows日志频道下...
    99+
    2023-07-10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作