這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)怎么理解ORACLE事件跟蹤,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
10余年的遵化網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營銷型網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整遵化建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“遵化網(wǎng)站設(shè)計(jì)”,“遵化網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
ORACLE事件跟蹤
Oracle跟蹤文件分為三種類型:
1:警告日志文件。記錄了數(shù)據(jù)庫啟動(dòng)、運(yùn)行、關(guān)閉時(shí)的活動(dòng)情況。當(dāng)數(shù)據(jù)庫出現(xiàn)問題時(shí),首先要查看該文件,文件名為alert_sid.log
2:后臺(tái)跟蹤文件。記錄了oracle后臺(tái)進(jìn)程的運(yùn)行狀況,名稱為sid_processname_processid.trc,存儲(chǔ)目錄為BACKGROUND_dump_dest
3:用戶跟蹤文件。記錄了連接到數(shù)據(jù)庫的用戶進(jìn)程的運(yùn)行信息,名稱為SID_ORA_PROCESSID.TRC,存儲(chǔ)目錄為USER_DUMP_DEST.
在oracle11g中,這三種文件位于同一目錄下:
跟蹤事件
設(shè)置跟蹤事件,會(huì)導(dǎo)致oracle將與該事件有關(guān)的信息轉(zhuǎn)儲(chǔ)到跟蹤文件中。依據(jù)設(shè)置事件的方式,可以將跟蹤事件分為2類:PROCESS-EVENT(通過初始化參數(shù)文件設(shè)置的事件)、SESSION-EVENT(通過alter session set events或者alter system set events設(shè)置的時(shí)間)。要使PROCESS-EVENT事件生效,必須重新啟動(dòng)數(shù)據(jù)庫實(shí)例,PROCESS-EVENT事件會(huì)影響連接到數(shù)據(jù)庫的每一個(gè)用戶進(jìn)程。在參數(shù)文件中設(shè)置多個(gè)事件可以采用“:”分隔符,如event="event1:event2:event3"。也可以依次設(shè)置多個(gè)event,如:
event="event1"
event="event2"
(注意,在event1和event2之間不要存在其他參數(shù),否則只有最后的event即event2生效)。
對(duì)不同的跟蹤事件,oracle會(huì)產(chǎn)生不同的行為,根據(jù)行為的不同,我們大致可以將跟蹤事件分為4類:
1.轉(zhuǎn)儲(chǔ)oracle中的某部分內(nèi)容,如數(shù)據(jù)塊、控制文件內(nèi)容等。轉(zhuǎn)儲(chǔ)活動(dòng)會(huì)在收到跟蹤事件命令的同時(shí)執(zhí)行。這類事件不可以通過參數(shù)文件進(jìn)行設(shè)置。
2.跟蹤錯(cuò)誤信息。設(shè)置這類事件,oracle會(huì)將特定錯(cuò)誤的堆棧信息轉(zhuǎn)儲(chǔ)到跟蹤文件中。
3.更改oracle的執(zhí)行路徑。這類事件會(huì)影響oracle代碼段的執(zhí)行路徑,例如10269事件,會(huì)促使smon進(jìn)程停止對(duì)free-space的合并操作。
4.跟蹤進(jìn)程的相關(guān)信息。例如10046事件和10053事件。該類事件會(huì)將進(jìn)程上下文中的特定信息轉(zhuǎn)儲(chǔ)到跟蹤文件中。
語法格式
alter system|session set events ‘[eventnumber|immediate]trace nameeventname[forever][, level levelnumber] : …….’
通過:符號(hào),可以連續(xù)設(shè)置多個(gè)事件,也可以通過連續(xù)使用alter session set events來設(shè)置多個(gè)事件。
格式說明:eventnumber指觸發(fā)dump的事件號(hào),事件號(hào)可以是Oracle錯(cuò)誤號(hào)或oralce內(nèi)部事件號(hào),內(nèi)部事件號(hào)在10000到10999之間,不能與immediate關(guān)鍵字同用;immediate關(guān)鍵字表示命令發(fā)出后,立即將指定的結(jié)構(gòu)dump到跟蹤文件中,這個(gè)關(guān)鍵字只用在alter session語句中,并且不能與eventnumber、forever關(guān)鍵字同用。trace name是關(guān)鍵字。eventname指事件名稱(見后面),即要進(jìn)行dump的實(shí)際結(jié)構(gòu)名。若eventname為context,則指根據(jù)內(nèi)部事件號(hào)進(jìn)行跟蹤。forever關(guān)鍵字表示事件在實(shí)例或會(huì)話的周期內(nèi)保持有效狀態(tài),不能與immediate同用。level為事件級(jí)別關(guān)鍵字。但在dump錯(cuò)誤棧(errorstack)時(shí)不存在級(jí)別。levelnumber表示事件級(jí)別號(hào),一般從1到10,1表示只dump結(jié)構(gòu)頭部信息,10表示dump結(jié)構(gòu)的所有信息。
對(duì)于alter session設(shè)置的事件,僅僅只對(duì)當(dāng)前session有效。對(duì)于alter system 設(shè)置的事件,除對(duì)當(dāng)前session有效外,對(duì)新登錄的session同樣有效,但是對(duì)于alter system命令執(zhí)行之前打開的session是無效的。
IMMEDIATE相關(guān)的事件
一.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)計(jì)信息
2 包含hash table histogram
3 包含object handle
4 包含object結(jié)構(gòu)(Heap 0)
3).Row Cache
Alter SESSION SET EVENTS 'immediate trace name row_cache level n';
1 row cache統(tǒng)計(jì)信息
2 包含hash table histogram
8 包含object結(jié)構(gòu)
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為某個(gè)指定block的rdba,該命令可以轉(zhuǎn)儲(chǔ)某個(gè)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內(nèi)容
2050 SGA內(nèi)容
4100 UGA內(nèi)容
8200 Current call內(nèi)容
16400 User call內(nèi)容
32800 Large call內(nèi)容
7).Sub Heap
oracle 9.0.1版本之前
Alter SESSION SET EVENTS 'immediate trace name heapdump_addr level n';
若n為subheap的地址,轉(zhuǎn)儲(chǔ)的是subheap的摘要信息
若n為subheap的地址+1,轉(zhuǎn)儲(chǔ)的則是subheap的內(nèi)容
oracle 9.2.0版本之后
Alter SESSION SET EVENTS 'immediate trace name heapdump_addr level n, addr m';
其中m為subheap的地址
n為1轉(zhuǎn)儲(chǔ)subheap的摘要,n為2轉(zhuǎn)儲(chǔ)subheap的內(nèi)容
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詳細(xì)信息
13).Latches
Alter SESSION SET EVENTS 'immediate trace name latches level n';
1 latch信息
2 統(tǒng)計(jì)信息
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 查看索引的結(jié)構(gòu)
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ù)庫信息 + 檢查點(diǎn)信息
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;
詳細(xì)內(nèi)容請(qǐng)看:http://blog.csdn.net/yidian815/article/details/12568027
9).Loghist
Alter SESSION SET EVENTS 'immediate trace name loghist level n';
n=1 dump控制文件中最早和最遲的日志歷史項(xiàng)
n>1 dump 2^n個(gè)日志歷史項(xiàng)
獲取診斷事件號(hào)
大部分的診斷事件的數(shù)值都是在10000至10999范圍內(nèi),使用如下的腳本可以查看到所有的診斷事件:
[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;
/
上述就是小編為大家分享的怎么理解ORACLE事件跟蹤了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。