DSI含以下课程:
DSI3X 为8i
DSI4X 为9i
301笔记:
event的种类:
1.通过初始化参数event="<event name> <action> [:<event name> <action> ]"
2.alter session set events '<event name> <action> [:<event name> <action> ]'
3.alter system set events '<event name> <action> [:<event name> <action> ]'
4.exec dbms_system.SET_EV(sid,serial#,event name,level,'action');
5.oradebug <command>;
注:event="<event name> <action> [:<event name> <action> ]"的说明如下:
一.event name:
(1)可以是一个event的名称,如果不是event的名称,就默认为immediate。(但是immediate关键字不能出现在初始化文件中)
(2)可以是event的数字,如10046,10053,范围是10000至10999。每个event号码的含义后续会介绍。
二.当设定了event name后,action有可能有3种取值:crash、debugger、trace,其中trace我们比较常用。这里具体说说trace的这种用法:
指定trace时,语法为:
<event name> "trace" "name" <trace name> <trace qualifier>[,<trace qualifier>]...
这里<trace name>是一个内部的trace 标记,如context。
这里<trace qualifier>可以是forever、off、level n,一般情况下n是trace的级别,n越高级别越高;但是如果是dump数据块的时候,n指dba(data block address,数据块的地址)。
综上,可以写event="10046 trace name context forever:10053 trace name context forever,level 10"
注意,当初始化文件中有2个event="xxxxx",以后面一个为准,前面一个失效。
alter session set events 'immediate trace name <dump> level <n>'
这里的<dump>可以是controlf、redohdr、file_hdrs、systemstate、processstate
如:alter session set events 'immediate trace name controlf level 10';
同理的:oradebug dump controlf 10;
同理的:exec dbms_system.set_ev(7,10,65535,10,'controlf');
上面的65535指immediate。因此:alter session set events '65535 trace name controlf level 10';也是可以的。
2.on-error dump:
event="<errornum> trace name errorstack level <n>"
alter session set events '<errornum> trace name errorstack level <n>';
oradebug event <errornum> trace name errorstack level <n>;
注意ora-3113的errornum不适用,ora-3113是"end-of-file on communication channel"
on-error dump的level 级别有3个:
1.error stack and function call stack(if implemented)
2. as 1 plus process states
3. as 2 plus context area(all cursor and current cursor highlighted)
3.change behavior:
通常用在初始化文件中。
event="<event> trace name context forever,level<n>"
4.trace events:
event="<event> trace name context forever,level <n>"
alter session set events '<event> trace name context forever,level <n>';
alter system set events '<event> trace name context forever,level <n>';
trace eventd level 有4个级别:
1.enable standard sql_trace functionality(默认)
4.as 1 plus trace bind values
8.as level 1 plus wait
12.as level 1 plus both bind values and wait
hang和loop的区别:
1、hang:
等待的东西never happen.
cpu使用比较低。
用v$session_wait/v$lock/v$latch/v$latchholder来诊断。
2、loop:
等待的东西not going to happen。
cpu使用常常100%,且有大量active事务。
也用v$session_wait/v$lock/v$latch/v$latchholder来诊断。
对于hang问题,用v$session_wait来诊断
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30204651/viewspace-1791830/ ,如需转载,请注明出处,否则将追究法律责任。