iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >oracle中10046事件怎么用
  • 284
分享到

oracle中10046事件怎么用

2024-04-02 19:04:59 284人浏览 泡泡鱼
摘要

这篇文章主要介绍oracle中10046事件怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 10046的 定义      

这篇文章主要介绍oracle中10046事件怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

10046的 定义

      sql_trace/10046事件是oracle提供的用于进行sql跟踪的手段,其内容包括sql的解析过程、sql的执行计划、绑定变量的使用、会话发生的等待事件。

10046生成语句方法:

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

现在随便查询一个什么,如:

select * from dba_users where rownum<20

查看trace文件

SQL> select * from v$diag_info;

里面有个Default Trace File

 1 Default Trace File

/u01/app/oracle/diag/rdbms/prod1/PROD1/trace/PROD1_ora_28613.trc

10g的话,show parameter dump;找udump

10046级别

目的:获取sql、pl_sql等相关语句的执行情况解析

10046级别:共4个级别 分别为0、1、4、8、12

       10046事件是SQL_TRACE的扩展,被戏称为"吃了兴奋剂的SQL_TRACE"

       有效的追踪级别:

       ① 0级:SQL_TRACE=FASLE

       ② 1级:SQL_TRACE=TRUE,这是缺省级别

       ③ 4级:1级+绑定变量

       ④ 8级:4级+等待事件

       ⑤ 12级:4级+8级

tkprof:oracle内置的针对跟踪文件格式化的一种工具

alter session set events '10046 trace name context forever, level 12';  --当前会话启用跟踪

alter session set events '10046 trace name context off';  --关闭当前会话跟踪

select sid,serial#,username from v$session where username is not null;   --查询sid和serial

execute dbms_system.set_ev(sid,serial#,10046,12,'');  --在当前会话对其它会话进行跟踪

execute dbms_system.set_ev(sid,serial#,10046,0,'');  --在当前会话关闭其它会话跟踪

tkprof常用参数

tkprof   回车查看一下帮助  就知道怎么用了  tkprof 解析源追踪文件  解析完成的文件 

filename 由SQL trace产生的输入跟踪文件

explain SQL语句的explain plain

recoed 创建非递归SQL语句的SQL脚本

waits 记录等待事件的汇总

SORT 根据一个或多个项目提供分类数据,如PRSCPU(CPU时间分析)、PRSELA(已用时间分析)等

table 定义表的名称,TKPROF实用程序暂时将执行计划放入该表中

sys 启用或禁用由sys给出的一组SQL语句

PRINT 仅列出指定数量的SQL语句,而不是所有的SQL语句

insert 创建存储跟踪数据库信息的脚本

与10046相关的两个参数:

show parameter max_dump_file_size;

对trace文件的大小限制

show parameter timed_statistics;

对重要信息的收集是否开启

10046怎么看?

tkprof文件都包含以下内容:

  1. sql语句

  2. 分析 执行 获取调用的次数

  3. 被处理的行数

  4. 所使用CPU的秒数

  5. 所使用的IO

  6. 库高速缓存未命中

  7. 可选的执行计划

  8. 行源 操作列表

  9. 一个报告,总结分析了在跟踪文件中有多少相似和完全不同的语句,如果同样的语句,parse列总是一个大值,说明没有用上绑定变量

count    = number of times OCI procedure was executed。OCI为oracle的调用接口,提供了一组可对ORACLE数据库进行存取的接口子例程(函数),通过在第三代程序设计语言(如C语言)中进行调用可达到存取ORACLE数据库的目的。

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 为了一致性读获得的空间。

在一致性读模式下,所有parse、execute、fetch所获得的buffer的数量。一致性模式的buffer是用于给一个长时间运行的事务提供一个一致性读的快照,缓存实际上在头部存储了状态。

current  = number of buffers gotten in current mode (usually for update) 数据库块命中的次数,通常是为了update

在current模式下所获得的buffer的数量。一般在current模式下执行insert、update、delete操作都会获取buffer。

rows     = number of rows processed by the fetch or execute call 每一种调用类型所处理的行的总数

还有这些:

Misses in library cache during parse:发生在解析的硬解析数量,如果是软解析则Misses in library cache during parse将为0

Misses in library cache during execute:发生在执行调用阶段的硬解析数量。如果在执行调用时没有硬解析发生,Misses in library cache during execute这一行将不存在。

重点参考:Http://czmmiao.iteye.com/blog/1493765

分析下面一段代码:

SQL ID: 00fqk94bdzqnj Plan Hash: 644658511

select sid,serial#,username

from

 v$session where username is not null

call     count①       cpu    elapsed       disk      query    current        rows

------- ------  -------- ---------- ---------- ---------- ----------  ----------

Parse        1      0.01       0.01          0          0          0           0

Execute      1      0.00       0.00          0          0          0           0

Fetch        2      0.00       0.00          0          0          0           2

------- ------  -------- ---------- ---------- ---------- ----------  ----------

total        4      0.01       0.01          0②          0          0           2

Misses in library cache during parse: 1

Optimizer mode: ALL_ROWS

Parsing user id: SYS

Number of plan statistics captured: 1

①假设count这列,fetch部分执行了17324次,获得的rows行数是259806,两者相除,就可以得出一次获取,能够获取多少行记录,一次获得15行数据,怀疑是用了数组取操作。

②理论上,elapsed time=CPU time+disk time,即如果elapsed time为1.85,CPU为1.82,那么disk可能就是3。但是也可能是有等待事件,把大量时间花在了等待事件上。

③可以通过磁盘IO所占逻辑IO的比例,disk/query+current来判断磁盘IO的情况,太大的话有可能是db_buffer_size过小,当然这也跟SQL的具体特性有关

④query+current/rows 平均每行所需的block数,太大的话(超过20)SQL语句效率太低,数据过于分散,可以考虑重组对象

⑤通过SQL ID: 06nvwn223659v Plan Hash: 0 标识出一个新的SQL分析,会发现很多是系统自己的SQL,直接不用看

以上是“oracle中10046事件怎么用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: oracle中10046事件怎么用

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

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

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

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

下载Word文档
猜你喜欢
  • oracle中10046事件怎么用
    这篇文章主要介绍oracle中10046事件怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 10046的 定义      ...
    99+
    2024-04-02
  • Oracle 10046事件 介绍(一)
    做Oracle方面的工作时间长了,经常会听人提起10046事件,尤其是涉及到SQL调优的时候更甚。那10046事件到底是什么呢,先做一个简单的介绍。1、什么是10046事件  10046事件是Or...
    99+
    2024-04-02
  • oracle 10046事件故障诊断分析
    本篇文章为大家展示了oracle 10046事件故障诊断分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 什么是事件?EVENTS ...
    99+
    2024-04-02
  • Oracle 11g 查看执行计划10046事件
    使用10046事件查看真实的执行计划操作如下:SQL> conn / as sysdbaConnected.SQL> SQL> oradebug setmypid Stateme...
    99+
    2024-04-02
  • 数据库中如何使用10046事件跟踪SQL
    这篇文章主要介绍数据库中如何使用10046事件跟踪SQL,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!10046 事件概述 这是一个特殊的事件,可以被用来发起sql_trace类的...
    99+
    2024-04-02
  • SQL中如何利用10046事件扩展SQL跟踪
    这篇文章将为大家详细讲解有关SQL中如何利用10046事件扩展SQL跟踪,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在会话sql_trace的基础上,利用10046诊断...
    99+
    2024-04-02
  • Oracle Study中Oracle等待事件怎么用
    这篇文章主要为大家展示了“Oracle Study中Oracle等待事件怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Oracle Study中Oracl...
    99+
    2024-04-02
  • 数据库中oradebug 10046事件的示例分析
    这篇文章给大家分享的是有关数据库中oradebug 10046事件的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 SQL> orad...
    99+
    2024-04-02
  • 如何使用Oracle TRCA分析10046 Trace RAW文件
    这篇文章将为大家详细讲解有关如何使用Oracle TRCA分析10046 Trace RAW文件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 Oracle 10046是我们常用的...
    99+
    2023-06-06
  • jQuery中event事件怎么用
    这篇文章主要为大家展示了“jQuery中event事件怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“jQuery中event事件怎么用”这篇文章吧。1.p...
    99+
    2024-04-02
  • C#中怎么调用事件
    本篇文章为大家展示了C#中怎么调用事件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C#调用事件如果没有任何客户将委托与该事件挂钩,该字段将为空;否则该字段引用应在调用该事件时调用的委托。因此,C#...
    99+
    2023-06-17
  • js中oncontextmenu事件怎么用
    小编给大家分享一下js中oncontextmenu事件怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!定义和使用oncont...
    99+
    2024-04-02
  • 怎么理解ORACLE事件跟踪
    这期内容当中小编将会给大家带来有关怎么理解ORACLE事件跟踪,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。ORACLE事件跟踪  Oracle跟踪文件分为三种...
    99+
    2024-04-02
  • HTML5中拖放事件怎么用
    这篇文章主要介绍HTML5中拖放事件怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!浏览器支持Internet Explorer 9、Firefox、Opera 12、Chrom...
    99+
    2024-04-02
  • js中oncontextmenu事件怎么使用
    在JavaScript中,可以使用`oncontextmenu`事件来捕获右键菜单事件。以下是使用`oncontextmenu`事件...
    99+
    2023-08-08
    js oncontextmenu
  • js中onbeforepaste事件怎么使用
    在JavaScript中,可以使用onbeforepaste事件来捕获用户在粘贴内容之前的操作。以下是使用onbeforepaste...
    99+
    2023-09-15
    js
  • 怎么理解oracle等待事件enq
    这篇文章主要讲解了“怎么理解oracle等待事件enq”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解oracle等待事件enq”吧!Enqueue ...
    99+
    2024-04-02
  • oracle中DataMining组件怎么用
    小编给大家分享一下oracle中DataMining组件怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一.DataMining 组件 说明在说明之前,我们先用如下SQL查看一下DB中...
    99+
    2024-04-02
  • c#事件怎么用
    本文小编为大家详细介绍“c#事件怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“c#事件怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。事件基于委托,可以为任何一种委托类型提供一种发布\订阅机制。使用e...
    99+
    2023-06-30
  • vuejs中怎么响应用户事件
    vuejs中怎么响应用户事件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。需求:页面上的列表原先有3个,我们想点击一次添加一条记录,也可以...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作