Oracle事件跟蹤及結構資料dump

llnnmc發表於2017-04-26

Oracle提供了一類命令,可以將Oracle各種內部結構所包含的資訊轉儲(dump)到跟蹤檔案中,提供給使用者做跟蹤分析。收集Dump資訊要求資料庫必須在mount或open狀態下。發起Dump的Oracle使用者必須擁有alter session和必備的管理員許可權。Dump的Trace檔案路徑由初始化引數user_dump_dest指定,並保證作業系統環境中有足夠的空間存放Trace檔案。

 

一、 事件 跟蹤的 兩種方法

 

1、在init.ora檔案中設定事件,這樣open資料庫後,將影響到所有的會話。設定格式如下:

event = "eventnumber trace name eventname [forever][, level levelnumber] : ......." 

 

透過“:”符號,可以連續設定多個事件,也可以透過連續使用event來設定多個事件。

 

2、在會話過程中使用alter session set events命令,只對當前會話有影響。設定格式如下:

alter session set events '[eventnumber|immediate] trace name eventname [forever][, level levelnumber] : .......' 

 

透過“:”符號,可以連續設定多個事件,也可以透過連續使用alter session set events來設定多個事件。

 

二、事件跟蹤的 格式說明

 

eventnumber:觸發dump的事件號,事件號可以是Oracle錯誤號(出現相應錯誤時跟蹤指定的事件)或oralce內部事件號,內部事件號在10000到10999之間,eventnumber不能與immediate關鍵字同用。

 

immediate:表示命令發出後,立即將指定的結構dump到跟蹤檔案中,這個關鍵字只用在alter session語句中,並且不能與eventnumber、forever關鍵字同用。

 

trace name:關鍵字。

 

eventname:事件名稱,即要進行dump的實際結構名。若eventname為context,則指根據內部事件號進行跟蹤。

 

forever:表示事件在例項或會話的週期內保持有效狀態,不能與immediate同用。

 

level:事件級別關鍵字。

 

levelnumber:表示事件級別號,從1到12,一般1表示只dump結構頭部資訊,12表示dump結構的所有資訊。

 

三、常見事件及結構資料的 dump

 

buffer事件

直接轉儲Buffer Cache資訊

alter session set events 'immediate trace name buffers level 10';

dump SGA中的buffer cache block

需要執行兩條命令

alter session set events 'immediate trace name set_tsn_p1 level N';

N是檔案號 + 1

alter session set events 'immediate trace name buffer level N';

N是檔案號 * 4194304 + 塊號

 

controlf事件

dump控制檔案

alter session set events 'immediate trace name controlf level 12';

 

locks事件

dump LCK程式的鎖資訊

alter session set events 'immediate trace name locks level N';

 

redohdr事件

dump redo日誌的頭部資訊

alter session set events 'immediate trace name redohdr level N';

level 1:控制檔案中的資訊

level 2:level 1 + 通用檔案頭資訊

level>=3:level 2 + 日誌檔案頭資訊

level 10:完整檔案頭資訊

 

loghist事件

dump控制檔案中的日誌歷史項

alter session set events 'immediate trace name loghist level N';

N = 1:最早和最遲的日誌歷史項

N大於等於2時,表示2的N次方個日誌歷史項

 

file_hdrs事件

dump所有資料檔案的頭部資訊

alter session set events 'immediate trace name file_hdrs level N';

level 1:控制檔案中的資訊

level 2:level 1 + 通用檔案頭資訊

level>=3:level 2 + 資料檔案頭資訊

level 10:完整檔案頭資訊

 

errorstack事件

跟蹤Oracle錯誤號資訊

alter session set events '984 trace name errorstack forever, level 3';

alter session set events '984 trace name errorstack off';

 

systemstate事件

dump所有系統狀態和程式狀態

alter session set events 'immediate trace name systemstate level 10';

 

coalesec事件

dump指定表空間中的自由區間

levelnumber以十六進位制表示時,兩個高位位元組表示自由區間數目,兩個低位位元組表示表空間號,如0x00050000表示dump系統表空間中的5個自由區間,轉換成十進位制就是327680,即:

alter session set events 'immediate trace name coalesec level 327680';

 

processsate事件

dump程式狀態

alter session set events 'immediate trace name processsate level N';

 

library_cache事件

dump共享池中庫快取的資訊

alter session set events 'immediate trace name library_cache level N';

N=1,轉儲Library Cache統計資訊

N=2,轉儲Hash Table概要

N=4,轉儲Library Cache物件,只包含基本資訊

N=8,轉儲Library Cache物件,包含詳細資訊

N=16,增加heap sizes資訊

N=32,增加heap資訊

 

row_cache事件

dump共享池中資料字典快取資訊

alter session set events 'immediate trace name row_cache level N';

N=1,轉儲dictionary cache的統計資訊

N=2,轉儲hash表的彙總資訊

N=8,轉儲dictionary cache中物件的結構資訊

 

heapdump事件

dump PGA彙總資訊

alter session set events 'immediate trace name heapdump level 1';

dump 共享池內共享記憶體的資訊

alter session set events 'immediate trace name heapdump level 2';

dump SGA固定地址空間的資訊

alter session set events 'immediate trace name heapdump_addr level 1, addr n';

這裡的地址如果是16進位制,則需要先轉換為十進位制

select to_number('dcd00c0', 'xxxxxxxxxx') from dual; -- 231538880

 

treedump事件

dump b-tree索引塊

alter session set events 'immediate trace name treedump level object_id';

object_id為索引物件的ID

 

dump資料塊

以下表示dump資料檔案號為11中的第9個資料塊

alter system dump datafile 11 block 9;

 

dump日誌檔案

alter system dump logfile '/home/oracle/app/oracle/oradata/mes/redo01.log';

 

dump回滾段頭

alter system dump undo header '_SYSSMU1_3780397527$';

這裡指定了回滾段名

 

強制重新整理Buffer Cache,將Buffer Cache中的資料都寫出到資料檔案

alter session set events = 'immediate trace name flush_cache';

 

、Oracle內部事件 號說明

 

10012:跟蹤崩潰事務

10013:跟蹤資料庫啟動時的事務恢復

10015:跟蹤回滾段頭資訊

event = "10015 trace name context forever"

10029:用於給出會話期間的登陸資訊

10030:用於給出會話期間的登出資訊

10032:轉儲排序的統計資訊

10033:轉儲排序增長的統計資訊

10035:跟蹤解析出錯的SQL語句

alter session set events '10035 trace name context forever,level 12';

開啟後可在警告日誌中檢視解析出錯的SQL語句

10045:跟蹤Freelist管理操作

10046:跟蹤SQL語句

alter session set events '10046 trace name context forever, level 12';

alter session set events '10046 trace name context off';

10050:跟蹤SMON程式的活動

10053:轉儲最佳化策略 

10059:模擬redo日誌中的建立和清除錯誤

10061:阻止SMON程式在啟動時清除臨時段

10079:轉儲 SQL*NET統計資訊

10081:轉儲高水位標記變化

10104:轉儲Hash連線統計資訊

10128:轉儲分割槽休整資訊

10200:轉儲一致性讀資訊

10201:轉儲一致性讀中Undo應用

10203:跟蹤資料庫的塊清除操作

alter system set event="10203 trace name context forever" scope=spfile;

10209:允許在控制檔案中模擬錯誤

10210:觸發資料塊檢查事件

event = "10210 trace name context forever, level 10"

10211:觸發索引檢查事件

10213:模擬在寫控制檔案後崩潰

10214:模擬在控制檔案中的寫錯誤

levelnumber從1-9表示產生錯誤的塊號,大於等於10則每個控制檔案將出錯

10215:模擬在控制檔案中的讀錯誤

10220:轉儲Undo頭部變化

10221;轉儲Undo變化

10224:轉儲索引的分隔與刪除

10225:轉儲基於字典管理的區間的變化

10229:模擬在資料檔案上的I/O錯誤

10231:設定在全表掃描時忽略損壞的資料塊

alter session set events '10231 trace name context forever, level 10';

10232:將設定為軟損壞(DBMS_REPAIR包設定或DB_BLOCK_CHECKING為TRUE時設定)的資料塊dump到跟蹤檔案

10235:用於記憶體堆檢查

alter session set events '10235 trace name context forever, level 1';

10241:轉儲遠端SQL執行

10246:跟蹤PMON程式的活動

10248:跟蹤dispatch程式

10249:跟蹤MTS程式

10252:模擬寫資料檔案頭部錯誤

10253:模擬寫redo日誌檔案錯誤

10262:允許連線時存在記憶體洩漏

alter session set events '10262 trace name context forever, level 300';

這裡表示允許存在300個位元組的記憶體洩漏

10270:轉儲共享遊標

10285:模擬控制檔案頭部損壞

10286:模擬控制檔案開啟錯誤

10287:模擬歸檔出錯

10357:除錯直接路徑機制

10500:跟蹤SMON程式

10608:跟蹤點陣圖索引的建立

10704:跟蹤enqueues

10706:跟蹤全域性enqueues

10708:跟蹤RAC的buffer cache

10710:跟蹤對點陣圖索引的訪問

10711:跟蹤點陣圖索引合併操作

10712:跟蹤點陣圖索引OR操作

10713:跟蹤點陣圖索引AND操作

10714:跟蹤點陣圖索引MINUS操作

10715:跟蹤點陣圖索引向ROWID的轉化

10716:跟蹤點陣圖索引的壓縮與解壓

10719:跟蹤點陣圖索引的修改

10731:跟蹤遊標宣告

10928:跟蹤PL/SQL執行

10938:轉儲PL/SQL執行統計資訊


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

相關文章