XXXX1012-Oracle数据库诊断事件详解(如何获取所有内部事件号)精编版

上传人:ahu****ng1 文档编号:141869403 上传时间:2020-08-13 格式:DOC 页数:22 大小:156KB
返回 下载 相关 举报
XXXX1012-Oracle数据库诊断事件详解(如何获取所有内部事件号)精编版_第1页
第1页 / 共22页
XXXX1012-Oracle数据库诊断事件详解(如何获取所有内部事件号)精编版_第2页
第2页 / 共22页
XXXX1012-Oracle数据库诊断事件详解(如何获取所有内部事件号)精编版_第3页
第3页 / 共22页
XXXX1012-Oracle数据库诊断事件详解(如何获取所有内部事件号)精编版_第4页
第4页 / 共22页
XXXX1012-Oracle数据库诊断事件详解(如何获取所有内部事件号)精编版_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《XXXX1012-Oracle数据库诊断事件详解(如何获取所有内部事件号)精编版》由会员分享,可在线阅读,更多相关《XXXX1012-Oracle数据库诊断事件详解(如何获取所有内部事件号)精编版(22页珍藏版)》请在金锄头文库上搜索。

1、精品资料推荐Oracle数据库诊断事件详解什么是Oracle数据库的诊断事件呢?简而言之的来说Oracle的诊断事件就是Oracle数据库中用于实现一些特殊功用的类别,一般主要用于实现以下几个方面的功用: 改变Oracle数据库的行为 启用收集Oracle数据库的跟踪或者调试信息 启用对Oracle数据库的额外的错误检测4 5r/Rd0一、 Oracle数据库诊断事件简介ITPUB个人空间K$g,r aNVkeCG什么是Oracle数据库的诊断事件呢?简而言之的来说Oracle的诊断事件就是Oracle数据库中用于实现一些特殊功用的类别,一般主要用于实现以下几个方面的功用:p L8z%I6?&

2、djZ$Z3F0 改变Oracle数据库的行为u R.|5d;+_V4f*OUD0 启用收集Oracle数据库的跟踪或者调试信息ITPUB个人空间,.A%ct8mh4b 启用对Oracle数据库的额外的错误检测如何去设置Oracle数据库的各种诊断事件呢?我们首先来给设置诊断事件下一个简单的定义,就是让Oracle数据库产生跟踪信息日志文件。设置诊断事件有如下的四种方法:ITPUB个人空间t)R$l 在INIT或者SPFILE初始化文件中设置ITPUB个人空间sv8ONy1S6K这种设置的诊断事件都是针对于整个实例的:ITPUB个人空间X:O/A4a| s&yevent=event trace

3、 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个人空间vA,dW ;A5E!ZWevent = 10248 trace name context forev

4、er, 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禁用设置的诊断事件:ITPUB个人空间4dwbnFSrALTER SYSTEM SET EVENTS even

5、t 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| 在另外一个SQL会话中使用DBMS_SYSTEM.SETEV存储过程设置ITPUB个人空间c9k:h%ox.H.KF

6、EXECUTE 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个人空间%nN-j;h!cbL$?禁用设置的诊断事件:ITPUB个人空间iTIM3hfORADEBUG EVENT eve

7、nt 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以上的版本中,是使用sysdba权限的用户登陆sqlplus后执行ORADEBUG命令;在Oracle7.3/8.0的版本中, 是使用i

8、nternal用户登陆svrmgrl后执行ORADEBUG命令;在更早的Oracle版本中使用ORADBX (ORAMBX在VMS系统上)。因为oradebug允许在另外的会话中设置诊断事件,这样就可以跟踪一些平时不太trace的会话,例如对 export工具的诊断。诊断事件可以分成会话级的诊断事件和进程级的诊断事件,进程级的诊断事件是可以在INIT初始化参数文件中设定,会话级的诊断事 件则可以使用alter session.或者alter system .命令来设定。Oracle数据库在检测诊断事件的时候都是先检测会话级的诊断事件,然后再检测进程级的诊断事件。对于设置Oracle数据库的诊断

9、事件都必须遵循一定的语法,例如在会话级别上设置诊断事件可以按照以下的语法来设置:;)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个人空间y$rz6Jz*Z|e在INIT初始化参数文件中设置诊断事件的时候,一般来说最好在诊断事件后加上相关的注释,注释的内

10、容一般来说应该包括诊断事件的作用、为什么要使用这个诊断事件以及设置诊断事件的时间。ITPUB个人空间&Ls.n2eT9Rr?Nx-X2#k下面这个图是关于设置诊断事件的语法表:ITPUB个人空间#D8V8M-v,TbbxJO E*M!i*pj0诊断事件规定的语法为:ITPUB个人空间fD_)FwB:*qoh0VX%0Event Name:它代表关联事件的符号名或者是一个事件号。如果是immediate,代表是一个立即无条件的诊断事件,不用去等待任何人发布它;也可以是指定的Oracle错误号码,还可以是具体的事件名。RvI_#ie4?4U P0Action:分为和。Action Key Word

11、的值可以是trace、debugger、crash,而qualifiers的语法则是依赖于具体的Action。ITPUB个人空间qe2f t:T,P 当为crash的时候,语法为:ITPUB个人空间y2|nY)_?S;f_ (默认为空)|off (在等待事件中禁用crash)| aftertimes (发生此事件N次后crash)mw&K)L %zN/uhi;As0 当为debugger的时候,语法为:rO6O)Nx!G0 (默认为空)| off (在等待事件中禁用debugger)| aftertimes (发生此事件N次后debugger)| forever (一旦开始debugger,以

12、后每次发生事件时都要debugger)| lifetime (一旦开始debugger,以后N次发生事件时都要debugger,然后在此诊断事件中禁用debugger)b#DXHrH0 当为trace的时候,语法为:L7mWA4T&q5sH0name ,*ITPUB个人空间K6A8Vk T9pTrace Name:是关联内部trace号的符号名。其中,context是一种特殊的trace name,它不会去调用调试dump操作,但是却会返回给发起诊断事件者是否context跟踪被激活,跟踪是什么级别的。跟踪的级别是指dump程序内 部使用来控制dump出来详细信息的级别,通常来说,级别越高,d

13、ump出来的信息就会越详细,最低级别是1。All是另外一种特殊的trace name,它意味着通过ksdtradv宏在编译的时候声明所有的trace names。如果在诊断事件中关联多余一个以上的trace,至少有一个应该是context,相应的,诊断事件中最后一个关联的动作将返回跟踪的级别, 而且在不同的调用中诊断事件号最好唯一。ITPUB个人空间!4Vp L2kWtrace qualifier的语法为:ITPUB个人空间,tz;K-L R*B4DWq(默认为空)|off(在等待事件中禁用这个trace)| after times (发生此事件N次后开始trace)|forever (一旦激

14、活trace,以后每次发生事件时都要trace)| lifetime (一旦开始trace,以后N次成功发生事件时都要trace,然后在此诊断事件中禁用trace)| level (当trace第一次被激活,设置初始化级别为N,之后激活的trace的级别则由trace type来决定)|type (如何修改以后激活的trace的级别)l6HRv2e7wR0trace type:ITPUB个人空间F2E2mHq*i;increment 升高级别直至最高xvCqg9_2Q0decrement 降低级别到0并且禁用VfQIh?+C0constant 保持级别不变ITPUB个人空间xK(bLmJ$bh:i此外,对于trace的指定,如果设置诊断事件是immediate,那么意味着trace将不会等待诊断事件,在trace qualifier中只需要设置trace的级别,lifetime默认为1。对于设置诊断事件,Oracle数据库提供了四个跟踪信息的类别可以供我们来使用:ITPUB个人空间1ij5Cl eUhW)hm1G 类别一:Dump SomethingITP

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号