日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 事件跟踪_ORACLE 事件跟踪

發布時間:2023/12/8 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 事件跟踪_ORACLE 事件跟踪 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

跟蹤文件 Oracle跟蹤文件分為三種類型: 1:警告日志文件。記錄了數據庫啟動、運行、關閉時的活動情況。當數據庫出現問題時,首先要查看該文件,文件名為alert_sid.log 2:后臺跟蹤文件。記錄了oracle后臺進程的運行狀況,名稱為sid_processname_processid.t

跟蹤文件

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

1:警告日志文件。記錄了數據庫啟動、運行、關閉時的活動情況。當數據庫出現問題時,首先要查看該文件,文件名為alert_sid.log

2:后臺跟蹤文件。記錄了oracle后臺進程的運行狀況,名稱為sid_processname_processid.trc,存儲目錄為BACKGROUND_dump_dest

3:用戶跟蹤文件。記錄了連接到數據庫的用戶進程的運行信息,名稱為SID_ORA_PROCESSID.TRC,存儲目錄為USER_DUMP_DEST.

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

跟蹤事件

設置跟蹤事件,會導致oracle將與該事件有關的信息轉儲到跟蹤文件中。依據設置事件的方式,可以將跟蹤事件分為2類:PROCESS-EVENT(通過初始化參數文件設置的事件)、SESSION-EVENT(通過alter session set events或者alter system set events設置的時間)。要使PROCESS-EVENT事件生效,必須重新啟動數據庫實例,PROCESS-EVENT事件會影響連接到數據庫的每一個用戶進程。在參數文件中設置多個事件可以采用“:”分隔符,如event="event1:event2:event3"。也可以依次設置多個event,如:

event="event1"

event="event2" (注意,在event1和event2之間不要存在其他參數,否則只有最后的event即event2生效)。

對不同的跟蹤事件,oracle會產生不同的行為,根據行為的不同,我們大致可以將跟蹤事件分為4類:

1.轉儲oracle中的某部分內容,如數據塊、控制文件內容等。轉儲活動會在收到跟蹤事件命令的同時執行。這類事件不可以通過參數文件進行設置。

2.跟蹤錯誤信息。設置這類事件,oracle會將特定錯誤的堆棧信息轉儲到跟蹤文件中。

3.更改oracle的執行路徑。這類事件會影響oracle代碼段的執行路徑,例如10269事件,會促使smon進程停止對free-space的合并操作。

4.跟蹤進程的相關信息。例如10046事件和10053事件。該類事件會將進程上下文中的特定信息轉儲到跟蹤文件中。

語法格式

altersystem|sessionsetevents ‘[eventnumber|immediate]trace name eventname[forever][,level levelnumber]: …….’

通過:符號,可以連續設置多個事件,也可以通過連續使用alter session set events來設置多個事件。

格式說明:eventnumber指觸發dump的事件號,事件號可以是Oracle錯誤號或oralce內部事件號,內部事件號在10000到10999之間,不能與immediate關鍵字同用;immediate關鍵字表示命令發出后,立即將指定的結構dump到跟蹤文件中,這個關鍵字只用在alter

session語句中,并且不能與eventnumber、forever關鍵字同用。trace name是關鍵字。eventname指事件名稱(見后面),即要進行dump的實際結構名。若eventname為context,則指根據內部事件號進行跟蹤。forever關鍵字表示事件在實例或會話的周期內保持有效狀態,不能與immediate同用。level為事件級別關鍵字。但在dump錯誤棧(errorstack)時不存在級別。levelnumber表示事件級別號,一般從1到10,1表示只dump結構頭部信息,10表示dump結構的所有信息。

對于alter session設置的事件,僅僅只對當前session有效。對于alter system 設置的事件,除對當前session有效外,對新登錄的session同樣有效,但是對于alter system命令執行之前打開的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統計信息

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統計信息

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 統計信息

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 + 數據完整文件頭信息

10 level 3

6).Control file

Alter SESSION SET EVENTS 'immediate trace name controlf level n';

1 控制文件中的文件頭信息

2 level 1 + 數據庫信息+檢查點信息

3 level 2 + 可重用節信息

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個日志歷史項

獲取診斷事件號

大部分的診斷事件的數值都是在10000至10999范圍內,使用如下的腳本可以查看到所有的診斷事件:

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;

相關的PLSQL包

DBMS_MONITOR包

Subprogram

Description

CLIENT_ID_STAT_DISABLE

Procedure

Disables statistic gathering previously enabled for a given Client Identifier

CLIENT_ID_STAT_ENABLE

Procedure

Enables statistic gathering for a given Client Identifier

CLIENT_ID_TRACE_DISABLE

Procedure

Disables the trace previously enabled for a given Client Identifier globally for the database

CLIENT_ID_TRACE_ENABLE

Procedure

Enables the trace for a given Client Identifier globally for the database

DATABASE_TRACE_DISABLE

Procedure

Disables SQL trace for the whole database or a specific instance

DATABASE_TRACE_ENABLE

Procedure

Enables SQL trace for the whole database or a specific instance

SERV_MOD_ACT_STAT_DISABLE

Procedure

Disables statistic gathering enabled for a given combination of Service Name, MODULE and ACTION

SERV_MOD_ACT_STAT_ENABLE

Procedure

Enables statistic gathering for a given combination of Service Name, MODULE and ACTION

SERV_MOD_ACT_TRACE_DISABLE

Procedure

Disables the trace for ALL enabled instances for a or a given combination of Service Name, MODULEand ACTION name globally

SERV_MOD_ACT_TRACE_ENABLE

Procedure

Enables SQL tracing for a given combination of Service Name, MODULE and ACTION globally unless aninstance_name is specified

SESSION_TRACE_DISABLE

Procedure

Disables the previously enabled trace for a given database session identifier (SID) on the local instance

SESSION_TRACE_ENABLE Procedure

Enables the trace for a given database session identifier (SID) on the local instance

與該包相關的還包括幾個視圖:v$client_stats\V$SERV_MOD_ACT_STATS。

client_id 可以通過DBMS_SESSION.SET_IDENTIFIER來設置。

DBMS_SYSTEM包

關于該包的詳細信息,請參照:http://blog.csdn.net/yidian815/article/details/12580659

另外,我們還可以使用ORADEBUG工具。如

對一個進程設置診斷事件:

ORADEBUG EVENT event TRACE NAME CONTEXT FOREVER, LEVEL level

禁用設置的診斷事件:

ORADEBUG EVENT event TRACE NAME CONTEXT OFF

對一個會話設置診斷事件:

ORADEBUG SESSION_EVENT event TRACE NAME CONTEXT FOREVER, LEVEL level

禁用設置的診斷事件:

ORADEBUG SESSION_EVENT event TRACE NAME CONTEXT OFF

查看當前SESSION設置的事件

SET SERVEROUTPUT ON

DECLARE

l_level NUMBER;

BEGIN

FOR l_event IN 10000..10999

LOOP

dbms_system.read_ev (l_event,l_level);

IF l_level > 0 THEN

dbms_output.put_line ('Event '||TO_CHAR (l_event)||

' is set at level '||TO_CHAR (l_level));

END IF;

END LOOP;

END;

其他注意事項

確定使用的診斷事件對于當前的Oracle數據庫版本是合法的:因為對于不同版本的Oracle數據庫來說,診斷事件的含義和用法都有所不同。

確定使用的診斷事件允許設定的級別,在很多時候設定的級別不同是會影響到診斷事件所代表的行為的。

在INITSID.ORA文件中設置的任何診斷事件,如果Oracle數據庫需要升級,一定要提前注釋或者取消。

本文原創發布php中文網,轉載請注明出處,感謝您的尊重!

總結

以上是生活随笔為你收集整理的mysql 事件跟踪_ORACLE 事件跟踪的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。