本系列首篇建立 DB2 日常運維的基礎工具箱:高效資料裝載 (LOAD)、應用連線鎖定的識別與強制釋放、快照監控執行狀態、配置參數查詢與修改。掌握這些基礎指令,是進階排錯與自動化的基石。
# 1. 匯出乾淨資料 (排除臟資料條件)
db2 "export to tempfile of del
select * from TABLENAME where not <清理條件>"
# 2. 裝載回原表 (替換模式、無日誌、防換行符)
db2 "load from tempfile of del modified by delprioritychar
replace into TABLENAME nonrecoverable"
| 參數 | 作用 | 適用場景 |
|---|---|---|
MODIFIED BY DELPRIORITYCHAR | 指定分隔符優先級,防止資料欄位內含換行符導致解析錯誤 | 文字欄位可能含換行/分隔符的資料 |
REPLACE INTO | 截斷目標表並裝載新資料 (等同 TRUNCATE + INSERT) | 全量重載、測試資料重置 |
NONRECOVERABLE | 不產生重做日誌,速度最快,但表空間進入 BACKUP PENDING | 大量測試資料、可重建的暫存表、配合後續完整備份 |
COPY YES | 產生副本映像,支援前滾恢復,不進入 BACKUP PENDING | 生產環境必須可恢復的表 |
EXPORTLOAD (注意鎖衝突)CPU_PARALLELISM、DISK_PARALLELISM 參數微調平行度db2 list application | grep BTPDBS
# 輸出:Authid Application Name Appl. Handle Application Id DB Name # of Agents
# BTPUSER db2jcc_application 299 *LOCAL.db2inst1.240115103000 SAMPLE 1
db2 "force application (299, 300, 301)"
# 299,300,301 為 Application Handle (非 Process ID)
db2 get snapshot for application agentid 299 | grep -i "row\|lock\|wait\|cpu"
# 關鍵輸出:
# Rows read = 125000
# Rows written = 45
# Lock waits = 12
# Lock wait time (ms) = 3450
# Total CPU time = 1.23
Lock waits > 0 且 Lock wait time 高 → 檢查阻塞鏈 (db2pd -locks)Rows read 異常大 → 可能全表掃描,檢查索引與統計資訊UOW waiting → 應用端邏輯問題 (未提交、死鎖重試)
db2 get db cfg for <dbname>
# 省略 dbname 時針對當前連接資料庫
# 線上立即生效 (動態參數)
db2 update db cfg for <dbname> using LOGFILSIZ 4096
# 需重啟資料庫生效 (非動態參數)
db2 update db cfg for <dbname> using LOGBUFSZ 1024
# 需 db2 connect reset; db2stop; db2start 後生效
| 參數 | 建議值/原則 | 動態? | 說明 |
|---|---|---|---|
| LOGFILSIZ | 4096~16384 (4K 頁) | 否 | 單一日誌檔大小,影響切換頻率與恢復時間 |
| LOGPRIMARY | 10~50 | 否 | 主動日誌檔數,預留交易空間 |
| LOGSECOND | 10~100 | 否 | 次要日誌檔數,應對長交易暴增 |
| LOGBUFSZ | 256~1024 (4K 頁) | 否 | 日誌緩衝區,減少日誌 I/O 等待 |
| LOCKLIST | AUTOMATIC 或 實例記憶體 10~20% | 是 | 鎖列表大小,防鎖升級 |
| MAXLOCKS | 10~20 | 是 | 單一應用佔用鎖列表上限 % |
| CHNGPGS_THRESH | 40~60 | 是 | 頁面觸發清理閾值 % |
| NUM_IOCLEANERS | CPU 核心數 / 2 | 否 | 非同步頁面清理器數量 |
# 查詢實例配置
db2 get dbm cfg
# 修改實例參數 (通常需重啟實例)
db2 update dbm cfg using DIAGSIZE 1024
db2 update dbm cfg using SVCENAME 50000
db2stop && db2start
這四項基礎技能 — LOAD、應用管理、快照監控、參數調校 — 構成 DB2 DBA 日常 80% 的操作內容。建議將常用指令封裝為別名或腳本庫 (如 db2mon.sh, db2load.sh),以標準化動作取代記憶力,減少人為失誤。