db2pd工具


developerWorks®

內容

db2pd 工具

用於監控 DB2 實例和數據庫的新的 DB2 UDB 工具

簡介

DB2 UDB V8.2 帶來了一種新工具稱為 db2pd,用於收集 DB2 實例和數據庫的統計信息。與 Informix® Dynamic Server 的 onstat 工具類似,db2pd 提供了 20 多個選項顯示關於數據庫事務、表空間、表統計信息、動態 SQL、數據庫配置和其他很多數據庫細節的信息。單個 db2pd 命令可以檢索多個領域的信息,並把結果保存到文件中。也可以在特定時期內調用該工具一定的次數,幫助您了解隨着時間的變化數據庫中的變動情況。該工具可用於故障檢修、問題確定、數據庫監控、性能調優和幫助應用程序的開發設計。本文介紹了這種新的工具,並通過例子說明如何使用它來提高生產率。

使用 db2pd 工具

使用這種強大的工具,必須具有 SYSADMIN 權限,而且在 UNIX® 或 Linux™ 環境中必須是實例的所有者。該命令的語法和選項說明,可以在 DB2 UDB Information Center 中在線找到。查找 db2pd 命令語法最簡單的辦法是使用 Web 搜索引擎,比如下面使用 Google:

  1. 打開 Google 搜索引擎,如圖 1 所示。
    圖 1. 使用 Google 搜索引擎搜索 DB2 命令 db2pd
    使用 Google 搜索引擎搜索 DB2 命令 db2pd
  2. 搜索“db2pd”,如圖 2 所示。
    圖 2. DB2 命令 dp2pd 在 Google 的搜索結果
     DB2 命令 dp2pd 在 Google 的搜索結果
  3. 打開 db2pd – Monitor and Troubleshoot DB Command,如圖 3 所示。
    圖 3. DB2 Information Center 中關於 db2pd 工具的信息
    DB2 Information Center 中關於 db2pd 工具的信息

調用 db2pd 工具有兩種方式。可以用交互模式調用 db2pd 工具,或者直接在操作系統命令提示符下運行。要是用交互模式執行該工具,可以在操作系統命令提示符下輸入 db2pd –interactive 或者直接輸入 db2pd,這樣將看到 db2pd 命令提示符 db2pd>,可以輸入命令選項。使用 –help 選項可以獲得幫助信息。退出 db2pd 命令提示符只需要輸入 quit 或者 q。圖 4 中的例子說明了如何使用交互模式顯示當前的代理。

圖 4. 用交互模式調用 db2pd

用交互模式調用 db2pd

在操作系統命令提示符下調用該工具可以輸入帶有命令選項的 db2pd 命令。下面的例子(圖 5)使用 -agents 選項顯示了所有的活動代理。

圖 5. 在操作系統命令提示符下調用 db2pd

在操作系統命令提示符下調用 db2pd

此外,還可以通過將選項保存在文件中或者在 DB2PDOPT 環境變量中設置選項來控制該命令。下面的例子(圖 6)說明可以將 -agents 選項保存在一個(在該例中)名叫 file.out 的文件中,然后使用 db2pd –command file.out 執行選項。

圖 6. 將 db2pd 選項保存在文件中

將 db2pd 選項保存在文件中

如果要使用 DB2PDOPT 環境變量,可以將 DB2PDOPT 設成需要的選項然后像下面這樣調用 db2pd:

圖 7. 在 DB2PDOPT 環境變量中設置 db2pd 選項

在 DB2PDOPT 環境變量中設置 db2pd 選項

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 次:

1

db2pd –mempools  –repeat 2 5

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

1

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

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

監控的例子

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

例 1:

如果希望了解當前 DB2 的級別和當前操作系統的信息,可以輸入以下命令:

1

db2pd –version –osinfo

圖 8. 監控例子 1

監控例子 1

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

例 2:

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

1

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

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

1

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 語句的當前隔離級別,可以使用下面的命令:

1

db2pd –db sample –dynamic

圖 10. 監控例子 3

監控例子 3

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

1

select * from employee

例 4:

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

1

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 檢查表空間的狀態,現在只需要在操作系統命令提示符下輸入以下命令。

1

db2pd -db sample –tablespace

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

圖 12a. 監控例子 5

監控例子 5

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

圖 12b. db2tbst 命令

db2tbst 命令

結束語

DB2 UDB V8.2 新增的 db2pd 工具對於數據管理員來說是一種方便的工具。這些例子可以幫助您理解這種工具和它的潛在能力。通過試驗不同的選項,可以加深理解,並用它簡化您的數據庫管理任務。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM