(zt) 開啟事件跟蹤

tolywang發表於2008-09-10

 

         OracleRDBMS提供了多種的診斷工具,診斷事件(Event)是其中一種常用、好用的方法,它使DBA可以方便的轉儲資料庫各種結構及跟蹤特定事件的發生。使用這些事件也不是件很高深的學問,舉例來說10046這個Event你也一定用過吧,如下的幾篇文章我將圍繞Event展開一些討論

 

 

一、Event的通常格式及分類

1 通常格式如下:

EVENT="<事件名稱><動作><跟蹤專案><範圍限定>"

2 Event分類

診斷事件大體上可以分為四類:

a 轉儲類事件:它們主要用於轉儲Oracle的一些結構,例如轉儲一下控制檔案、資料檔案頭等內容。

b 捕捉類事件:它們用於捕捉一些Error事件的發生,例如捕捉一下ORA-04031發生時一些Rdbms資訊,以判斷是Bug還是其它原因引起的這方面的問題。

c 改變執行途徑類事件:它們用於改主一些Oracle內部程式碼的執行途徑,例如設定10269將會使Smon程式不去合併那些Free的空間。

d 跟蹤類事件:這們用於獲取一些跟蹤資訊以用於Sql調優等方面,最典型的便是10046了,將會對Sql進行跟蹤。

3 Michael R. Ault總結了下表:

 

跟蹤類別

事件名稱

動作(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

 

4 其它說明:

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及之上的版本也有這樣的語句:

Alter system dump datafile 13 block 15;實現的功能與(*)是類似的。

3、 使用DBMS_SYSTEM.SET_EV的方法
a. 過和定義如下
DBMS_SYSTEM.SET_EV(
SI Binary_integer,
SE Binary_integer,
EV Binary_integer,
LE Binary_integer,
NM Binary_integer);
SI: 即v$session中的sid
SE:即v$session中的serial#
EV:要設定的事件
LE:要設定事件的級別
NM:名稱

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-442885/,如需轉載,請註明出處,否則將追究法律責任。

相關文章