10046事件说明10046事件是Oracle提供的内部事件,是对SQL_TRACE的增强.

10046事件可以设置以下四个级别:

1 - 启用标准的SQL_TRACE功能,等价于sql_trace

4 - Level 1 加上绑定值(bind values)

8 - Level 1 + 等待事件跟踪

12 - Level 1 + Level 4 + Level 8

类似sql_trace,10046事件可以在全局设置,也可以在session级设置。

开启10046事件

SQL> set autotrace off

SQL> SET LINESIZE 80 HEADING OFF FEEDBACK OFF

SELECT

RPAD('USERNAME : ' || s.username,80) ||

RPAD('OSUSER : ' || s.osuser, 80) ||

RPAD('PROGRAM : ' || s.program, 80) ||

RPAD('SPID : ' || p.spid, 80) ||

RPAD('SID : ' || s.sid, 80) ||

RPAD('SERIAL# : ' || s.serial#, 80) ||

RPAD('MACHINE : ' || s.machine, 80) ||

RPAD('TERMINAL : ' || s.terminal,80) ||

RPAD('SQL TEXT : ' || q.sql_text,80)

FROM v$session s

,v$process p

,v$sql q

WHERE s.paddr = p.addr

SQL> 2 3 4 5 6 7 8 9 10 11 12 13 14 15 AND s.sid = '&SID'

AND s.sql_address = q.address(+)

AND s.sql_hash_value = q.hash_value(+);

16 17 Enter value for sid: 102

USERNAME : STAR

OSUSER : oracle

PROGRAM : sqlplus@db01 (TNS V1-V3)

SPID : 26230

SID : 102

SERIAL# : 878

MACHINE : db01

TERMINAL :

SQL TEXT : SELECT ROWID RID FROM COMMUL_INV WHERE ITEMNUMBER NOT LIKE '41%'

SQL> oradebug setospid 26230

Oracle pid: 55, Unix process pid: 26230, image: oracle@db01 (TNS V1-V3)

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

Statement processed.

SQL> oradebug event 10046 trace name context off

Statement processed.

SQL> oradebug tracefile_name

/home/oracle/admin/commdb/udump/ora_26230.trc

SQL>

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

会话已更改。

关闭10046事件

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

会话已更改。

SQL> exec dbms_system.set_SQL_TRACE_in_session(127,31923,true);

SQL> select * from dual;

SQL> exec dbms_system.set_SQL_TRACE_in_session(127,31923,false);

当我们使用sql_trace/10046等事件进行进程跟踪时,会生成跟踪文件.跟踪文件名称由以下几部分组成:

ora.trc

以下脚本用户获得跟踪文件名称:

---- 当前 session < xmlnamespace prefix ="o" />

SELECT d.value|| '/' ||lower(rtrim(i.instance, chr( 0 )))|| 'ora' ||p.spid|| '.trc' trace_file_name

from

( select p.spid from v$mystat m,v$session s, v$process p

where m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr) p,

( select t.instance from v$thread t,v$parameter v

where v.name = 'thread' and (v.value = 0 or t.thread# = to_number(v.value))) i,

( select value from v$parameter where name = 'user_dump_dest' ) d;

---- 其他用户 session

SELECT d.value|| '/' ||lower(rtrim(i.instance, chr( 0 )))|| 'ora' ||p.spid|| '.trc' trace_file_name

from

( select p.spid from v$session s, v$process p

where s.sid= '127' and s. SERIAL#= '31923' and p.addr = s.paddr) p,

( select t.instance from v$thread t,v$parameter v

where v.name = 'thread' and (v.value = 0 or t.thread# = to_number(v.value))) i,

( select value from v$parameter where name = 'user_dump_dest' ) d;

SELECT a.VALUE

|| b.symbol

|| c.instance_name

|| 'ora'

|| d.spid

|| '.trc' trace_file

FROM (SELECT VALUE

FROM v$parameter

WHERE NAME = 'user_dump_dest') a,

(SELECT SUBSTR (VALUE, -6, 1) symbol

FROM v$parameter

WHERE NAME = 'user_dump_dest') b,

(SELECT instance_name

FROM v$instance) c,

(SELECT spid

FROM v$session s, v$process p, v$mystat m

WHERE s.paddr = p.addr AND s.SID = m.SID AND m.statistic# = 0) d

/

SQL> select sid,serial#,username from v$session

2 where username is not null;

SID SERIAL# USERNAME

8 2041 SYS

9 437 EYGLE

设置跟踪:

SQL> exec dbms_system.set_sql_trace_in_session(9,437,true)

PL/SQL procedure successfully completed.

....

可以等候片刻,跟踪session执行任务,捕获sql操作...

....

停止跟踪:

SQL> exec dbms_system.set_sql_trace_in_session(9,437,false)

PL/SQL procedure successfully completed.

执行跟踪:

SQL> exec dbms_system.set_ev(9,437,10046,8,'eygle');

PL/SQL procedure successfully completed.

结束跟踪:

SQL> exec dbms_system.set_ev(9,437,10046,0,'eygle');

PL/SQL procedure successfully completed.

当我们通过alter session的方式设置了sql_trace,这个设置是不能通过show parameter的方式得到的,我们需要通过dbms_system.read_ev来获取:

SQL> set feedback off

SQL> set serveroutput on

SQL> declare

2 event_level number;

3 begin

4 for event_number in 10000..10999 loop

5 sys.dbms_system.read_ev(event_number, event_level);

6 if (event_level > 0) then

7 sys.dbms_output.put_line(

8 'Event ' ||

9 to_char(event_number) ||

10 ' is set at level ' ||

11 to_char(event_level)

12 );

13 end if;

14 end loop;

15 end;

16 /

Event 10046 is set at level 1

oracle 10046详解,Oracle 10046事件详解相关推荐

  1. oracle的空闲等待事件,Oracle 常见的33个等待事件详解

    一. 等待事件的相关知识: 1.1 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件. 1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时 ...

  2. oracle 10046事件详解

    10046事件详解 一.10046事件概述 10046是一个Oracle的内部事件(event),通过设置这个事件可以得到Oracle内部执行系统解析.调用.等待.绑定变量等详细的trace信息,即帮 ...

  3. oracle 10046详解,深入理解Oracle调试事件:10046事件详解

    之前也写过一篇10046的文章:10046简介 今天,Think想和大家一起共同深入去理解一下Oracle的这些调试事件 10046事件是SQL_TRACE的扩展,被戏称为"吃了兴奋剂的SQ ...

  4. oracle 怎么使用跟踪,Oracle 10046跟踪事件使用方法

    1.开启10046跟踪事件 alter session set events '10046 trace name context forever, level 12'; 如果想更容易标识trace文件 ...

  5. 详解Oracle架构、原理、进程,学会世间再无复杂架构

    详解Oracle架构.原理.进程,学会世间再无复杂架构 学习是一个循序渐进的过程,从面到点.从宏观到微观,逐步渗透,各个击破,对于Oracle, 怎么样从宏观上来理解呢?先来看一个图,这个图取自于教材 ...

  6. 详解Oracle AWR运行日志分析工具

    在Oracle数据库学习和使用中,遇到性能问题,首要的步骤就是导出AWR分析报告,AWR是Oracle的一个脚本工具,通过周期性快照记录下当时的所有运行数据,数据库管理员可以导出其中一部分数据进行分析 ...

  7. zabbix如何监控oracle,使用zabbix监控oracle数据库的方法详解

    一.概述 zabbix是一款非常强大,同时也是应用最为广泛的开源监控软件,本文将给大家介绍如何利用zabbix+python监控oracle数据库. 二.环境介绍 以下是我安装的环境,实际部署时并不需 ...

  8. 深入详解Oracle data change notification

    深入详解 Oracle  data change notification   0.什么是 Oracle  data change notification  ? 当有多个应用程序或者进程操作同一个数 ...

  9. oracle中正则表达式规则,Oracle中的正则表达式(及函数)详解

    1.概述 相信大家对正则表达式都不陌生,从linux下的命令到Java等编程语言,正则表达式无处不在,虽然我们实际使用的时候也并不一定太多,但是当我们要处理字符串时,它确实是一个强大的工具. 上一篇文 ...

  10. oracle中调试存储过程,详解Oracle调试存储过程

    详解Oracle调试存储过程 一 调试关键步骤 1.在要调试的存储过程右键,选择编辑以进行调试,截图如下: 2.点击小瓢虫,弹出调试窗口,截图如下: 3.输入7839员工编号,点击确认,进行调试,截图 ...

最新文章

  1. 推荐15个国外使用 CSS3 制作的漂亮网站
  2. 一文读懂Faster RCNN
  3. linux服务器dns配置丢失处理
  4. word服务器草稿位置有必要更改么,如何改变WIN10常用文档的默认位置?真的有必要更改吗?...
  5. java list 面试题_java【集合】面试题
  6. urllib2.urlopen超时问题
  7. 一些学习教程资料等你来拿
  8. Failed to execute goal org.apache.maven.plugins:maven-resources-plugin
  9. (87)Verilog HDL:七分频设计
  10. [转载] Python 多项式拟合(一元回归)
  11. UIAlertView 弹框
  12. C++原型模式和模板模式
  13. 暗物质影响星系,有没有影响太阳系
  14. stata软件不出图_Stata软件的图形绘制—1
  15. 斗鱼tv 服务器响应失败,斗鱼tv打不开怎么办 斗鱼直播打不开得解决办法
  16. Python实现微信自动抠图换底助手
  17. android webview 清空内容,Android WebView清空缓存
  18. ASP.net校友录毕业设计(源代码+论文+开题报告+答辩PPT)ASP.NET小型证券术语解释及翻译系统的设计与开发(源代码+论文)
  19. 企业微信有营销机器人吗?
  20. Vue--基础模板语法以及计算属性

热门文章

  1. git提交到github总是要输入密码_GitHub不为人知的秘密
  2. oracle常用用户权限,oracle创建新用户及授予常用权限
  3. linux mysql timestamp_MySQL时间类型Timestamp和Datetime 的深入理解
  4. java 移动页面中的图片上传_移动端上传图片(ajax跨域请求)
  5. String字符串拼接小例
  6. 计算机组成原理第二章数据,计算机组成原理第二章数据在计算机中的表示
  7. linux挂载fc存储有超级坏块_Nand Flash基础知识与坏块管理机制的研究
  8. python怎么引入os模块的函数_Python里的OS模块常用函数说明
  9. anaconda下安装python,Windows下Anaconda的安装和简单使用方法
  10. python程序分析,用Python编写分析Python程序性能的工具的教程