在論壇答疑多年,發現許多開發者、DBA 因缺乏「隨手查」的技巧清單,頻繁中斷思路去翻文檔。本文將 32 個高頻實戰技巧按場景分類整理,涵蓋節點/資料庫編目、連接測試、Schema 管理、編碼頁、版本遷移、DDL/數據導出入、大表清理、系統監控、鎖分析、效能測試等核心場景,助您提效減負。
db2 list node directory
db2 catalog tcpip node <node_name> remote <host/IP> server <port> remote_instance <inst_name> ostype <OS_type>
db2 uncatalog node <node_name>
db2 list database directory
db2 list database directory on <drive/path>
系統目錄有而本地目錄無的資料庫無法訪問,可在控制中心右鍵「添加」或「刷新」掛載。
db2 catalog database <db_name> as <alias> at node <node_name>
db2 uncatalog database <alias>
db2 connect to <db_alias> user <user> using <pwd>
set current schema = <schema_name>
初始值為當前會話用戶授權 ID。可互動或嵌入應用程式使用;若包用 DYNAMICRULES BIND 則無效。不受事務控制。
建庫時指定:
create database <db> using codeset <codeset> territory <territory>
-- 例:create database dbtest using codeset IBM-437 territory US
實例級環境變數(Windows):
DB2CODEPAGE=1386 (或 437)
-- 或命令行:db2set DB2CODEPAGE=1386 需重啟實例
-- 低版本備份 → 高版本恢復 → 執行
db2 migrate database <db_name>
-- CLP
db2 "select * from \"schema\".\"table\""
-- 互動模式
db2 => select * from "schema"."table"
db2look -d <db> -e -c -o <file.sql>
db2 -tvf <script.sql>
導入 Sybase 等 Tab 分隔文本:
db2 import from <file.txt> of del modified by coldel0x09 insert into <table>
select * from sysibm.sysversions
僅支援 VARCHAR 增長:
alter table <tab> alter column <col> set data type varchar(<new_size>)
describe table <tab>
-- 或
describe select * from <schema>.<tab>
alter table <tab> activate not logged initially with empty table
-- 替代方案
import from /dev/null of del replace into <tab>
select * from syscat.procedures
select * from syscat.checks where tabname = '<TAB>'
select * from syscat.references where tabname = '<TAB>'
select * from syscat.bufferpools
# 實例級
db2 get dbm cfg
db2 update dbm cfg using <param> <value>
# 資料庫級
db2 get db cfg for <db>
db2 update db cfg for <db> using <param> <value>
# 新增
create bufferpool <bpname> size <pages> [pagesize 4096] [not] extended storage
# 修改大小
alter bufferpool <bpname> size <pages> [not] extended storage
# 刪除
drop bufferpool <bpname>
size=-1 時由 buffpage 參數決定;buffpage 僅對 size=-1 的緩衝池生效。
select * from <schema>.<tab>
where (colA, colB, colC) [not] in
(values (vA1,vB1,vC1), (vA2,vB2,vC2), ... (vAn,vBn,vCn))
db2 list applications [show detail]
db2dart <db> /DB
db2batch -d <db> -f <sql_file> [-a user/pwd] [-r <result_file>]
export to <file.ixf> of ixf select * from <tab>
import from <file.ixf> of ixf [create into | insert into | replace into | update] <tab>
select * from table(snapshot_lock('<db>', -1)) as lock
| 選項 | 功能 | 預設 |
|---|---|---|
| -a | 顯示 SQLCA | OFF |
| -c | 自動提交 | ON |
| -e | 顯示 SQLCODE/SQLSTATE | OFF |
| -f | 從檔案讀取輸入 | OFF |
| -o | 顯示輸出 | ON |
| -p | 顯示互動提示 | ON |
| -r | 輸出保存到報告檔 | OFF |
| -s | 出錯停止執行 | OFF |
| -t | 設定終止字符 | OFF |
| -v | 回送當前命令 | OFF |
| -w | 顯示 FETCH/SELECT 警告 | ON |
| -x | 不列印欄位標題 | OFF |
| -z | 所有輸出保存到檔案 | OFF |
收藏本文,下次遇到「怎麼查鎖?怎麼清大表?怎麼改編碼頁?」直接 Ctrl+F 解決,專注核心業務邏輯。