oracle 10046详解,Oracle 10046事件详解
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事件详解相关推荐
- oracle的空闲等待事件,Oracle 常见的33个等待事件详解
一. 等待事件的相关知识: 1.1 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件. 1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时 ...
- oracle 10046事件详解
10046事件详解 一.10046事件概述 10046是一个Oracle的内部事件(event),通过设置这个事件可以得到Oracle内部执行系统解析.调用.等待.绑定变量等详细的trace信息,即帮 ...
- oracle 10046详解,深入理解Oracle调试事件:10046事件详解
之前也写过一篇10046的文章:10046简介 今天,Think想和大家一起共同深入去理解一下Oracle的这些调试事件 10046事件是SQL_TRACE的扩展,被戏称为"吃了兴奋剂的SQ ...
- oracle 怎么使用跟踪,Oracle 10046跟踪事件使用方法
1.开启10046跟踪事件 alter session set events '10046 trace name context forever, level 12'; 如果想更容易标识trace文件 ...
- 详解Oracle架构、原理、进程,学会世间再无复杂架构
详解Oracle架构.原理.进程,学会世间再无复杂架构 学习是一个循序渐进的过程,从面到点.从宏观到微观,逐步渗透,各个击破,对于Oracle, 怎么样从宏观上来理解呢?先来看一个图,这个图取自于教材 ...
- 详解Oracle AWR运行日志分析工具
在Oracle数据库学习和使用中,遇到性能问题,首要的步骤就是导出AWR分析报告,AWR是Oracle的一个脚本工具,通过周期性快照记录下当时的所有运行数据,数据库管理员可以导出其中一部分数据进行分析 ...
- zabbix如何监控oracle,使用zabbix监控oracle数据库的方法详解
一.概述 zabbix是一款非常强大,同时也是应用最为广泛的开源监控软件,本文将给大家介绍如何利用zabbix+python监控oracle数据库. 二.环境介绍 以下是我安装的环境,实际部署时并不需 ...
- 深入详解Oracle data change notification
深入详解 Oracle data change notification 0.什么是 Oracle data change notification ? 当有多个应用程序或者进程操作同一个数 ...
- oracle中正则表达式规则,Oracle中的正则表达式(及函数)详解
1.概述 相信大家对正则表达式都不陌生,从linux下的命令到Java等编程语言,正则表达式无处不在,虽然我们实际使用的时候也并不一定太多,但是当我们要处理字符串时,它确实是一个强大的工具. 上一篇文 ...
- oracle中调试存储过程,详解Oracle调试存储过程
详解Oracle调试存储过程 一 调试关键步骤 1.在要调试的存储过程右键,选择编辑以进行调试,截图如下: 2.点击小瓢虫,弹出调试窗口,截图如下: 3.输入7839员工编号,点击确认,进行调试,截图 ...
最新文章
- 推荐15个国外使用 CSS3 制作的漂亮网站
- 一文读懂Faster RCNN
- linux服务器dns配置丢失处理
- word服务器草稿位置有必要更改么,如何改变WIN10常用文档的默认位置?真的有必要更改吗?...
- java list 面试题_java【集合】面试题
- urllib2.urlopen超时问题
- 一些学习教程资料等你来拿
- Failed to execute goal org.apache.maven.plugins:maven-resources-plugin
- (87)Verilog HDL:七分频设计
- [转载] Python 多项式拟合(一元回归)
- UIAlertView 弹框
- C++原型模式和模板模式
- 暗物质影响星系,有没有影响太阳系
- stata软件不出图_Stata软件的图形绘制—1
- 斗鱼tv 服务器响应失败,斗鱼tv打不开怎么办 斗鱼直播打不开得解决办法
- Python实现微信自动抠图换底助手
- android webview 清空内容,Android WebView清空缓存
- ASP.net校友录毕业设计(源代码+论文+开题报告+答辩PPT)ASP.NET小型证券术语解释及翻译系统的设计与开发(源代码+论文)
- 企业微信有营销机器人吗?
- Vue--基础模板语法以及计算属性
热门文章
- git提交到github总是要输入密码_GitHub不为人知的秘密
- oracle常用用户权限,oracle创建新用户及授予常用权限
- linux mysql timestamp_MySQL时间类型Timestamp和Datetime 的深入理解
- java 移动页面中的图片上传_移动端上传图片(ajax跨域请求)
- String字符串拼接小例
- 计算机组成原理第二章数据,计算机组成原理第二章数据在计算机中的表示
- linux挂载fc存储有超级坏块_Nand Flash基础知识与坏块管理机制的研究
- python怎么引入os模块的函数_Python里的OS模块常用函数说明
- anaconda下安装python,Windows下Anaconda的安装和简单使用方法
- python程序分析,用Python编写分析Python程序性能的工具的教程