DB2 命令列處理器 (CLP) 與系統指令極多,本文分類整理 60+ 最常用指令,涵蓋實例管理、資料庫操作、表/索引維護、備份還原、監控快照、效能調優、腳本執行與說明,供 DBA/開發人員桌邊速查。
db2cmd # 開啟 DB2 命令視窗 (Windows)
db2cmd db2cc # 開啟控制中心
db2cmd db2ce # 開啟命令編輯器 (GUI)
db2start # 啟動實例
db2stop # 停止實例 (若有連線需先 db2 force application all)
db2stop force # 強制停止
db2icrt <inst_name> # 建立實例
db2idrop <inst_name> # 刪除實例
db2ilist # 列出所有實例
db2iauto -on|-off <inst> # 設定開機自動啟動
db2iupdt <inst_name> # 更新實例 (Fix Pack 後)
db2get instance # 顯示當前實例
set DB2INSTANCE=<inst_name> # 切換當前實例 (Windows)
export DB2INSTANCE=<inst_name> # 切換當前實例 (Linux/Unix)
db2 create db <dbname> # 建立資料庫
db2 create db <dbname> on /path codeset UTF-8 territory CN pagesize 32768 # 進階建庫
db2 connect to <dbname> user <usr> using <pwd> # 連線
db2 connect reset # 斷開連線
db2 terminate # 徹底終止後端進程
db2 force application all # 強制中斷所有應用連線
db2 list db directory # 列出所有編目資料庫
db2 list active databases # 列出啟動中資料庫
db2 get db cfg # 顯示資料庫配置參數
db2 get db cfg for <dbname> # 顯示特定庫配置
db2 update db cfg for <dbname> using <param> <value> # 修改參數 (需重啟實例生效)
db2 drop database <dbname> # 刪除資料庫 (謹慎)
db2 list tables # 列出當前 Schema 使用者表
db2 list tables for system # 列出系統表
db2 list tables for all # 列出所有表
db2 list tables for schema <schema> # 列出特定 Schema 表
db2 create table t1 like t2 # 複製表結構
db2 "insert into t1 select * from t2" # 複製資料
db2 "select * from tab where ..." # 查詢
db2 describe table <tabname> # 顯示表結構
db2 "alter table <tab> alter column <col> set data type varchar(100)" # 修改欄位型別
db2 reorg table <tabname> # 重組表 (消除碎片、回收已刪空間)
db2 runstats on table <tabname> with distribution and indexes all # 更新統計資訊
db2 -tvf script.sql # 執行 SQL 腳本 (-t 分號結束, -v 顯示指令, -f 檔案)
db2 ? <command> # 指令說明 (如 db2 ? backup)
db2 ? <sqlcode> # 錯誤代碼說明 (如 db2 ? 0803, 需 4 位數)
# 離線備份
db2 backup db <dbname> to /backup/path compress include logs
# 線上備份 (需歸檔日誌模式)
db2 backup db <dbname> online to /backup/path with 2 buffers buffer 1024 include logs
# 表空間備份
db2 backup db <dbname> tablespace (USERSPACE1) to /backup/path
# 還原
db2 restore db <src_db> from /backup/path taken at <timestamp> into /target/path redirect without prompting
# 重導向還原後需 SET TABLESPACE CONTAINERS ... 然後
db2 restore db <dbname> continue
# 前滾復原
db2 rollforward db <dbname> to end of logs and complete
# 增量備份還原
db2 restore db <dbname> incremental automatic from /backup/path taken at <ts>
# 單表匯出 IXF
db2 "export to tab.ixf of ixf select * from schema.tab"
# 單表匯入
db2 "import from tab.ixf of ixf modified by forcecreate commitcount 10000 replace_create into schema.tab"
# 大量載入
db2 "load from tab.ixf of ixf replace into schema.tab copy yes use tsm"
# 整庫結構擷取
db2look -d <dbname> -e -o ddl.sql -i <usr> -w <pwd>
# 整庫資料遷移
db2move <dbname> export -sn <schema> -tn <tab1,tab2>
db2move <dbname> import -io replace_create
db2 get snapshot for all databases > snap.out
db2 get snapshot for dbm >> snap.out
db2 get snapshot for all bufferpools >> snap.out
db2 reset monitor all # 重置監視器
db2 get monitor switches # 檢視監視開關
db2 update monitor switches using bufferpool on # 開啟緩衝池監視
db2 list applications show detail # 列出應用程式 (含 PID)
db2pd -db <dbname> -locks show detail # 即時鎖資訊 (無鎖定)
db2pd -db <dbname> -tablespaces # 表空間即時狀態
db2pd -db <dbname> -bufferpools # 緩衝池即時狀態
db2top -d <dbname> # 互動式即時效能監控 (需安裝)
# 緩衝池命中率計算 (理想 > 95%)
# (1 - (physical_reads_data + physical_reads_index) / (logical_reads_data + logical_reads_index)) * 100%
# 更新所有表統計資訊
db2 reorgchk update statistics on table all
# 檢視索引統計時間
db2 "select tabname, nleaf, nlevels, stats_time from sysibm.sysindexes"
# 更改緩衝池大小 (NPAGES=-1 時由 BUFFPAGE 控制)
db2 alter bufferpool IBMDEFAULTBP size -1
db2 update db cfg for <dbname> using BUFFPAGE <new_value>
# 動態 FCM 緩衝 (純量/DPF)
db2 update dbm cfg using FCM_NUM_BUFFERS AUTOMATIC
db2set -all # 顯示所有註冊表/環境變數
db2set <VAR>=<VALUE> # 設定註冊表變數
db2level # 顯示 DB2 版本/Service Level
db2licm -l # 列出授權
db2licm -a <license_file> # 安裝授權
db2dart /db <dbname> /action # 資料庫分析報告工具
db2ckbkp -h <backup_image> # 檢查備份影像完整性
db2ckrst -h <backup_image> # 檢查增量還原序列
db2relocatedb -f config_file # 重定位資料庫 (移動容器/日誌路徑)
db2rfpen -db <dbname> # 重置前滾暫停狀態
將本文存為離線速查表,遇到操作疑問即可快速檢索。記住:任何修改配置參數、備份還原、重組表等高風險操作前,必須先在測試環境驗證並備份。