溫馨提示×

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

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

db2死鎖監(jiān)視器的使用方法

發(fā)布時(shí)間:2021-08-18 10:06:18 來(lái)源:億速云 閱讀:157 作者:chen 欄目:數(shù)據(jù)庫(kù)

這篇文章主要介紹“db2死鎖監(jiān)視器的使用方法”,在日常操作中,相信很多人在db2死鎖監(jiān)視器的使用方法問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”db2死鎖監(jiān)視器的使用方法”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

DB2DETAILDEADLOCK 事件監(jiān)視器的禁用和重建

一. 打開(kāi)的監(jiān)視器對(duì)數(shù)據(jù)庫(kù)性能的影響:

DB2常用來(lái)收集監(jiān)視信息的工具有兩種:快照監(jiān)視器和事件監(jiān)視器。前者用于獲取特定時(shí)間點(diǎn)的監(jiān)視數(shù)據(jù),后者用于獲取特定事件的監(jiān)視數(shù)據(jù)。無(wú)論用戶使用哪種監(jiān)視工具收集數(shù)據(jù)庫(kù)系統(tǒng)監(jiān)視器相關(guān)的數(shù)據(jù),都會(huì)引起一定的系統(tǒng)開(kāi)銷,包括內(nèi)存,CPU以及為獲取監(jiān)視數(shù)據(jù)而產(chǎn)生的額外調(diào)用處理等,為控制收集必要的監(jiān)視信息,減少不必要的系統(tǒng)開(kāi)銷,DB2引入了監(jiān)視器開(kāi)關(guān)的機(jī)制。每種開(kāi)關(guān)都有“ON”和“OFF”兩種狀態(tài),當(dāng)開(kāi)關(guān)處于“OFF”時(shí),其控制下的相關(guān)監(jiān)視元素的信息將不被收集。DB2實(shí)例級(jí)(數(shù)據(jù)庫(kù)管理器)的監(jiān)視器狀態(tài)可用 “db2 get dbm monitor switches " 來(lái)獲取。當(dāng)實(shí)例下有監(jiān)視程序打開(kāi)某個(gè)開(kāi)關(guān)時(shí),實(shí)例級(jí)所對(duì)應(yīng)的開(kāi)關(guān)也將被打開(kāi)。

例如:

收集到的 DBM 系統(tǒng)監(jiān)視器信息

db 分區(qū)號(hào) 0 的開(kāi)關(guān)列表
緩沖池活動(dòng)信息 (BUFFERPOOL) = OFF
鎖定信息 (LOCK) = OFF
排序信息 (SORT) = OFF
SQL 語(yǔ)句信息 (STATEMENT) = OFF
表活動(dòng)信息 (TABLE) = OFF
獲取時(shí)間戳記信息(時(shí)間戳記) = ON 2005-06-26 10:36:47.019334 <-- 時(shí)間戳監(jiān)視器開(kāi)關(guān)打開(kāi)的時(shí)間
工作單元信息 (UOW) = OFF 使用快照監(jiān)視器時(shí)必須首先通過(guò)“db2 update monitor switches”、db2MonitorSwitches API或其它間接方式打開(kāi)要收集的數(shù)據(jù)的監(jiān)視器開(kāi)關(guān),而事件監(jiān)視器則不受系統(tǒng)監(jiān)視器開(kāi)關(guān)設(shè)置的影響(TIMESTAMP監(jiān)視器開(kāi)關(guān)除外,它是唯一一個(gè)對(duì)所有監(jiān)視器都起作用的開(kāi)關(guān)),在數(shù)據(jù)庫(kù)連接后,激活的事件監(jiān)視器將自動(dòng)打開(kāi)與這一監(jiān)視器相關(guān)的實(shí)例級(jí)監(jiān)視器的開(kāi)關(guān)。事件監(jiān)視器可收集如下類型的事件:

DATABASE
TABLES
DEADLOCKS
BUFFERPOOLS
CONNECTIONS
STATEMENTS
TRANSACTIONS

而創(chuàng)建數(shù)據(jù)庫(kù)時(shí)缺省建立的監(jiān)控死鎖詳細(xì)信息的DB2DETAILDEADLOCK,由于創(chuàng)建時(shí)選擇了AUTOSTART選項(xiàng),因此會(huì)在數(shù)據(jù)庫(kù)連接后被自動(dòng)激活并將實(shí)例的LOCK監(jiān)視器開(kāi)關(guān)打開(kāi)。如對(duì)于SAMPLE數(shù)據(jù)庫(kù)進(jìn)行連接后,被激活的DB2DETAIDEADLOCK事件監(jiān)視器會(huì)使LOCK監(jiān)視器開(kāi)關(guān)處于“ON”的狀態(tài):

db2 connect to sample

數(shù)據(jù)庫(kù)連接信息

數(shù)據(jù)庫(kù)服務(wù)器 = DB2/NT 8.2.1
SQL 授權(quán)標(biāo)識(shí) = DB2TEST
本地?cái)?shù)據(jù)庫(kù)別名 = SAMPLE

db2 get dbm monitor switches

收集到的 DBM 系統(tǒng)監(jiān)視器信息

db 分區(qū)號(hào) 0 的開(kāi)關(guān)列表
緩沖池活動(dòng)信息 (BUFFERPOOL) = OFF
鎖定信息 (LOCK) = ON 2005-06-26 14:25:00.972053 <-- DB2DETAILDEADLOCK將LOCK監(jiān)視器開(kāi)關(guān)打開(kāi)的時(shí)間
排序信息 (SORT) = OFF
SQL 語(yǔ)句信息 (STATEMENT) = OFF
表活動(dòng)信息 (TABLE) = OFF
獲取時(shí)間戳記信息(時(shí)間戳記) = ON 2005-06-26 10:36:47.019334
工作單元信息 (UOW) = OFF

前面已經(jīng)提到,由于打開(kāi)LOCK監(jiān)視器開(kāi)關(guān)會(huì)引起一些額外的開(kāi)銷,特別是在DB2DETAILDEADLOCK為了收集更詳細(xì)的死鎖信息而在創(chuàng)建時(shí)使用了“WITH DETAIL”選項(xiàng),與僅使用DEADLOCKS的監(jiān)視器相比還要額外收集:

1. 發(fā)生死鎖時(shí)應(yīng)用程序所執(zhí)行的語(yǔ)句
2. 死鎖時(shí)應(yīng)用程序所持有的鎖定

因此它對(duì)性能的影響較僅用DEADLOCKS的會(huì)更大。為提高數(shù)據(jù)庫(kù)性能,在不需要監(jiān)控死鎖的問(wèn)題時(shí),可考慮禁用DB2DETAIDEADLOCK事件監(jiān)視器。在禁用之前首先要了解查看事件監(jiān)視器開(kāi)關(guān)所處狀態(tài)的方法,這需要借助SQL函數(shù)EVENT_MON_STATE來(lái)完成:

db2 "select evmonname, EVENT_MON_STATE(evmonname) as state from syscat.eventmonitors"

舉例輸出為:

EVMONNAME STATE
---------------- -------
DB2DETAILDEADLOCK 1

1 條記錄已選擇。

注:STATE=0 表明事件監(jiān)視器的開(kāi)關(guān)為“關(guān)閉”狀態(tài),連接數(shù)據(jù)庫(kù)后,這樣的事件監(jiān)視器不會(huì)打開(kāi)相應(yīng)的數(shù)據(jù)庫(kù)管理器監(jiān)視器的開(kāi)關(guān);STATE=1 表明開(kāi)關(guān)為“打開(kāi)”狀態(tài),連接數(shù)據(jù)庫(kù)后,這樣的事件監(jiān)視器將打開(kāi)相應(yīng)的數(shù)據(jù)庫(kù)管理器監(jiān)視器的開(kāi)關(guān)。 二. 禁用事件監(jiān)視器的方法:

通過(guò)如下語(yǔ)句可關(guān)閉DB2DETAILDEADLOCK事件監(jiān)視器:

db2 set event monitor db2detaildeadlock state 0

不過(guò)由于DB2DETAILDEADLOCK監(jiān)視器創(chuàng)建時(shí)使用了AUTOSTART選項(xiàng),因此上述SQL語(yǔ)句只能在此次連接期間禁用該監(jiān)視器,從而關(guān)閉數(shù)據(jù)庫(kù)管理器的LOCK監(jiān)視器開(kāi)關(guān),但在下次連接數(shù)據(jù)庫(kù)時(shí),DB2DETAILDEADLOCK又會(huì)被自動(dòng)激活,并再次打開(kāi)該開(kāi)關(guān)。由于AUTOSTART的屬性在事件監(jiān)視器創(chuàng)建后是無(wú)法修改的,所以要長(zhǎng)期徹底地禁用這一缺省創(chuàng)建的事件監(jiān)視器,只有刪除它。

由于缺省狀態(tài)下DB2DETAILDEADLOCK事件監(jiān)視器是被激活的,如果直接發(fā)出如下刪除監(jiān)視器的語(yǔ)句:

db2 drop event monitor db2detaildeadlock

會(huì)遇到以下報(bào)錯(cuò):

SQL1619N 不能 DROP 活動(dòng)的事件監(jiān)視器。 SQLSTATE=55034

因此需要首先禁用它:

db2 set event monitor db2detaildeadlock state 0

然后再進(jìn)行刪除操作,便可將DB2DETAILDEADLOCK事件監(jiān)視器從數(shù)據(jù)庫(kù)中刪除,從而長(zhǎng)期禁用了該監(jiān)視器,避免了實(shí)例級(jí)的LOCK監(jiān)視器開(kāi)關(guān)因該監(jiān)視器的激活而被打開(kāi)。

另外,由于一個(gè)實(shí)例下可能有不止一個(gè)數(shù)據(jù)庫(kù),則每個(gè)庫(kù)都會(huì)有一個(gè)缺省的DB2DETAILDEADLOCK事件監(jiān)視器,連接任何一個(gè)庫(kù)都會(huì)使實(shí)例級(jí)的LOCK監(jiān)視器開(kāi)關(guān)被打開(kāi),因此如果要使實(shí)例級(jí)的LOCK監(jiān)視器開(kāi)關(guān)處于關(guān)閉狀態(tài),必須確保以下三點(diǎn): 1. 檢查數(shù)據(jù)庫(kù)管理器本身配置中的缺省快照監(jiān)視器開(kāi)關(guān)LOCK是關(guān)閉狀態(tài),即執(zhí)行:

db2 get dbm cfg 

確認(rèn)輸出中DFT_MON_LOCK的設(shè)置為“OFF”狀態(tài):

鎖定 (DFT_MON_LOCK) = OFF

如果為“ON”,可執(zhí)行下面的語(yǔ)句打開(kāi):

db2 update dbm cfg using dft_mon_lock off (即刻生效)

2. 確保沒(méi)有任何應(yīng)用打開(kāi)LOCK監(jiān)視器開(kāi)關(guān)。

3. 實(shí)例下每個(gè)已被連接的數(shù)據(jù)庫(kù)中的DB2DETAIDEADLOCK事件監(jiān)視器均被禁用或刪除。 三. DB2DETAILDEADLOCK事件監(jiān)視器的重新創(chuàng)建:

如果今后可能需要重新使用DB2DETAILDEADLOCK事件監(jiān)視器,可在刪除它前先利用如下語(yǔ)句獲取其定義:

db2 select char(a.evmonname,20) as evmonname, char(definer,15) as definer, char(type,16) as type, target_type, char(target,70) as target, maxfiles, maxfilesize, buffersize, io_mode, write_mode, autostart, dbpartitionnum, char(remarks,100) as remarks from syscat.eventmonitors a, syscat.events b where a.evmonname='DB2DETAILDEADLOCK' and a.evmonname=b.evmonname

以Windows平臺(tái)上的輸出舉例:

EVMONNAME DEFINER TYPE TARGET_TYPE TARGET
MAXFILES MAXFILESIZE
BUFFERSIZE IO_MODE WRITE_MODE AUTOSTART DBPARTITIONNUM REMARKS

-------------------- --------------- ---------------- ----------- --------------
-------------------------------------------------------- ----------- -----------
----------- ------- ---------- --------- -------------- -----------------------
-----------------------------------------------------------------------------
DB2DETAILDEADLOCK LIWENLI DETAILDEADLOCKS F C:\DB2\NODE000
0\SQL00002\DB2EVENT\db2detaildeadlock 20 512
17 B A Y 0 -

1 條記錄已選擇。

以上述輸出為例重新創(chuàng)建名為DB2DETAILDEADLOCK(當(dāng)然也可使用其他名稱)的詳細(xì)死鎖事件監(jiān)視器的語(yǔ)句為:

db2 create event monitor db2detaildeadlock for deadlocks with details write to file 'C:\DB2\NODE0000\SQL00002\DB2EVENT\db2detaildeadlock' autostart on dbpartitionnum 0 maxfiles 20 maxfilesize 512 buffersize 17 blocked append

當(dāng)語(yǔ)句成功執(zhí)行后,DB2DETAILDEADLOCK這一詳細(xì)死鎖監(jiān)視器便會(huì)重新創(chuàng)建起來(lái)。

到此,關(guān)于“db2死鎖監(jiān)視器的使用方法”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(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)容。

db2
AI