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初始化參數指定的位置。
跟蹤類別
事件名稱
動作 (Action)
Name
跟蹤項目
范圍限定
轉儲類事件
immediate
Trace
“name”
blockdump
redohdr
file_hdrs
controlf
systemstate
Level block#
Level 10
Level 10
Level 10
Level 10
捕捉類事件
Error number
Trace
“name”
Error stack
processstate
Heapdump
Foreve
Off
Level nr
改變執行途徑類事件
Even code corresponding to path
Trace
“name”
Context
Forever or
Level 10
跟蹤類事件
10046
Trace
“name”
Context
Forever
Level n
off