共計 5741 個字符,預計需要花費 15 分鐘才能閱讀完成。
這期內容當中丸趣 TV 小編將會給大家?guī)碛嘘P怎么理解 ORACLE 事件跟蹤,文章內容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
ORACLE 事件跟蹤
Oracle 跟蹤文件分為三種類型:
1:警告日志文件。記錄了數(shù)據(jù)庫啟動、運行、關閉時的活動情況。當數(shù)據(jù)庫出現(xiàn)問題時,首先要查看該文件,文件名為 alert_sid.log
2:后臺跟蹤文件。記錄了 oracle 后臺進程的運行狀況,名稱為 sid_processname_processid.trc, 存儲目錄為 BACKGROUND_dump_dest
3:用戶跟蹤文件。記錄了連接到數(shù)據(jù)庫的用戶進程的運行信息,名稱為 SID_ORA_PROCESSID.TRC, 存儲目錄為 USER_DUMP_DEST.
在 oracle11g 中,這三種文件位于同一目錄下:
跟蹤事件
設置跟蹤事件,會導致 oracle 將與該事件有關的信息轉儲到跟蹤文件中。依據(jù)設置事件的方式,可以將跟蹤事件分為 2 類:PROCESS-EVENT(通過初始化參數(shù)文件設置的事件)、SESSION-EVENT(通過 alter session set events 或者 alter system set events 設置的時間)。要使 PROCESS-EVENT 事件生效,必須重新啟動數(shù)據(jù)庫實例,PROCESS-EVENT 事件會影響連接到數(shù)據(jù)庫的每一個用戶進程。在參數(shù)文件中設置多個事件可以采用“:”分隔符,如 event= event1:event2:event3。也可以依次設置多個 event,如:
event= event1
event= event2
(注意,在 event1 和 event2 之間不要存在其他參數(shù),否則只有最后的 event 即 event2 生效)。
對不同的跟蹤事件,oracle 會產生不同的行為,根據(jù)行為的不同,我們大致可以將跟蹤事件分為 4 類:
1. 轉儲 oracle 中的某部分內容,如數(shù)據(jù)塊、控制文件內容等。轉儲活動會在收到跟蹤事件命令的同時執(zhí)行。這類事件不可以通過參數(shù)文件進行設置。
2. 跟蹤錯誤信息。設置這類事件,oracle 會將特定錯誤的堆棧信息轉儲到跟蹤文件中。
3. 更改 oracle 的執(zhí)行路徑。這類事件會影響 oracle 代碼段的執(zhí)行路徑,例如 10269 事件,會促使 smon 進程停止對 free-space 的合并操作。
4. 跟蹤進程的相關信息。例如 10046 事件和 10053 事件。該類事件會將進程上下文中的特定信息轉儲到跟蹤文件中。
語法格式
alter system|session set events‘[eventnumber|immediate]trace nameeventname[forever][, level levelnumber] : …….’
通過: 符號,可以連續(xù)設置多個事件,也可以通過連續(xù)使用 alter session set events 來設置多個事件。
格式說明:eventnumber 指觸發(fā) dump 的事件號,事件號可以是 Oracle 錯誤號或 oralce 內部事件號,內部事件號在 10000 到 10999 之間,不能與 immediate 關鍵字同用;immediate 關鍵字表示命令發(fā)出后,立即將指定的結構 dump 到跟蹤文件中,這個關鍵字只用在 alter session 語句中,并且不能與 eventnumber、forever 關鍵字同用。trace name 是關鍵字。eventname 指事件名稱(見后面),即要進行 dump 的實際結構名。若 eventname 為 context,則指根據(jù)內部事件號進行跟蹤。forever 關鍵字表示事件在實例或會話的周期內保持有效狀態(tài),不能與 immediate 同用。level 為事件級別關鍵字。但在 dump 錯誤棧 (errorstack) 時不存在級別。levelnumber 表示事件級別號,一般從 1 到 10,1 表示只 dump 結構頭部信息,10 表示 dump 結構的所有信息。
對于 alter session 設置的事件,僅僅只對當前 session 有效。對于 alter system 設置的事件,除對當前 session 有效外,對新登錄的 session 同樣有效,但是對于 alter system 命令執(zhí)行之前打開的 session 是無效的。
IMMEDIATE 相關的事件
一.Memory Dumps
1).Global Area
Alter SESSION SET EVENTS immediate trace name global_area level n
1 包含 PGA
2 包含 SGA
4 包含 UGA
8 包含 indrect memory
2).Library Cache
Alter SESSION SET EVENTS immediate trace name library_cache level n
1 library cache 統(tǒng)計信息
2 包含 hash table histogram
3 包含 object handle
4 包含 object 結構(Heap 0)
3).Row Cache
Alter SESSION SET EVENTS immediate trace name row_cache level n
1 row cache 統(tǒng)計信息
2 包含 hash table histogram
8 包含 object 結構
4).Buffers
Alter SESSION SET EVENTS immediate trace name buffers level n
1 buffer header
2 level 1 + block header
3 level 2 + block contents
4 level 1 + hash chain
5 level 2 + hash chain
6 level 3 + hash chain
8 level 4 + users/waiters
9 level 5 + users/waiters
10 level 6 + users/waiters
5).Buffer
Alter SESSION SET EVENTS immediate trace name buffer level n
n 為某個指定 block 的 rdba,該命令可以轉儲某個 block 在 buffer 中的所有版本。
6).Heap
Alter SESSION SET EVENTS immediate trace name heapdump level level
1 PGA 摘要
2 SGA 摘要
4 UGA 摘要
8 Current call(CGA)摘要
16 User call(CGA)摘要
32 Large call(LGA)摘要
1025 PGA 內容
2050 SGA 內容
4100 UGA 內容
8200 Current call 內容
16400 User call 內容
32800 Large call 內容
7).Sub Heap
oracle 9.0.1 版本之前
Alter SESSION SET EVENTS immediate trace name heapdump_addr level n
若 n 為 subheap 的地址,轉儲的是 subheap 的摘要信息
若 n 為 subheap 的地址 +1,轉儲的則是 subheap 的內容
oracle 9.2.0 版本之后
Alter SESSION SET EVENTS immediate trace name heapdump_addr level n, addr m
其中 m 為 subheap 的地址
n 為 1 轉儲 subheap 的摘要,n 為 2 轉儲 subheap 的內容
8).Process State
Alter SESSION SET EVENTS immediate trace name processstate level n
9).System State
Alter SESSION SET EVENTS immediate trace name systemstate level n
10).Error State
Alter SESSION SET EVENTS immediate trace name errorstack level n
0 Error stack
1 level 0 + function call stack
2 level 1 + process state
3 level 2 + context area
11).Hang Analysis
Alter SESSION SET EVENTS immediate trace name hanganalyze level n
12).Work Area
Alter SESSION SET EVENTS immediate trace name workareatab_dump level n
1 SGA 信息
2 Workarea Table 摘要信息
3 Workarea Table 詳細信息
13).Latches
Alter SESSION SET EVENTS immediate trace name latches level n
1 latch 信息
2 統(tǒng)計信息
14).Events
Alter SESSION SET EVENTS immediate trace name events level n
1 session
2 process
3 system
15).Locks
Alter SESSION SET EVENTS immediate trace name locks level n
16).Shared Server Process
Alter SESSION SET EVENTS immediate trace name shared_server_state level n
n 取值為 1~14
17).Background Messages
Alter SESSION SET EVENTS immediate trace name bg_messages level n
n 為 pid+1
二.File Dumps
1).Block
oracle 7 之前
Alter SESSION SET EVENTS immediate trace name blockdump level n
n 為 block 的 rdba
oracle8 以后
Alter SYSTEM DUMP DATAFILE file# BLOCK block#;
Alter SYSTEM DUMP DATAFILE file#
BLOCK MIN minimum_block#
BLOCK MAX maximum_block#
2).Tree Dump 查看索引的結構
Alter SESSION SET EVENTS immediate trace name treedump level n
n 為 object_id
object_id 可以從 select object_id from user_objects where object_name = 索引的名字 得到。
3).Undo Segment Header 查看回滾段頭部信息
Alter SYSTEM DUMP UNDO_HEADER segment_name
4).Undo for a Transaction
Alter SYSTEM DUMP UNDO BLOCK segment_name XID xidusn xidslot xidsqn;
5).File Header
Alter SESSION SET EVENTS immediate trace name file_hdrs level n
1 控制文件中的文件頭信息
2 level 1 + 通用文件頭信息
3 level 2 + 數(shù)據(jù)完整文件頭信息
10 level 3
6).Control file
Alter SESSION SET EVENTS immediate trace name controlf level n
1 控制文件中的文件頭信息
2 level 1 + 數(shù)據(jù)庫信息 + 檢查點信息
3 level 2 + 可重用節(jié)信息
10 level 3
7).Redo log Header
Alter SESSION SET EVENTS immediate trace name redohdr level n
1 控制文件中的 redo log 信息
2 level 1 + 通用文件頭信息
3 level 2 + 完整日志文件頭信息
10 level 3
8).Redo log
Alter SYSTEM DUMP LOGFILE FileName
Alter SYSTEM DUMP LOGFILE FileName
SCN MIN MinimumSCN
SCN MAX MaximumSCN
TIME MIN MinimumTime
TIME MAX MaximumTime
LAYER Layer
OPCODE Opcode
DBA MIN FileNumber . BlockNumber
DBA MAX FileNumber . BlockNumber
RBA MIN LogFileSequenceNumber . BlockNumber
RBA MAX LogFileSequenceNumber . BlockNumber;
其中 time = (((((yyyy – 1988)) * 12 + mm – 1) * 31 + dd – 1) * 24 + hh) * 60 + mi) * 60 + ss;
詳細內容請看:http://blog.csdn.net/yidian815/article/details/12568027
9).Loghist
Alter SESSION SET EVENTS immediate trace name loghist level n
n=1 dump 控制文件中最早和最遲的日志歷史項
n 1 dump 2^n 個日志歷史項
獲取診斷事件號
大部分的診斷事件的數(shù)值都是在 10000 至 10999 范圍內,使用如下的腳本可以查看到所有的診斷事件:
[sql]
SET SERVEROUTPUT ON
DECLARE
err_msg VARCHAR2(120);
BEGIN
dbms_output.enable (1000000);
FOR err_num IN 10000..10999
LOOP
err_msg := SQLERRM (-err_num);
IF err_msg NOT LIKE %Message ||err_num|| not found% THEN
dbms_output.put_line (err_msg);
END IF;
END LOOP;
END;
/
上述就是丸趣 TV 小編為大家分享的怎么理解 ORACLE 事件跟蹤了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注丸趣 TV 行業(yè)資訊頻道。