程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> 全面介紹Oracle的診斷事件

全面介紹Oracle的診斷事件

編輯:關於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初始化參數指定的位置。

  跟蹤類別

  事件名稱

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

    二、說一說設置的問題了

  可以在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

  • 首頁
  • 上一頁
  • 1
  • 2
  • 下一頁
  • 尾頁
  • 共2頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved