溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么理解ORACLE事件跟蹤

發(fā)布時(shí)間:2021-11-12 16:28:57 來源:億速云 閱讀:104 作者:柒染 欄目:關(guān)系型數(shù)據(jù)庫(kù)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)怎么理解ORACLE事件跟蹤,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

ORACLE事件跟蹤

  Oracle跟蹤文件分為三種類型:

   1:警告日志文件。記錄了數(shù)據(jù)庫(kù)啟動(dòng)、運(yùn)行、關(guān)閉時(shí)的活動(dòng)情況。當(dāng)數(shù)據(jù)庫(kù)出現(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ù)庫(kù)的用戶進(jìn)程的運(yùn)行信息,名稱為SID_ORA_PROCESSID.TRC,存儲(chǔ)目錄為USER_DUMP_DEST.

  在oracle11g中,這三種文件位于同一目錄下:

怎么理解ORACLE事件跟蹤

跟蹤事件

   設(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ù)庫(kù)實(shí)例,PROCESS-EVENT事件會(huì)影響連接到數(shù)據(jù)庫(kù)的每一個(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ǔ)到跟蹤文件中。

語(yǔ)法格式

        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語(yǔ)句中,并且不能與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ù)庫(kù)信息 + 檢查點(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)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI