ORACLE诊断事件
Oracle为RDBMS提供了多种的诊断工具,诊断事件(Event)是其中一种常用、好用的方法,它使DBA可以方便的转储数据库各种结构及跟踪特定事件的发生.
一、Event的通常格式及分类
1、 通常格式如下:
EVENT="<事件名称><动作><跟踪项目><范围限定>"
2、 Event分类
诊断事件大体上可以分为四类:
a. 转储类事件:它们主要用于转储Oracle的一些结构,例如转储一下控制文件、数据文件头等内容。
b. 捕捉类事件:它们用于捕捉一些Error事件的发生,例如捕捉一下ORA-04031发生时一些Rdbms信息,以判断是Bug还是其它原因引起的这方面的问题。
c. 改变执行途径类事件:它们用于改主一些Oracle内部代码的执行途径,例如设置10269将会使Smon进程不去合并那些Free的空间。
d. 跟踪类事件:这们用于获取一些跟踪信息以用于Sql调优等方面,最典型的便是10046了,将会对Sql进行跟踪。
3、 说明:
a. 如果immediate放在第一个说明是无条件事件,即命令发出即转储到跟踪文件。
b. trace name位于第二、三项,除它们外的其它限定词是供Oracle内部开发组用的。
c. level通常位于1-10之间(10046有时用到12),10意味着转储事件所有的信息。例如当转储控制文件时,level1表示转储控制文件头,而level 10表明转储控制文件全部内容。
d. 转储所生成的trace文件在user_dump_dest初始化参数指定的位置。
二、说一说设置的问题了
可以在init.ora中设置所需的事件,这将对所有会话期打开的会话进行跟踪,也可以用alter session set event 等方法设置事件跟踪,这将打开正在进行会话的事件跟踪。
1、 在init.ora中设置跟踪事件的方法
a. 语法
EVENT=”event 语法|,level n|:event 语法|,level n|…”
b. 举例
event=”10231 trace name context forever,level 10’
c. 可以这样设置多个事件:
EVENT="\
10231 trace name context forever, level 10:\
10232 trace name context forever, level 10"
2、 通过Alter session/system set events这种方法
举个例子大家就明白了
Example:
Alter session set events ‘immediate trace name controlf level 10’;
Alter session set events ‘immediate trace name blockdump level 112511416’; (*)
在oracle8x及之上的版本也有这样的语
相关文档:
SQL中的单记录函数
1.ASCII
返回与指定的字符对应的十进制数;
SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;
A A ZERO ......
ora-38301错误,回收站
前几天有同事告诉我,有台服务器上的表空间无法删除,让我看看。登录到服务器,删除表空间,数据库同时报ora-00604和ora-38301错误。起初以为是有数据库对象被锁定,重启数据库后,发现还是报同样的错误。Google后发现可能与10g的一个新特性回收站有关,清空回收站purge recyclebin后,进行删除还是� ......
首先找到路径:
E:\Oracle Enterprise_Standard Edition_11.1.0.7\database\stage\prereq\db\refhost.xml
如下节点:
<!--Microsoft Windows Vista-->
<OPERATING_SYSTEM>
<VERSION VALUE="6.0"/>
</OPERAT ......
auhtor:skate
time:2010/03/03
oracle抽取函数
今天朋友问个问题,如何抽取时间的“小时”
oracle的抽取函数是 extrac()语法:
SELECT EXTRACT(YEAR from SYSDATE) from DUAL; return Current Year
SELECT EXTRACT(MONTH from SYSDATE) from DUAL; return Current Month
SELECT EXTRACT(DAY from SYSDA ......