DB2 進程模型是理解資料庫行為、診斷效能瓶頸、設計高可用腳本的關鍵視角。本文系統梳理 DB2 UDB 在 Linux/UNIX/Windows 三大平台的核心進程(EDU)、功能定位、啟動條件、典型數量與實戰診斷案例,並提供字母序索引表供快速查閱。
| 類型 | 進程名 | 角色 | 啟用條件 |
|---|---|---|---|
| 協調代理 | db2agent | 代表應用協調所有資料庫請求,管理子代理 | 每個連接一個 (未啟用連接集中時) |
| 子代理 (活躍) | db2agntp | 執行協調代理分派的並行工作單元 | INTRA_PARALLEL=YES |
| 子代理 (閒置) | db2agnta | 完成工作後歸池,等待復用 | INTRA_PARALLEL=YES |
| 並行恢復代理 | db2agnsc | 前滾/重啟恢復階段並行重放日誌 | 恢復操作期間 |
| 閒置代理池 | - | 受 MAXAGENTS、NUM_POOLAGENTS、NUM_INITAGENTS 控制 | 啟動時依配置預建 |
| 進程 | 功能 | 啟動條件 |
|---|---|---|
db2sysc | 主引擎控制器,EDU 總匯點 | 實例啟動即存在,殺死即停庫 |
db2wdog | 看門狗,異常信號傳播、孤兒進程收割 | UNIX 必須,db2gds 通知新進程 PID |
db2gds | 全域守護衍生器,啟動所有 EDU | UNIX 每實例/分區一個 |
db2syslog | 系統日誌寫入器 (UNIX syslog / Win Event Log) | UNIX 需配置 syslog.conf |
db2resyn | 重同步管理器,支援兩階段提交 | 永久啟動 |
db2srvlst | 地址列表管理 (OS/390 等) | 永久啟動 |
db2ipccm | IPC 通訊管理器,本地連接偵聽 | 每分區一個 |
db2tcpcm | TCP/IP 偵聽器,遠程連接分派 | 永久啟動 |
db2tcpdm | TCP 發現請求偵聽 (配置助手掃描) | 永久啟動 |
db2snacm | SNA/APPC 偵聽器 | 啟用 SNA 協議時 |
db2fcmd | FCM 守護進程,分區間高速通訊 | 多分區環境 (DPF) |
db2fmcd | 故障監視器協調器,物理機級 | UNIX 必須 |
db2fmd | 故障監視器守護,每實例一個,受 db2fmcd 監管 | UNIX 必須 |
db2fmtlg | 日誌預分配器 (LOGRETAIN ON + USEREXIT OFF) | 滿足條件時啟動 |
db2cart | 日誌歸檔調度器,調用用戶出口 | 啟用 USEREXIT 時 |
db2chkau | 審計日誌記錄器 | 啟用審計時 |
db2ckpw | 密碼驗證器 (OS 級認證) | AUTHENTICATION=SERVER 或非安全 OS |
db2disp | 連接集中器分派器 | 啟用連接集中時 |
db2glock | 全域死鎖檢測器,目錄分區運行 | 多分區環境 |
db2govd | DB2 Governor,規則驅動反應式管理 | 啟用 Governor 時 |
db2panic | 緊急代理,分區無閒置代理時兜底 | 多分區環境 |
db2pdbc | 並行資料庫控制器,處理遠程節點請求 | 多分區環境 |
db2rebal | 重新平衡器,DMS 容器新增後異步重平衡 | 執行 ALTER TABLESPACE ADD 時 |
dlasync | Data Link 檔案管理器監視器 | 配置 Data Link 時 |
| 進程 | 觸發條件 | 數量關係 |
|---|---|---|
db2agent | 應用連接 | 每連接一個 (非集中模式) |
db2agentg | DRDA 應用請求器閘道 | 聯邦查詢時 |
db2agnsc | 並行恢復 | 恢復期間動態建立 |
db2agnta/p | 分區內並行 | INTRA_PARALLEL=YES 時 |
db2dlock | 本地死鎖檢測 | 每活動資料庫分區一個 |
db2estor | 緩衝池↔擴充儲存頁面搬移 | 啟用擴充儲存時 |
db2event | 事件監視器進程 | 每啟用的事件監視器一個 |
db2loggr | 日誌讀取器 (回滾/重啟/前滾) | 有相關操作時 |
db2loggw | 日誌寫入器,刷新日誌緩衝至磁碟 | 每活動資料庫一個 |
db2logts | 表空間變更歷史收集器 (DB2TSCHG.HIS) | 每活動資料庫一個 |
db2pclnr | 頁面清除器,異步刷髒頁 | 數量 = NUM_IOCLEANERS,被觸發並行運行 |
db2pfchr | 預取器,大塊 I/O 異步預讀 | 數量 = NUM_IOSERVERS |
| 進程族群 | 代表進程 | 功能 | 關鍵參數 |
|---|---|---|---|
| 備份/恢復緩衝區操縱器 | db2bm | 備份讀/恢復寫表空間 | 每備份緩衝區一個 |
| 受防護例程執行器 | db2fmp | 執行 Stored Procedure / UDF (防火牆外) | 取代舊 db2udf/db2dari |
| Load 子系統 | db2lbmX, db2lfrmX, db2lmr, db2lmwX, db2lrid, db2lpart, db2lload... | 格式化、分區、媒體讀寫、RID 建構、索引排序 | CPU_PARALLELISM, DISK_PARALLELISM 控制並行度 |
| Reorg 進程 | db2reorg | 線上就地重組 (V8.1+),類磁碟整理 | 執行 REORG TABLE ... ALLOW WRITE ACCESS |
| 媒體控制器 | d2med | Load/Backup/Restore 實際讀寫容器 | 每複製會話一個 |
| 服務/進程 | 功能 |
|---|---|
db2syscs.exe | 主引擎 (Windows Service),EDU 以執行緒實現 |
db2dasrrm.exe | 管理伺服器 (DAS),Control Center 遠程管理 |
db2dasstm.exe | DAS 工具資料庫管理器 |
db2fmp.exe | 受防護例程執行器 |
db2rcmd.exe | 遠程命令服務,分區間管理通訊 |
db2jds.exe | JDBC Applet Server |
db2licd.exe | 授權守護程序 |
db2sec.exe | Windows 密碼驗證器 |
IWH2SERV.EXE | Warehouse Center (ESE 組件) |
現象:快照無異常,但應用回應時間波動劇烈。
進程檢視:ps -ef 顯示 db2pclnr 高佔用。
根因:NUM_IOCLEANERS 過小 + CHNGPGS_THRESH 觸發頻繁 → 清除器頻繁喚醒、大量同步 I/O。
調優:調大 NUM_IOCLEANERS、優化 CHNGPGS_THRESH、增加緩衝池 → 清除器平滑運行,吞吐提升 50%+。
現象:應用列表無異常負載,但回應時間普遍惡化。
進程檢視:發現 db2rebal 進程。
根因:DBA 早上給 40GB 表表空間新增容器,觸發異步重平衡。
對策:維護窗口執行容器擴展、監控 db2rebal 狀態、或使用 ALTER TABLESPACE ... REBALANCE 手動控制時機。
2000-03-06-11.53.18.001160 Instance:myInst Node:000
PID:78121(db2agent (TEST)) TID:352
Appid:*LOCAL.payroll.000306140834
lock_manager sqlplrq Probe:111 Database:SAMPLE
DIA9999E An internal return code occurred. Report the following:
"0xFFFFE10E".
關鍵欄位:PID:78121(db2agent (TEST)) → 進程 ID + 進程類型 + 連接資料庫。結合進程表即可定位功能域 (鎖管理器、代理類型、資料庫上下文)。
ps -ef)db2start 後 (NUM_INITAGENTS=0)root 49504 1 0 13:13:07 - 0:00 db2wdog
db2inst1 22142 49180 0 13:13:10 - 0:00 db2gds
db2inst1 43072 49180 0 13:13:17 - 0:00 db2syslog
db2inst1 49180 49504 0 13:13:10 - 0:00 db2sysc
db2inst1 55920 49180 0 13:13:19 - 0:00 db2resync
db2inst1 59012 22142 0 13:13:19 - 0:00 db2srvlst
db2inst1 60680 49180 0 13:13:17 - 0:00 db2ipccm
NUM_IOCLEANERS=1, NUM_IOSERVERS=3)... (新增進程)
db2inst1 25844 35124 0 16:04:50 - 0:00 db2pfchr (x3, 對應 NUM_IOSERVERS=3)
db2inst1 35540 35124 0 16:04:50 - 0:00 db2loggr (SAMPLE)
db2inst1 49626 35124 0 16:04:50 - 0:00 db2dlock (SAMPLE)
db2inst1 58168 35124 0 16:04:50 - 0:00 db2loggw (SAMPLE)
db2inst1 59048 35124 0 16:04:50 - 0:00 db2pfchr
db2inst1 64010 55852 0 16:04:50 - 0:00 db2agent (SAMPLE) ← 關鍵:連接建立
db2inst1 70018 35124 0 16:04:50 - 0:00 db2pclnr (x1, 對應 NUM_IOCLEANERS=1)
db2inst1 72120 35124 0 16:04:51 - 0:00 db2event (DB2DETAILDEADLOCK)
db2 connect reset 後db2agent (SAMPLE) → db2agent (idle) (進入池,因 NUM_POOLAGENTS > 0)。若 NUM_POOLAGENTS=0 則進程消失。
完整索引含進程名、平台、對應詳細表編號,見原文表 7。核心檢索建議:
db2 開頭:核心引擎與代理族群db2l 開頭:Load 子系統專用進程db2 結尾 .exe:Windows 服務層dlasync、IWH2SERV.EXE:專用組件掌握進程模型不僅是理論功課,更是:
db2rebal、db2loggr、db2event 等背景作業窗口db2sysc/db2wdog 存活、db2agent 池健康度db2diag.log PID 映射功能域,快速聚焦模組警示:嚴禁在正常環境直接 kill -9 DB2 進程。殺死 db2sysc 導致實例全停;殺死代理導致事務中斷、連接遺棄。進程觀測僅供診斷,操作請用 db2stop/force application/quiesce 等官方命令。