ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:33.14KB ,
资源ID:11568966      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11568966.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(XXXX1012Oracle数据库诊断事件详解如何获取所有内部事件号.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

XXXX1012Oracle数据库诊断事件详解如何获取所有内部事件号.docx

1、XXXX1012Oracle数据库诊断事件详解如何获取所有内部事件号XXXX1012-Oracle数据库诊断事件详解(如何获取所有内部事件号)什么是Oracle数据库的诊断事件呢?简而言之的来说Oracle的诊断事件确实是Oracle数据库中用于实现一些专门功用的类别,一样要紧用于实现以下几个方面的功用: 改变Oracle数据库的行为 启用收集Oracle数据库的跟踪或者调试信息 启用对Oracle数据库的额外的错误检测4 5r/Rd0一、 Oracle数据库诊断事件简介ITPUB个人空间K$g,r aNVkeCG什么是Oracle数据库的诊断事件呢?简而言之的来说Oracle的诊断事件确实是

2、Oracle数据库中用于实现一些专门功用的类别,一样要紧用于实现以下几个方面的功用:p L8z%I6?&djZ$Z3F0 改变Oracle数据库的行为u R.|5d;+_V4f*OUD0 启用收集Oracle数据库的跟踪或者调试信息ITPUB个人空间,.A%ct8mh4b 启用对Oracle数据库的额外的错误检测如何去设置Oracle数据库的各种诊断事件呢?我们第一来给设置诊断事件下一个简单的定义,确实是让Oracle数据库产生跟踪信息日志文件。设置诊断事件有如下的四种方法:ITPUB个人空间t)R$l 在INIT或者SPFILE初始化文件中设置ITPUB个人空间sv8ONy1S6K这种设置的

3、诊断事件差不多上针关于整个实例的:ITPUB个人空间X:O/A4a| s&yevent=event trace name context forever, level level;ITPUB个人空间ZJy+xF!A假如需要设置多个诊断事件,能够通过以下两种方法:ITPUB个人空间g X|)O,Q*H方法一:使用冒号分隔开两个诊断事件Anj8F0event = 10248 trace name context forever, level 10:10249 trace name context forever, level 104+NQc7l0mO-p0方法二:使用连续的行设置诊断事件ITPUB

4、个人空间vA,dW ;A5E!ZWevent = 10248 trace name context forever, level 10ITPUB个人空间!BQvmGmevent = 10249 trace name context forever, level 10ITPUB个人空间 p#|W(I/nQC0F,afY z 在当前SQL会话中设置N8l#q*SBT&F0针对整个实例的诊断事件的设置:%?kEX.?zHn0ALTER SYSTEM SET EVENTS event trace name context forever, level level;ITPUB个人空间W2Ez*y3A5U

5、禁用设置的诊断事件:ITPUB个人空间4dwbnFSrALTER SYSTEM SET EVENTS event trace name context off;f M-s6TI6nY0针对当前会话的诊断事件的设置:_51K t!vr0ALTER SESSION SET EVENTS event trace name context forever, level level;ITPUB个人空间z:y)s&TJ禁用设置的诊断事件:$QZ Zq0ALTER SESSION SET EVENTS event trace name context off;ITPUB个人空间T4y;l;BU8b| 在另外

6、一个SQL会话中使用DBMS_SYSTEM.SETEV储备过程设置ITPUB个人空间c9k:h%ox.H.KFEXECUTE sys.dbms_system.set_ev(sid, serial#, , , )ITPUB个人空间k&G#mIQ其中的SID,SERIAL#差不多上从视图V$SESSION中获得的。G4tMunkQ)S0 在另外一个会话中使用debug工具设置cR D5T7J&JW0对一个进程设置诊断事件:8%Tv &qCQ/R+3g4B#xR0ORADEBUG EVENT event TRACE NAME CONTEXT FOREVER, LEVEL levelITPUB个人空间

7、%nN-j;h!cbL$?禁用设置的诊断事件:ITPUB个人空间iTIM3hfORADEBUG EVENT event TRACE NAME CONTEXT OFFITPUB个人空间&h s/ow$B9wYM对一个会话设置诊断事件:ITPUB个人空间xz*WRORADEBUG SESSION_EVENT event TRACE NAME CONTEXT FOREVER, LEVEL level0Xs;qyb0禁用设置的诊断事件:)nnf4ct r0ORADEBUG SESSION_EVENT event TRACE NAME CONTEXT OFF注: 在Oracle8i以上的版本中,是使用s

8、ysdba权限的用户登陆sqlplus后执行ORADEBUG命令;在Oracle7.3/8.0的版本中, 是使用internal用户登陆svrmgrl后执行ORADEBUG命令;在更早的Oracle版本中使用ORADBX (ORAMBX在VMS系统上)。因为oradebug承诺在另外的会话中设置诊断事件,如此就能够跟踪一些平常不太trace的会话,例如对 export工具的诊断。诊断事件能够分成会话级的诊断事件和进程级的诊断事件,进程级的诊断事件是能够在INIT初始化参数文件中设定,会话级的诊断事 件那么能够使用alter session.或者alter system .命令来设定。Oracl

9、e数据库在检测诊断事件的时候差不多上先检测会话级的诊断事件,然后再检测进程级的诊断事件。关于设置Oracle数据库的诊断事件都必须遵循一定的语法,例如在会话级别上设置诊断事件能够按照以下的语法来设置:;)JKk4Yt0alter session set events 10181 trace name context forever, level 1000;ITPUB个人空间7uD4q*s;y6q而同样的诊断事件在INIT初始化参数文件中就应该按照以下语法设置:4NS, zCr9k0event=10181 trace name context forever, level 1000ITPUB个人

10、空间y$rz6Jz*Z|e在INIT初始化参数文件中设置诊断事件的时候,一样来说最好在诊断事件后加上相关的注释,注释的内容一样来说应该包括诊断事件的作用、什么缘故要使用那个诊断事件以及设置诊断事件的时刻。ITPUB个人空间&Ls.n2eT9Rr?Nx-X2#k下面那个图是关于设置诊断事件的语法表:ITPUB个人空间#D8V8M-v,TbbxJO E*M!i*pj0诊断事件规定的语法为:ITPUB个人空间fD_)FwB:*qoh0VX%0Event Name:它代表关联事件的符号名或者是一个事件号。假如是immediate,代表是一个赶忙无条件的诊断事件,不用去等待任何人公布它;也能够是指定的O

11、racle错误号码,还能够是具体的事件名。RvI_#ie4?4U P0Action:分为和。Action Key Word的值能够是trace、debugger、crash,而qualifiers的语法那么是依靠于具体的Action。ITPUB个人空间qe2f t:T,P 当为crash的时候,语法为:ITPUB个人空间y2|nY)_?S;f_ (默认为空)|off (在等待事件中禁用crash)| aftertimes (发生此事件N次后crash)N/uhi;As0 当为debugger的时候,语法为:rO6O)Nx!G0 (默认为空)| off (在等待事件中禁用debugger)| a

12、ftertimes (发生此事件N次后debugger)| forever (一旦开始debugger,以后每次发生事件时都要debugger)| lifetime (一旦开始debugger,以后N次发生事件时都要debugger,然后在此诊断事件中禁用debugger)b#DXHrH0 当为trace的时候,语法为:L7mWA4T&q5sH0name ,*ITPUB个人空间K6A8Vk T9pTrace Name:是关联内部trace号的符号名。其中,context是一种专门的trace name,它可不能去调用调试dump操作,然而却会返回给发起诊断事件者是否context跟踪被激活,跟

13、踪是什么级别的。跟踪的级别是指dump程序内 部使用来操纵dump出来详细信息的级别,通常来说,级别越高,dump出来的信息就会越详细,最低级别是1。All是另外一种专门的trace name,它意味着通过ksdtradv宏在编译的时候声明所有的trace names。假如在诊断事件中关联余外一个以上的trace,至少有一个应该是context,相应的,诊断事件中最后一个关联的动作将返回跟踪的级别, 而且在不同的调用中诊断事件号最好唯独。ITPUB个人空间!4Vp L2kWtrace qualifier的语法为:ITPUB个人空间,tz;K-L R*B4DWq(默认为空)|off(在等待事件中

14、禁用那个trace)| after times (发生此事件N次后开始trace)|forever (一旦激活trace,以后每次发生事件时都要trace)| lifetime (一旦开始trace,以后N次成功发生事件时都要trace,然后在此诊断事件中禁用trace)| level (当trace第一次被激活,设置初始化级别为N,之后激活的trace的级别那么由trace type来决定)|type (如何修改以后激活的trace的级别)l6HRv2e7wR0trace type:ITPUB个人空间F2E2mHq*i;increment 升高级别直至最高xvCqg9_2Q0decremen

15、t 降低级别到0同时禁用VfQIh?+C0constant 保持级别不变ITPUB个人空间xK(bLmJ$bh:i此外,关于trace的指定,假如设置诊断事件是immediate,那么意味着trace将可不能等待诊断事件,在trace qualifier中只需要设置trace的级别,lifetime默认为1。关于设置诊断事件,Oracle数据库提供了四个跟踪信息的类别能够供我们来使用:ITPUB个人空间1ij5Cl eUhW)hm1G 类别一:Dump SomethingITPUB个人空间t7Mudw9l!Z-h那个类别的Trace文件是无条件赶忙生成的,一样差不多上dump出Oracle数据

16、库的数据,例如查看重做日志文件的头或者是查看操纵文件中的内容等。这类的诊断事件是不能够在INIT或者SPFILE的初始化参数文件中指定的。ITPUB个人空间 Kc&kh&PfWXB 类别二:Trap on Error3C/dLN w-sqO0那个类别的诊断事件是让Oracle每次生成一个errorstack的错误信息的trace文件。!r1dM8r;V ed0 类别三:Change execution pathITPUB个人空间IFdA(T那个类别的诊断事件要紧是用于修改某些代码段的可执行路径。例如,设置诊断事件10269就能够让Oracle数据库的后台SMON进程不再进行自由空间的重组的操作

17、。:P2Q5cb9I .r0 类别四:Trace somethingITPUB个人空间l9CFZJ&vv那个类别的诊断事件要紧是用于某种专门的目的而需要猎取相应的trace信息,例如对sql调优。最常见的诊断事件10046确实是让Oracle数据库去跟踪每条执行的sql语句的访问路径。ITPUB个人空间H:gx/T*|每种类别的诊断事件都有一种或者多种级别,级别有以下四种表现形式:ITPUB个人空间P#W_dF*uJ Range,例如从1到10ITPUB个人空间%;p!kPu5K:W)_:Q&bY bitmask 例如0x01 0x02 0x04 0x08 0x10+okd_Tk0 flag

18、例如0代表off,1代表onITPUB个人空间7rXpn_#$u&Fk identifier 例如object id, memory address等等在设置使用各种诊断事件的时候,有一些事项是需要注意的:Z;L/8T mz!GC|0 确定使用的诊断事件关于当前的Oracle数据库版本是合法的:因为关于不同版本的Oracle数据库来说,诊断事件的含义和用法都有所不同。ITPUB个人空间8e*_R0J 确定使用的诊断事件承诺设定的级别,在专门多时候设定的级别不同是会阻碍到诊断事件所代表的行为的。.M wSJ q$u e&z8u?0 在INITSID.ORA文件中设置的任何诊断事件,假如Oracl

19、e数据库需要升级,一定要提早注释或者取消。ITPUB个人空间C+W&jpr9WITPUB个人空间 #HC7p1C大部分的诊断事件的数值差不多上在10000至10999范畴内,使用如下的脚本能够查看到所有的诊断事件:ITPUB个人空间Q;mqguMsw1DSET SERVEROUTPUT ON9N&lk0ZIo0DECLARE ITPUB个人空间U,P&RO:Merr_msg VARCHAR2(120);T-s!I&_h0S0iq#VH0BEGINITPUB个人空间)I*s!Ef4j3in_u-|dbms_output.enable (1000000);ITPUB个人空间1O%BL*u2Ck1F

20、OR err_num IN 10000.10999ITPUB个人空间*mW Y HvLmSLOOP#hn8t.QZO-O0err_msg := SQLERRM (-err_num);pCJf.N&y0IF err_msg NOT LIKE %Message |err_num| not found% THEN.Gd ?*V2_,K)R)l/0dbms_output.put_line (err_msg);ITPUB个人空间b|L1F6u.iEND IF;Fm8q#w7UX3X+_0END LOOP;HC%f*N)oAX0END;OO8w7yMOq%h0/ITPUB个人空间Y6?4|%C6SX+#U

21、在UNIX系统中,能够在$ORACLE_HOME/rdbms/mesg/oraus.msg那个文件中找到所有的诊断事件的名称和定义。使用如下脚本能够输出所有的详细的诊断事件的信息:ITPUB个人空间%_5Acu/r Pevent=10000*W A%q%ayP$m!U0while $event -ne 10999 pc;Z rEkbr0doITPUB个人空间gov4Z4Cevent=expr $event + 12v/*K5Km0O8N0oerr ora $eventITPUB个人空间,#V a4Z0Av%$Vdone使用如下脚本能够检查当前会话中设置了哪些诊断事件:W%Y/BM G:i0SE

22、T SERVEROUTPUT ONi-?HF_rP0DECLAREITPUB个人空间 &gmC)L)g#kl_level NUMBER;ITPUB个人空间FZ72A&zL wBEGINITPUB个人空间$SkoEBIFOR l_event IN 10000.10999ITPUB个人空间9a6sVsT,r7uFLOOP!h0Bnl)B(0dbms_system.read_ev (l_event,l_level);9g1T,pA*d3C0IF l_level 0 THENca,O+%x E0dbms_output.put_line (Event |TO_CHAR (l_event)|*d%Gp0r

23、0,DP0 is set at level |TO_CHAR (l_level);r-WQ$aqk6YC0END IF;ITPUB个人空间y)b!MU,QEND LOOP;ITPUB个人空间 1EkU-d,X Yh2R9mEND;ITPUB个人空间k#v0fZ#s2J;RB/大部分的诊断事件的数值差不多上在10000至10999范畴内,使用如下的脚本能够查看到所有的诊断事件:SET SERVEROUTPUT ON DECLARE err_msg VARCHAR2(120); BEGIN dbms_output.enable (1000000); FOR err_num IN 10000.109

24、99 LOOP err_msg := SQLERRM (-err_num); IF err_msg NOT LIKE %Message |err_num| not found% THEN dbms_output.put_line (err_msg); END IF; END LOOP; END; /ORA-10000: control file debug event, name control_file ORA-10001: control file crash event1 ORA-10002: control file crash event2 ORA-10003: control fi

25、le crash event3 ORA-10004: block recovery testing - internal error ORA-10005: trace latch operations for debugging ORA-10006: block recovery testing - external error ORA-10007: log switch debug crash after new log select, thread ORA-10008: log switch debug crash after new log header write, thread OR

26、A-10009: log switch debug crash after old log header write, thread ORA-10010: Begin Transaction ORA-10011: End Transaction ORA-10012: Abort Transaction ORA-10013: Instance Recovery ORA-10014: Roll Back to Save Point ORA-10015: Undo Segment Recovery ORA-10016: Undo Segment extend ORA-10017: Undo Segm

27、ent Wrap ORA-10018: Data Segment Create ORA-10020: partial link restored to linked list (KSG) ORA-10021: KST event to trace control file header writes and reads ORA-10022: trace ktsgsp ORA-10023: Create Save Undo Segment ORA-10024: Write to Save Undo ORA-10026: Apply Save Undo ORA-10027: Specify Dea

28、dlock Trace Information to be Dumped ORA-10028: Dump trace information during lock / resource latch cleanup ORA-10029: session logon (KSU) ORA-10030: session logoff (KSU) ORA-10031: sort debug event (S*) ORA-10032: sort statistics (SOR*) ORA-10033: sort run information (SRD*/SRS*) ORA-10035: Write p

29、arse failures to alert log file ORA-10036: create remote row source (QKANET) ORA-10037: allocate remote row source (QKARWS) ORA-10038: dump row source tree (QBADRV) ORA-10039: type checking (OPITCA) ORA-10041: dump undo records skipped ORA-10043: check consistency of owner/waiter/converter lists in

30、KSQ ORA-10044: free list undo operations ORA-10045: free list update operations - ktsrsp, ktsunl ORA-10046: enable SQL statement timing ORA-10047: trace switching of sessions ORA-10048: Undo segment shrink ORA-10049: protect library cache memory heaps ORA-10050: sniper trace ORA-10051: trace OPI calls ORA-10052: dont clean up obj$ ORA-10053: CBO Enable optimizer trace ORA-10056: dump analyze stats (kdg) ORA-10057: suppress file names in error messages ORA-10058: use table scan cost in tab$.spare1 ORA-10059: simulate er

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1