dump oracle events中间篇“event的分类与dump”
event的分类和dump
oracle中的event根据它们的用途,可以分为如下四类,分别是:
1. immediate dump
2. on-error dump
3. change behavior
4. trace
这四类event,分别对应下面四种不同的用途:
1. dump diagnostic information on request
2. dump diagnostic information when an error occurs
3. change database behavior
4. produce trace diagnostics as the database runs
那么,如何设置这四类event呢?或者说如果dump这四类event呢?可以有四种方法来dump:
1、 在parameter file中使用event initialization parameter
2、 alter session|system set events
3、 sys.dbms_system.set_ev()
4、 oradebug
下面来分别解释一下这四类event。
immediate dumps
这类event都是根据要求随时dump相应的内容到一个trace file中。常见的immediate dumps包括有:文件头部的dump(如controlf,redohdr,file_hdrs),系统状态的dump(systemstate),进程的状态的dump(processtate)。
这类dump,很显然不能在parameter file中使用event initialization parameter。其他三种方法都可以使用,其中alter session最常用:
1. alter session set events ‘immediate trace name
2. oradebug dump
3. sys.dbms_system.set_ev(sid,serial#,65535,
这里的
举例如下:
1. alter session set events ‘immediate trace name controlf level 10’;
2. execute sys.dbms_system.set_ev(7,10,65535,10,’controlf’);
3. oradebug setospid 4081;
oradebug dump controlf 10;
on-error dumps
这类dump和immdiate dumps很类似,只不过它发生的时间是前面的错误event发生的时候。event name就是oracle的ORA-nnn错误代码,如死锁的错误代码是ORA-00060
常见的一种on-error dump是dump出出错时候的进程的调用栈,trace name是errorstack。下面我就对这种常见的on-error dump的level说明一下:
level description
0 error stack only
1 error stack and function call stack (if implemented)
2 as 1 plus process state
3 as 2 plus the context area (all cursors and current cursor highlighted).
这类event该如何dump能,它可以使用下面的三种方法:
1. 在parameter file中设置event = “
2. alter session set events ‘
3. 在绑定一个进程以后,oradebug session_event
举例如下:
如当死锁发生的时候,dump出的调用栈信息的event是:
1. 在parameter file中设置event = “60 trace name errorstack level 1”;这样每当死锁发生的时候,它的相关信息就被dump到相应的trace file中。
2. alter session set events ‘60 trace name errorstack level 1’;
3. > oradebug setospid 4018;
> oradebug unlimit;
> oradebug dump errorstack 1;
change behavior dumps
当这类事件发生的时候,你可以通过dump做如下的操作:
1. change the oracle server’s behavior
2. enable hidden features
3. work around problems
4. perform specialized tuning
这类事件的dump设置一般都是在parameter file中设置:
event = “
如阻止SMON合并空闲空间事件如下设置:
event = “10269 trace name context forever,level 10”。
trace events dumps
这类event的dump,就是dump出event的trace内容,方便解决与跟踪问题。这类event的常用的dump设置方法是在parameter file中或者使用alter session:
1. event = “
2. alter session|system set events ‘
如alter session set events ‘10046 trace name context forever,level 12’;
下面对各类event的dump设置语法做一个总结,如下表:
uses of diagnostic dumps and events | event name | trace name |
immediate dump | IMMEDIATE | |
on-error dump | error# | ERRORSTACK |
change behavior | event# | CONTEXT |
trace | event# | CONTEXT |
这里需要注意的一点是,不要给这个表格的表象所蒙蔽,如on-error dump的trace name就只能是ERRORSTACK,它只是大多数的情况下是这个trace name(大部分的情况下,我们把一种trace name称为一种dump),实际上on-error dump也可以和其他的dump相联系在一起,如event = \'60 trace name processstate level 10\',这个就是说在60错误事件(即死锁)发生的时候,以级别10去dump这个process的state。因此event=\'event_name TRACE NAME dump_name,level\'是说明当某个event发生的时候,以级别level去dump某个trace name(即某种dump)。这点是一定要注意的。
oracle是如何处理各种event的呢?或者说是按照什么顺利来处理那麽多的设置的event呢?请看下图:
此图反应了oracle的执行event的内部顺序,从途中可以看到先执行session event,后执行process event。那么什么是session event,什么又是process event呢?
Pocess events are initialized at process startup with the “event” initialization parameter.即在parameter file中设置的那些event。
Session events are modified dynamically with an ALTER SESSION or ALTER SYSTEM command.即使用alter session 或者alter system设置的那些event。
----------------------------------
未完待续……
建议继续学习:
- Java heap dump触发和分析 (阅读:6613)
- dump oracle events开始篇“event定义” (阅读:2757)
- 从dump文件中抽取部分库表 (阅读:2458)
- dump oracle events过渡篇“events知多少” (阅读:2241)
- Android安全–一次简单的脱壳Dump dex实践 (阅读:1883)
- oracle跟踪事件(dump)总结 (阅读:1712)
- core dump磁盘报警问题排查过程 (阅读:1231)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:小霸王 来源: ilonng
- 标签: dump events
- 发布时间:2009-10-12 10:07:09
- [54] IOS安全–浅谈关于IOS加固的几种方法
- [53] Oracle MTS模式下 进程地址与会话信
- [53] Go Reflect 性能
- [52] 如何拿下简短的域名
- [51] android 开发入门
- [49] 读书笔记-壹百度:百度十年千倍的29条法则
- [48] 图书馆的世界纪录
- [46] 【社会化设计】自我(self)部分――欢迎区
- [38] 程序员技术练级攻略
- [31] 视觉调整-设计师 vs. 逻辑