db2pd 工具

jst143發表於2011-03-17

db2pd 命令有 22 個選項。如果要對所有資料庫分割槽伺服器上、所有活動的本地資料庫執行所有這些選項,只需要輸入 db2pd –everything,也可通過下表所示的範圍選項限制資訊的範圍。


表 1. db2pd 範圍選項
範圍 範圍選項 說明
例項 -inst-ins 用於例項
資料庫 -database x –db x 用於特定的資料庫x
資料庫 -alldatabase–alldb 用於所有資料庫
分割槽 -dbpartitionnum n –dbp n 用於特定的資料庫分割槽伺服器 n
分割槽 -alldbpartitionnums–alldbp 用於例項中的所有資料庫分割槽伺服器

注意,dbp2pd 選項可以在例項的範圍內,也可以在資料庫的範圍內。如果使用資料庫範圍,指定的資料庫必須已經啟用。表 2 顯示了每個 db2pd 選項、選項的說明和對應的範圍。


表 2. db2pd 選項的範圍
db2pd 選項 說明 範圍
agents 返回關於代理的資訊 例項
applications 返回應用程式的資訊 資料庫
bufferpools 返回緩衝池的資訊 資料庫
Catalogcache 返回目錄緩衝的資訊 資料庫
dbcfg 返回資料庫配置引數的設定 資料庫
dbmcfg 返回資料庫管理器配置引數的設定 例項
dynamic 返回動態 SQL 的執行資訊 資料庫
fcm 返回快速通訊管理器的資訊 例項
help 返回 db2pd 命令的幫助資訊
logs 返回日誌資訊 資料庫
locks 返回鎖定資訊 資料庫
mempools 返回記憶體池的資訊 兩者
memsets 返回記憶體設定的資訊 兩者
osinfo 返回作業系統資訊 Instance
recovery 返回恢復活動的資訊 資料庫
reopt 返回使用 REOPT ONCE 選項應用程式重新優化的 Cached SQL 語句的資訊 資料庫
reorg 返回表重組的資訊 資料庫
static 返回靜態 SQL 和包的執行資訊 資料庫
sysplex 返回和所有資料庫或者某個資料庫的別名相關的伺服器列表資訊 例項
tablespace 返回表空間的資訊 資料庫
tcbstats 返回表和索引的資訊 資料庫
transactions 返回活動事務的資訊 資料庫
version 返回當前 DB2 版本和級別的資訊 例項

更好的是,可以指定 –repeat 引數重複該命令。比方說,下面的命令每 2 秒鐘顯示一次 DB2 記憶體資訊,共 5 次:

db2pd –mempools  –repeat 2 5

此外,通過 file= 引數還可以將特定 db2pd 命令選項的結果儲存到檔案中。file 和 repeat 引數可以結合使用:

db2pd –mempools file=memp.txt –repeat 2 5

其中,memp.txt 儲存輸出結果。


監控的例子

下面這些例子說明了如何用 db2pd 工具監控您的資料庫環境。

例 1:

如果希望瞭解當前 DB2 的級別和當前作業系統的資訊,可以輸入以下命令:

db2pd –version –osinfo


圖 8. 監控例子 1
監控例子 1

–version 選項顯示了系統上執行的當前 DB2 的版本和級別。輸入 db2level 命令也可以得到同樣的資訊。–osinfo 選項顯示 OS、CPU、實體記憶體和虛擬記憶體資訊。類似的 OS 資訊也可以在 DB2 啟動時的 db2diag.log 中找到。這個例子也說明了獲得版本資訊和 OS 資訊是多麼簡單,只需要在一個 db2pd 命令中指定兩個選項。

例 2:

如果希望瞭解誰給資料庫加了鎖,可以使用下面的命令確定這個人:

db2pd –database sample –locks –transactions –agents –file lock.txt

db2pd 命令的所有選項都可以使用前三個字元的縮寫,只有兩個除外:-mempools 和 –memsets。使用縮寫形式,上面的例子可以改寫為:

db2pd –db sample –loc –tra –age –fil lock.txt

上面的命令使用了混合範圍選項。–lock/-loc 和 –transactions/-tra 是資料庫範圍內的選項,agents/–age 是例項範圍內的選項。雖然範圍選項是混合的,仍然可以顯示當前活動代理的鎖定和事務資訊。使用 –file/-fil 選項,命令的輸出儲存到 lock.txt 檔案中。該命令的訊息顯示如下。


圖 9a. 監控例子 2
監控例子 2

要注意,–db 選項被 –agents 選項忽略了。

下圖(圖 9b)顯示了 lock.txt 檔案的部分內容。


圖 9b. lock.txt 檔案的內容
lock.txt 檔案的內容

通過以下步驟很容易發現誰加了鎖。

  1. 圖 9b 中,–lock 選項生成的第一段輸出表明,一個共享鎖(Mode=S)被控制程式碼號為 3(TranHdl=3)的事務持有,而且鎖定的狀態是授權(Sts=G)。
  2. –transactions 選項生成的第二部分輸出表明,事務控制程式碼號 3 具有應用程式控制程式碼號 28(AppHandl=28)。
  3. 最後,可以在輸出的第三部分中發現,ID 為 POONS 的使用者擁有應用程式控制程式碼號 28。

事務在等到被鎖定的資源時,–locks 在輸出中的狀態(Sts)將是 W,代表 Waiting(等待)狀態。然後使用上面的方法很容易確定誰在等待鎖定的資源。

這個例子說明,一個簡單的命令可以檢索必要的資訊確定誰加了鎖,也說明可以將多個選項的輸出儲存到一個檔案中,還說明了選項的縮寫形式。一旦熟悉了 db2pd 工具,為了更快地執行命令可以使用縮寫形式減少按鍵的次數。但是為了清晰起見,在指令碼檔案中可能希望避免使用縮寫形式。

例 3:

如果需要檢查動態 SQL 語句的當前隔離級別,可以使用下面的命令:

db2pd –db sample –dynamic


圖 10. 監控例子 3
監控例子 3

圖 10 中,在 Dynamic SQL Environments 部分可以找到執行中的動態 SQL 語句的當前隔離級別。該例中,雜湊的錨識別符號 171 (AnchID=171) 具有最嚴格的隔離級別,Repeatable Read(可重複讀,RR)。通過交叉參照 Dynamic SQL Statements,可以確定哪個具體的 SQL 語句具有 RR 隔離級別:

select * from employee

例 4:

如果希望監控表的重組(reorg)狀態,在 v8.2 之前可以使用 GET SNAPSHOT FOR TABLES ON 資料庫名 檢查重組狀態。使用 db2pd 工具,執行下面的命令就能獲得重組狀態:

db2pd –db sample –reorg file=reorg.txt

reorg.txt 檔案包含以下資訊:


圖 11a. 監控開始的重組狀態
監控開始的重組狀態

圖 11a 中,對錶 STAFF 執行了一個離線的重組工具。如果稍後再執行相同的命令,結果將如圖 11b 所示,狀態已經從“Started”變為了“Done”。“Done”狀態表明重組已經完成了。


圖 11b. 監控結束的重組狀態
監控結束的重組狀態

例 5:

V8.2 之前的 DB2 UDB 版本中,可以使用命令 DB2 LIST TABLESPACES SHOW DETAIL 檢查表空間的狀態,現在只需要在作業系統命令提示符下輸入以下命令。

db2pd -db sample –tablespace

圖 12 中可以看到,SAMPLE 資料庫中共有三個表:SYSCATSPACE、USERSPACE1 和 SYSTOOLSPACE,在 Tablespaces 節中說明表空間狀態為 0x00000800。


圖 12a. 監控例子 5
監控例子 5

可以使用 db2tbst 命令對錶空間狀態解碼。可以發現,表空間處於“Backup in progress(備份中)”狀態。結果如圖 12b 所示。


圖 12b. db2tbst 命令
db2tbst 命令 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23577591/viewspace-689700/,如需轉載,請註明出處,否則將追究法律責任。