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. MySQL Crash Course #17# Chapter 25. 触发器(Trigger)

    推荐看这篇mysql 利用触发器(Trigger)让代码更简单 以及 23.3.1 Trigger Syntax and Examples 感觉有点像 Spring 里的 AOP 我们为什么需要触发器 ...

  2. 架构和性能优化的核心原则(康神sf讲座学习笔记)

    其实架构性能优化的核心就是分,分为分离.分层.分布. 分离动静分离静态资源.动态页面的分离 比如,一个页面有很多静态图片,静态的图片.动态数据.静态CSS.js,图片一般用cdn,但静态资源在使用域名 ...

  3. c++ sleep(windows/linux)

    c标准中包含了一个sleep用以实现当前线程暂停执行n毫秒,如下所示: 函数名: sleep 功 能: 执行挂起一段时间 用 法: unsigned sleep(unsigned seconds); ...

  4. C++设计模式 之 “组件协作”模式:Template Method、Strategy、Observer

    “组件协作”模式: #现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式. #典型模式: Templ ...

  5. 20145216史婧瑶 《网络对抗》 MSF基础应用

    20145216史婧瑶 <网络对抗> MSF基础应用 实验回答问题 用自己的话解释什么是exploit,payload,encode. exploit:渗透攻击模块,测试者利用它来攻击一个 ...

  6. 20165211 2017-2018-2 《Java程序设计》第2周学习总结

    20165211 2017-2018-2 <Java程序设计>第2周学习总结 教材学习内容总结 本周,我学习了书本上二三两章的内容,以下是我整理的主要知识 第二章 基本数据类型与数 标识符 ...

  7. tf.multiply()和tf.matmul()区别

    (1)tf.multiply是点乘,即Returns x * y element-wise. (2)tf.matmul是矩阵乘法,即Multiplies matrix a by matrix b, p ...

  8. Goldbach`s Conjecture(素筛水题)题解

    Goldbach`s Conjecture Goldbach's conjecture is one of the oldest unsolved problems in number theory ...

  9. 风景区的面积及道路状况分析问题 test

    参考文献:   https://wenku.baidu.com/view/b6aed86baf1ffc4ffe47ac92.html #include <bits/stdc++.h> us ...

  10. java 监控工具 jconsole

    如图