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. SNMP学习笔记之SNMP 原理与实战详解

    原文地址:http://freeloda.blog.51cto.com/2033581/1306743 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法 ...

  2. Android JSON 解析关键代码

    Android Json 解析其实还是蛮重要的知识点,为什么这么说呢,因为安卓通信大部分的协议都是使用 json 的方式传输,我知道以前大部分是使用的 xml ,但是时代在发展社会在进步,json 成 ...

  3. 20145225唐振远《网络对抗》Exp4 恶意代码分析

    20145225唐振远<网络对抗>Exp4 恶意代码分析 基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪 ...

  4. 2018-2019-1 20189218《Linux内核原理与分析》第八周作业

    编译链接的过程 编译就是把文本形式源代码翻译为机器语言形式的目标文件过程. 链接是把目标文件.操作系统的启动代码和用到的库文件进行组织最终形成可执行代码的过程. 对于GCC来说,编译源代码并最终形成可 ...

  5. 剑指Offer——跳台阶

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 思路分析 这个问题可以先从简单开始考虑,台阶只有1阶,只有1种跳法,台阶有2阶,有2种跳法:一种两 ...

  6. HTML基本格式

    <html> <head> <title>放置文章标题</title> <meta http-equiv="Content-Type&q ...

  7. Eclipse的快捷键使用总结

    最近一直在使用Idea开发项目,导致之前一直使用的Eclipse快捷键忘记的差不多了,现在稍微整理了一些,方便以后可以快速切换回来. 常用的Eclipse快捷键总结: Ctrl+S 保存当前正在编辑的 ...

  8. Python3基础 list 推导式 生成与已知列表等长度+元素为0的列表

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  9. 乘积最大|2018年蓝桥杯B组题解析第十题-fishers

    标题:乘积最大 给定N个整数A1, A2, ... AN.请你从中选出K个数,使其乘积最大. 请你求出最大的乘积,由于乘积可能超出整型范围,你只需输出乘积除以1000000009的余数. 注意,如果X ...

  10. 论文笔记——Data-free Parameter Pruning for Deep Neural Networks

    论文地址:https://arxiv.org/abs/1507.06149 1. 主要思想 权值矩阵对应的两列i,j,如果差异很小或者说没有差异的话,就把j列与i列上(合并,也就是去掉j列),然后在下 ...