DSI的全称是DATA SERVER INTERNALS,是oracle为售后服务工程师进行的培训教程。
DSI含以下课程:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
DSI301:ADVANCED SERVER SUPPORT SKILLS DSI302:DATA MANAGEMENT DSI303:DATABASE BACKUP AND RECOVERY DSI304:QUERY MANAGEMENT DSI305:DATABASE TUNING DSI306:VERY LARGE DATABASES DSI307:DISTRIBUTION AND REPLICATION DSI308:PARALLEL SERVER DSI401E:ADVANCE SUPPORT SKILLS DSI401:DUMPS CRASHES AND CORRUPTIONS DSI402E:DATA TYPE AND BLOCK STRUCTURES DSI402:SPACE AND TRANSACTION MANAGEMENT DSI403E:RECOVERY ARCHITECTURE COMPONTS DSI404E:QUERY OPTIMIZER DSI405:INSTANCE TUNING DSI408:REAL APPLICATION CLUSTERS INTERNALS |
301笔记:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
设置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",以后面一个为准,前面一个失效。 |
event的种类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
1.immediate dump: 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来诊断 |
5条评论
看天书一样。囧。
大哥,来看看你 O(∩_∩)O
不错,总结得很精辟。收了。
请问有DSI304文档吗?我下了好多都打不开,郁闷!
re fsm:我也没有304,只有301,303和306,不过3系列都是8i的吧,有点老了。还是看看9i的。
hi
can i get the dsi407 document i dunno chinese so cant create account in itpub.net todownload.
regards
Dinesh