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. 4 个技巧学习 Golang

    到达 Golang 大陆:一位资深开发者之旅. 2014 年夏天…… IBM:“我们需要你弄清楚这个 Docker.” 我:“没问题.” IBM:“那就开始吧.” 我:“好的.”(内心声音):”Doc ...

  2. Cannot find JRE '1.8'

  3. Python入门之os.walk()方法

    os.walk方法,主要用来遍历一个目录内各个子目录和子文件. os.walk(top, topdown=True, onerror=None, followlinks=False) 可以得到一个三元 ...

  4. Django 将数据库查出的 QuerySet 对象转换为 json 字符串

    通过Django查询出MySQL数据库的数据,并将查询出的QuerySet 对象转化成 json 字符串. 写这个例子的作用主要是用来为手机端提供接口用,记录一下,以后 说不准 肯定能用到! ---- ...

  5. 20145310 Exp7 网络欺诈技术防范

    实验后回答问题 (1)通常在什么场景下容易受到DNS spoof攻击 局域网内最容易遭受攻击.通过DNS欺骗就可以轻松地将网址转到钓鱼网站.而我们平时最常用的局域网应该就是公共热点吧,特别是有的地方的 ...

  6. 高级版本VS打开低版本VS工程,无法调试的问题

    选中Debugging选项,在Command命令行里面输入生成exe文件的相对路径. 转载:http://blog.csdn.net/x931100537/article/details/405052 ...

  7. hdu 1671 Phone List(字典树)题解

    题意:给一连串数字,如果有前缀重复给出NO,否则给出YES 思路:这道题要delete否则爆内存,之前想的直接在insert()里解决查询有错误,所以先保存数据再查询. 代码: #include< ...

  8. hdu 3874(树状数组)题解

    Problem Description Mery has a beautiful necklace. The necklace is made up of N magic balls. Each ba ...

  9. each遍历小结

    JQ中的遍历函数 (逐个加工函数) 格式: $(‘.box p’).each(function(index,element){ })也可以写成 $.each(‘.box p’,function(ind ...

  10. linux中C语言发送广播报文

    2. 指令的解决方法: oute add -net 255.255.255.255 netmask 255.255.255.255 dev eth0 metric 1 或者 route add -ho ...