首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2 進程全景圖譜:Linux/UNIX/Windows 核心進程功能、啟動時機與故障診斷實戰

     編輯:DB2 教學

前言:進程視角的 DB2 內核透視

DB2 進程模型是理解資料庫行為、診斷效能瓶頸、設計高可用腳本的關鍵視角。本文系統梳理 DB2 UDB 在 Linux/UNIX/Windows 三大平台的核心進程(EDU)、功能定位、啟動條件、典型數量與實戰診斷案例,並提供字母序索引表供快速查閱。

核心概念:代理程式架構

類型進程名角色啟用條件
協調代理db2agent代表應用協調所有資料庫請求,管理子代理每個連接一個 (未啟用連接集中時)
子代理 (活躍)db2agntp執行協調代理分派的並行工作單元INTRA_PARALLEL=YES
子代理 (閒置)db2agnta完成工作後歸池,等待復用INTRA_PARALLEL=YES
並行恢復代理db2agnsc前滾/重啟恢復階段並行重放日誌恢復操作期間
閒置代理池-受 MAXAGENTS、NUM_POOLAGENTS、NUM_INITAGENTS 控制啟動時依配置預建

進程分類全景表 (Linux/UNIX)

每實例常駐進程 (無連接、無作用資料庫)

進程功能啟動條件
db2sysc主引擎控制器,EDU 總匯點實例啟動即存在,殺死即停庫
db2wdog看門狗,異常信號傳播、孤兒進程收割UNIX 必須,db2gds 通知新進程 PID
db2gds全域守護衍生器,啟動所有 EDUUNIX 每實例/分區一個
db2syslog系統日誌寫入器 (UNIX syslog / Win Event Log)UNIX 需配置 syslog.conf
db2resyn重同步管理器,支援兩階段提交永久啟動
db2srvlst地址列表管理 (OS/390 等)永久啟動
db2ipccmIPC 通訊管理器,本地連接偵聽每分區一個
db2tcpcmTCP/IP 偵聽器,遠程連接分派永久啟動
db2tcpdmTCP 發現請求偵聽 (配置助手掃描)永久啟動
db2snacmSNA/APPC 偵聽器啟用 SNA 協議時
db2fcmdFCM 守護進程,分區間高速通訊多分區環境 (DPF)
db2fmcd故障監視器協調器,物理機級UNIX 必須
db2fmd故障監視器守護,每實例一個,受 db2fmcd 監管UNIX 必須
db2fmtlg日誌預分配器 (LOGRETAIN ON + USEREXIT OFF)滿足條件時啟動
db2cart日誌歸檔調度器,調用用戶出口啟用 USEREXIT 時
db2chkau審計日誌記錄器啟用審計時
db2ckpw密碼驗證器 (OS 級認證)AUTHENTICATION=SERVER 或非安全 OS
db2disp連接集中器分派器啟用連接集中時
db2glock全域死鎖檢測器,目錄分區運行多分區環境
db2govdDB2 Governor,規則驅動反應式管理啟用 Governor 時
db2panic緊急代理,分區無閒置代理時兜底多分區環境
db2pdbc並行資料庫控制器,處理遠程節點請求多分區環境
db2rebal重新平衡器,DMS 容器新增後異步重平衡執行 ALTER TABLESPACE ADD 時
dlasyncData Link 檔案管理器監視器配置 Data Link 時

每實例每連接/活動資料庫進程

進程觸發條件數量關係
db2agent應用連接每連接一個 (非集中模式)
db2agentgDRDA 應用請求器閘道聯邦查詢時
db2agnsc並行恢復恢復期間動態建立
db2agnta/p分區內並行INTRA_PARALLEL=YES 時
db2dlock本地死鎖檢測每活動資料庫分區一個
db2estor緩衝池↔擴充儲存頁面搬移啟用擴充儲存時
db2event事件監視器進程每啟用的事件監視器一個
db2loggr日誌讀取器 (回滾/重啟/前滾)有相關操作時
db2loggw日誌寫入器,刷新日誌緩衝至磁碟每活動資料庫一個
db2logts表空間變更歷史收集器 (DB2TSCHG.HIS)每活動資料庫一個
db2pclnr頁面清除器,異步刷髒頁數量 = NUM_IOCLEANERS,被觸發並行運行
db2pfchr預取器,大塊 I/O 異步預讀數量 = NUM_IOSERVERS

功能型專用進程 (備份/恢復/Load/Reorg)

進程族群代表進程功能關鍵參數
備份/恢復緩衝區操縱器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
媒體控制器d2medLoad/Backup/Restore 實際讀寫容器每複製會話一個

Windows 平台特殊進程/服務

服務/進程功能
db2syscs.exe主引擎 (Windows Service),EDU 以執行緒實現
db2dasrrm.exe管理伺服器 (DAS),Control Center 遠程管理
db2dasstm.exeDAS 工具資料庫管理器
db2fmp.exe受防護例程執行器
db2rcmd.exe遠程命令服務,分區間管理通訊
db2jds.exeJDBC Applet Server
db2licd.exe授權守護程序
db2sec.exeWindows 密碼驗證器
IWH2SERV.EXEWarehouse Center (ESE 組件)

實戰診斷案例:進程即線索

案例 1:電子商務網站間歇性延遲 → db2pclnr 佔用 90%+ CPU

現象:快照無異常,但應用回應時間波動劇烈。
進程檢視:ps -ef 顯示 db2pclnr 高佔用。
根因:NUM_IOCLEANERS 過小 + CHNGPGS_THRESH 觸發頻繁 → 清除器頻繁喚醒、大量同步 I/O。
調優:調大 NUM_IOCLEANERS、優化 CHNGPGS_THRESH、增加緩衝池 → 清除器平滑運行,吞吐提升 50%+。

案例 2:查詢全面變慢 → db2rebal 正在運行

現象:應用列表無異常負載,但回應時間普遍惡化。
進程檢視:發現 db2rebal 進程。
根因:DBA 早上給 40GB 表表空間新增容器,觸發異步重平衡。
對策:維護窗口執行容器擴展、監控 db2rebal 狀態、或使用 ALTER TABLESPACE ... REBALANCE 手動控制時機。

db2diag.log 進程欄位解碼

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 + 進程類型 + 連接資料庫。結合進程表即可定位功能域 (鎖管理器、代理類型、資料庫上下文)。

啟動序列進程演示 (AIX 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

連接 SAMPLE 資料庫後 (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 則進程消失。

字母序進程總索引 (74 項)

完整索引含進程名、平台、對應詳細表編號,見原文表 7。核心檢索建議:

  • 以 db2 開頭:核心引擎與代理族群
  • 以 db2l 開頭:Load 子系統專用進程
  • 以 db2 結尾 .exe:Windows 服務層
  • dlasync、IWH2SERV.EXE:專用組件

結語:進程知識轉化為運維效能

掌握進程模型不僅是理論功課,更是:

  1. 秒級定位異常源:高 CPU/等待事件 → 進程名 → 功能域 → 參數/負載
  2. 預測性維運:識別 db2rebal、db2loggr、db2event 等背景作業窗口
  3. 高可用腳本設計:監控 db2sysc/db2wdog 存活、db2agent 池健康度
  4. 日誌深度解讀:db2diag.log PID 映射功能域,快速聚焦模組

警示:嚴禁在正常環境直接 kill -9 DB2 進程。殺死 db2sysc 導致實例全停;殺死代理導致事務中斷、連接遺棄。進程觀測僅供診斷,操作請用 db2stop/force application/quiesce 等官方命令。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved