| # | 場景 | 命令 / SQL | 關鍵參數說明 |
|---|---|---|---|
| 1 | 字串連接 | SELECT 'A' || 'B' FROM sysibm.sysdummy1 |
標準 SQL ||,非 + |
| 2 | 快速清空大表 | ALTER TABLE t ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE |
不寫日誌、瞬間完成,最快;次選 IMPORT FROM /dev/null OF DEL REPLACE INTO t |
| 3 | 導出 (IXF 含元資料) | db2 "EXPORT TO file.ixf OF IXF SELECT * FROM tab" |
IXF 支援 LOAD 重建索引/約束 |
| 4 | 導入 | db2 "IMPORT FROM file.ixf OF IXF INSERT INTO tab" |
寫日誌、觸發器生效,適合小量 |
| 5 | 檢查表存在 | SELECT * FROM sysibm.systables WHERE lower(name)='tab_name' |
不區分大小寫比對 |
| 6 | 鎖排查三步曲 | db2 "CONNECT TO db" |
找 Application Handle → FORCE APPLICATION(<handle>) |
| 7 | 建立存儲過程 (自定分隔符) | db2 -td@ -vf proc.sql |
@ 為分隔符,避免語句內 ; 衝突 |
| 8 | 檢查索引生效 (先 RUNSTATS) | RUNSTATS ON TABLE schema.tab WITH DISTRIBUTION AND DETAILED INDEXES ALL |
再看 EXPLAIN 或 db2expln |
| 9 | 全庫快照 | db2 "CONNECT TO db" |
開啟所有監控開關再抓 |
| 10 | 查看存儲過程原始碼 | SELECT procname, text FROM sysibm.sysprocedures |
|
| 11 | 列出所有表 | LIST TABLES 或 LIST TABLES FOR SCHEMA xxx |
|
| 12 | 字串搜尋位置 | LOCATE('y', 'xyz') → 2 |
1-based,0=未找到 |
| 13 | 日期相減天數 | DAYS(DATE('2007-03-01')) - DAYS(DATE('2007-02-28')) |
DAYS 從 0001-01-01 起算 |
| 14 | 跨 Schema 別名 | CREATE ALIAS my_alias FOR other_schema.tab |
應用端無感知跨 Schema |
| 15 | 檢視表結構 | DESCRIBE TABLE tab 或 DESCRIBE SELECT * FROM tab |
|
| 16 | 重啟資料庫 (崩潰恢復) | RESTART DATABASE db_name |
|
| 17 | 啟用資料庫 (預熱緩衝池) | ACTIVATE DATABASE db_name |
避免首次連線延遲 |
| 18 | 停用資料庫 | DEACTIVATE DATABASE db_name |
配合 ACTIVATE 管理資源 |
| 19 | 重命名表 | RENAME TABLE old_name TO new_name |
需獨佔存取 |
| 20 | 建立序列 | CREATE SEQUENCE seq_name START WITH 1 INCREMENT BY 1 NO MAXVALUE NO CYCLE CACHE 24 |
CACHE 提升高併發取號效能 |
| 21 | 查看索引詳細 | DESCRIBE INDEXES FOR TABLE tab SHOW DETAIL |
ALTER TABLE ... ACTIVATE NOT LOGGED INITIALLY → REORG INDEXES ALL FOR TABLE ... ALLOW WRITE ACCESS → RUNSTATS ...。db2 "FORCE APPLICATION ALL" (慎用)。GET SNAPSHOT 輸出檔案,配合腳本解析 Top SQL/鎖等待。這 21 條命令覆蓋日常運維 90% 場景。建議存為 db2_cheatsheet.sql,配合 db2 -tvf 批次執行。熟練掌握「導出/導入/載入三選一」、「鎖快照三步曲」、「ACTIVATE/RESTART 雙重啟動」、「序列/別名/重命名 DDL」,DB2 運維效率將質變。