10046 event 知多少

2017年5月10日

10:08

1、在当前session级打开trace

适用于SQL语句可以在新的session创建后再运行。

在session级收集10046 trace:

alter session set tracefile_identifier='10046';   --为便于区分 tracefile,最好做这一步

alter session set timed_statistics = true;

alter session set statistics_level=all;

  alter session set max_dump_file_size = unlimited;

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

-- 执行需要被trace的SQL --

select * from dual;

exit;

如果不退出当前session, 可以用以下命令关闭trace:

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

注意,如果session没有被彻底地关闭并且跟踪被停止了,某些重要的trace信息的可能会丢失。

2、跟踪一个已经开始的进程

如果需要跟踪一个已经存在session,可以用 oradebug连接到session上,并发起10046 trace。

a. 首先,用某种方法找到需要被跟踪的session.

例如,在SQL*Plus里,找出目标session的OS的进程ID(spid):

select distinct  sess.sid     db_sid,

sess.serial# db_serial#,

process.pid     db_process_id,

process.spid    os_process_id,

sess.program

from v$process process, v$session sess

where sess.paddr = process.ADDR

and sess.sid = &sid;

注:SPID 是操作系统的进程标识符(os pid),PID 是Oracle的进程标识符(ora pid)。

dbms_system.set_ev跟踪该会话

dbms_system.set_ev(    si =>135,

se =>137,

le=>12,

nm=> null )

为该会话关闭sql跟踪

dbms_system.set_ev(    si =>135,

se =>137,

ev    => 10046,               --注意此处跟代开跟踪不一样

le=>0,                           --注意此处跟代开跟踪不一样

nm=> null )

b. 一旦找到OS PID,就可以用以下命令初始化跟踪:

假设需要被跟踪的OSPID是9834. 以sysdba的身份登录到SQL*Plus并执行下面的命令:

SQL>    connect / as sysdba

SQL>    oradebug setospid 7090

Oracle pid: 19, Unix process pid: 3050, image: oracle@Oracle11g (Q000)

SQL>   0radebug unlimit

o

SQL>    oradebug event 10046 trace name context forever,level 12

SQL>    oradebug tracefile_name;

/u01/app/oracle/diag/rdbms/prod/prod/trace/prod_q000_3050.trc

SQL>    oradebug event 10046 trace name context

跟踪过程完成以后,关闭oradebug跟踪:

SQL>  oradebug event 10046 trace name context off

Note: 也可以通过oradebug使用 'setorapid'命令连接到一个session。

c、下面的例中, 使用PID(Oracle进程标识符)(而不是SPID), oradebug命令将被改为:

SQL>    connect / as sysdba

SQL>    oradebug setorapid 29

SQL>    oradebug unlimit

SQL>    oradebug event 10046 trace name context forever,level 12

SQL>    oradebug tracefile_name;

/u01/app/oracle/diag/rdbms/prod/prod/trace/prod_q000_3050.trc

SQL>    oradebug event 10046 trace name context off

跟踪过程完成以后,关闭oradebug跟踪:

SQL>  oradebug event 10046 trace name context off

dbms_monitor.session_trace_enable  (cliend_id=>'',    --只跟踪某种客户端标记的会话

Waits=> true,

Binds=>false)

dbms_monitor.session_trace_disable(cliend_id=>'') --关闭跟踪某种客户端标记的会话

10046 event 知多少的更多相关文章

  1. Oracle 10046 event详解-转载

    0046事件概述Oracle的10046事件,可以跟踪应用程序所执行的SQL语句,并且得到其解析次数.执行次数,CPU使用时间等信息.这对我们分析.定位数据库性能问题是非常有用的. 10046 eve ...

  2. 通过10046 event来获取真实的执行计划

    获取SQL执行计划的方式有很多,但是某些时候获取的SQL执行计划并不是准确的,只有在SQL真实执行之后获取到的SQL PLAN才是真实准确的,其他方式(如,explain plan)获取到的执行计划都 ...

  3. Oracle 11g R2性能优化 10046 event

    作为SQL Trace的扩展功能,Oracle 10046 event(10046事件)是一个重要的调试事件,也可以说是系统性能分析时最重要的一个事件,它包含比SQL Trace更多的信息.但可惜的是 ...

  4. Oracle 10046 event

    http://czmmiao.iteye.com/blog/1497509 10046事件概述Oracle的10046事件,可以跟踪应用程序所执行的SQL语句,并且得到其解析次数.执行次数,CPU使用 ...

  5. 10046 trace详解(1)

    10046 trace帮助我们解析一条/多条SQL.PL/SQL语句的运行状态,这些状态包括:Parse/Fetch/Execute三个阶段中遇到的等待事件.消耗的物理和逻辑读.CPU时间.执行计划等 ...

  6. ORACLE 物理读 逻辑读 一致性读 当前模式读总结浅析

    在ORACLE数据库中有物理读(Physical Reads).逻辑读(Logical Reads).一致性读(Consistant Get).当前模式读(DB Block Gets)等诸多概念,如果 ...

  7. Oracle SQL explain/execution Plan

    From http://blog.csdn.net/wujiandao/article/details/6621073 1. Four ways to get execution plan(anyti ...

  8. SG 复习全部 (全部SG 总览)

    1. SQL 基础 进入查缺补漏阶段 2. PL/SQL 进入 practice 阶段 3. Fundamental 1 这部分还是比较重要 architecture 数据库启动与关闭步骤 insta ...

  9. Xpert 调优

    -- 10046 event 可以定义 SQL TRACE 级别 /* || 默认的10046级别跟 SQL TRACE 一样, 另外还有一些级别: || level 1: SQL Tracing | ...

随机推荐

  1. Ubuntu系统下在github中新增库的方法

    上一篇介绍了Ubuntu16.04系统下安装git的方法.本博客介绍怎么在github上怎么新建库. 如图 root@ranxf:/home/ranxf/learnGit/ranran_jiekou# ...

  2. [转载]C#异步调用四大方法详解

    C#异步调用四大方法是什么呢?C#异步调用四大方法的使用是如何进行的呢?让我们首先了解下什么时候用到C#异步调用: .NET Framework 允许您C#异步调用任何方法.定义与您需要调用的方法具有 ...

  3. Java HSSFworkbook,XSSFworkbook,SXSSFworkbook区别简述

    Java HSSFworkbook,XSSFworkbook,SXSSFworkbook区别简述 一.HSSFworkbook,XSSFworkbook,SXSSFworkbook区别简述 用Java ...

  4. centos 安装iftop

    iftop是linux下的一个流量监控工具,用于查看实时网络流量.官网:http://www.ex-parrot.com/pdw/iftop/ 1.安装必须软件包yum install libpcap ...

  5. centos6搭建redis集群搭建(单机多节点)

    一.安装redis 1.安装gcc环境 yum install gcc-c++ 2.下载源码包并解压 wget http://download.redis.io/releases/redis-3.2. ...

  6. 【第二十四章】 springboot注入servlet

    问:有了springMVC,为什么还要用servlet?有了servlet3的注解,为什么还要使用ServletRegistrationBean注入的方式? 使用场景:在有些场景下,比如我们要使用hy ...

  7. LeetCode——Maximum Binary Tree

    Question Given an integer array with no duplicates. A maximum tree building on this array is defined ...

  8. java中拼写xml

    本文为博主原创,未经博主允许,不得转载: xml具有强大的功能,在很多地方都会用的到.比如在通信的时候,通过xml进行消息的发送和交互. 在项目中有很多拼写xml的地方,进行一个简单的总结. 先举例如 ...

  9. spring cloud kubernetes之serviceaccount permisson报错

    spring boot项目引用spring-cloud-starter-kubernetes <dependency> <groupId>org.springframework ...

  10. Linux——文件处理命令简单学习总结

    linux中一共有三种用户: 1: 所有者u(User) 2: 所属组g(group) 3: 其他用户o(other) linux中权限一共分三种: 1: r read 读权限 2: w write ...