在 DB2 資料庫管理中,別名(Alias)能為資料表、視圖或別名本身提供替代名稱,簡化 SQL 陳述式並隱藏底層結構。本文整理建立別名的語法,並彙整從建立資料表、插入資料、觸發器到索引管理等實務常用指令,供 DBA 與開發人員快速查閱。
一、建立別名
別名屬於 Schema 物件,建立時需指定目標物件與別名名稱:
CREATE ALIAS DB2ADMIN.TABLES FOR SYSCAT.TABLES;
CREATE ALIAS DB2ADMIN.VIEWS FOR SYSCAT.VIEWS;
CREATE ALIAS DB2ADMIN.COLUMNS FOR SYSCAT.COLUMNS;
CREATE ALIAS GUEST.COLUMNS FOR SYSCAT.COLUMNS;
二、依系統目錄建立資料表(Definition Only)
利用 CREATE TABLE ... AS (SELECT ...) DEFINITION ONLY 僅複製結構,不複製資料:
CREATE TABLE ZJT_TABLES AS (SELECT * FROM TABLES) DEFINITION ONLY;
CREATE TABLE ZJT_VIEWS AS (SELECT * FROM VIEWS) DEFINITION ONLY;
三、插入資料
INSERT INTO ZJT_TABLES SELECT * FROM TABLES;
INSERT INTO ZJT_VIEWS SELECT * FROM VIEWS;
四、建立視圖
CREATE VIEW V_ZJT_TABLES AS SELECT TABSCHEMA, TABNAME FROM ZJT_TABLES;
五、建立觸發器
範例:刪除 ZJT_TABLES 時,將舊值的 Schema 與 Table 名稱擷取前 8/10 碼寫入稽核表。
CREATE TRIGGER ZJT_TABLES_DEL
AFTER DELETE ON ZJT_TABLES
REFERENCING OLD AS O
FOR EACH ROW MODE DB2SQL
INSERT INTO ZJT_TABLES1 VALUES(SUBSTR(O.TABSCHEMA,1,8), SUBSTR(O.TABNAME,1,10));
六、建立唯一索引
CREATE UNIQUE INDEX I_ZTABLES_TABNAME ON ZJT_TABLES(TABNAME);
七、常用查詢指令
- 查詢資料表:
SELECT TABNAME FROM TABLES WHERE TABNAME='ZJT_TABLES';
- 查詢欄位定義:
SELECT SUBSTR(COLNAME,1,20) AS 欄位名, TYPENAME AS 型態, LENGTH AS 長度 FROM COLUMNS WHERE TABNAME='ZJT_TABLES';
- Describe 指令:
DESCRIBE TABLE USER1.DEPARTMENT / DESCRIBE SELECT * FROM USER.TABLES
- 查詢索引:
SELECT INDNAME FROM INDEXES WHERE INDNAME='I_ZTABLES_TABNAME';
- 查詢預存程序:
SELECT SUBSTR(PROCSCHEMA,1,15), SUBSTR(PROCNAME,1,15) FROM SYSCAT.PROCEDURES;
八、型別轉換 (CAST)
SELECT CAST(IP AS INTEGER) + 50 FROM LOG_COMM_FAILED;
九、連線控制指令
| 指令 | 說明 |
| CONNECT RESET | 重新連線 |
| DISCONNECT DB2_GCB | 中斷指定資料庫連線 |
| LIST APPLICATION | 檢視應用程式連線 |
| FORCE APPLICATION(0) | 強制中斷指定應用程式 |
| FORCE APPLICATIONS ALL | 強制中斷所有應用程式 |
十、鎖表模式
LOCK TABLE TEST IN EXCLUSIVE MODE; -- 排他鎖
LOCK TABLE TEST IN SHARE MODE; -- 共享鎖
十一、系統管理常用 CLP 指令
LIST TABLES / LIST TABLES FOR SYSTEM:列出使用者/系統資料表
LIST ACTIVE DATABASES:顯示作用中資料庫
LIST COMMAND OPTIONS:查看指令選項
LIST DATABASE DIRECTORY:系統資料庫目錄
LIST TABLESPACES / LIST TABLESPACE CONTAINERS FOR <id>:表空間與容器
GET AUTHORIZATIONS:顯示存取權限
十二、DB2 核心工具簡介

- db2start / db2stop:啟動/停止實例(非單一資料庫)
- db2look:產生 DDL 與統計資訊,利於重建物件
- db2move:跨資料庫移動大量資料
- BACKUP / RESTORE:備份與還原(需相同作業系統)
- IMPORT / LOAD:匯入資料;LOAD 效能佳但不記錄 Log,無法前滾復原
- RUNSTATS:更新系統目錄統計資訊
十三、記憶體架構重點
DB2 將記憶體劃分為四大集合:
- 實例共享記憶體:
db2start 時配置,db2stop 釋放;含監視器堆、稽核緩衝、FCM 緩衝。
- 資料庫共享記憶體:資料庫啟動/首次連線時配置;含緩衝池、鎖清單、套裝快取等。
- 應用程式群組共享記憶體:多工環境下共享排序、臨時表等。
- 代理私有記憶體:每個代理程式專用;含排序堆、應用程式堆等。
關鍵參數 INSTANCE_MEMORY 預設 AUTOMATIC,建議保持預設以利溢位緩衝;透過 db2mtrk -i -v 可觀察實際使用量。

主緩衝池為資料庫共享記憶體最大塊區,可透過 EXTENDED STORAGE 擴展;隱藏緩衝池(4K/8K/16K/32K)確保主緩衝池過大導致無法啟動時,仍能用小緩衝池啟動資料庫並調整大小。
十四、實例與資料庫全生命週期指令速查
-- 實例
db2start / db2stop / db2ilist / db2 get instance
db2 get dbm cfg | more
db2 update dbm cfg using PARA_NAME PARA_VALUE
-- 資料庫
db2 create db TEST
db2 get db cfg for TEST | more
db2 update db cfg for TEST using PARA_NAME PARA_VALUE
db2 drop db TEST
db2 connect to TEST
-- 物件操作
db2 list tablespaces show detail
db2 select * from TB1
db2 delete from TB1 where ID=1
db2 create index IDX1 on TB1(ID)
db2 create view VIEW1 as select ID from TB1
-- 節點/資料庫編目
db2 catalog tcpip node NODE_NAME remote SERVER_IP server PORT
db2 catalog db DB_NAME as ALIAS at node NODE_NAME
db2 connect to ALIAS user USER_NAME using PASSWORD
-- 資料移動
db2 export to MYFILE of ixf messages MSG select * from TB1
db2 import from MYFILE of ixf messages MSG replace into TB1
db2move TEST export
db2look -d ALIAS -a -e -m -l -x -f -o db2look.sql
db2move ALIAS import
-- 維護
db2 reorgchk / db2 reorg table TB1
db2 runstats on table TB1
db2 backup db TEST / db2 restore db TEST
十五、DB2 9 安裝四大方式
- 安裝精靈 (GUI):Linux/Unix/Windows 圖形化導引,適合初學者,可簡化安裝後調優。
- db2_install 腳本:僅 Linux/Unix,控制細緻但無法建立使用者、實例與安裝後設定。
- 回應檔安裝:文字檔記錄安裝參數,利於大量部署;可由精靈產生、修改範例檔或
db2cfexp 匯出既有設定。
- 純手動安裝:需解近 970 子套件,僅建議資深專家使用。
- 上一篇文章: DB2 發展大事記:從 IMS 層次庫到 Viper 範圍分區的 50 年演進
- 下一篇文章: DB2 資料移動實戰(二):IMPORT 匯入完整指南
Copyright ©
程式碼之家 All Rights Reserved