首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2 別名建立與常用操作指令全攻略

     編輯:DB2 教學

在 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;

九、連線控制指令

十、鎖表模式

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 核心工具簡介

DB2 記憶體結構

  • db2start / db2stop:啟動/停止實例(非單一資料庫)
  • db2look:產生 DDL 與統計資訊,利於重建物件
  • db2move:跨資料庫移動大量資料
  • BACKUP / RESTORE:備份與還原(需相同作業系統)
  • IMPORT / LOAD:匯入資料;LOAD 效能佳但不記錄 Log,無法前滾復原
  • RUNSTATS:更新系統目錄統計資訊

十三、記憶體架構重點

DB2 將記憶體劃分為四大集合:

  1. 實例共享記憶體:db2start 時配置,db2stop 釋放;含監視器堆、稽核緩衝、FCM 緩衝。
  2. 資料庫共享記憶體:資料庫啟動/首次連線時配置;含緩衝池、鎖清單、套裝快取等。
  3. 應用程式群組共享記憶體:多工環境下共享排序、臨時表等。
  4. 代理私有記憶體:每個代理程式專用;含排序堆、應用程式堆等。

關鍵參數 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 安裝四大方式

  1. 安裝精靈 (GUI):Linux/Unix/Windows 圖形化導引,適合初學者,可簡化安裝後調優。
  2. db2_install 腳本:僅 Linux/Unix,控制細緻但無法建立使用者、實例與安裝後設定。
  3. 回應檔安裝:文字檔記錄安裝參數,利於大量部署;可由精靈產生、修改範例檔或 db2cfexp 匯出既有設定。
  4. 純手動安裝:需解近 970 子套件,僅建議資深專家使用。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
指令說明
CONNECT RESET重新連線
DISCONNECT DB2_GCB中斷指定資料庫連線
LIST APPLICATION檢視應用程式連線
FORCE APPLICATION(0)強制中斷指定應用程式
FORCE APPLICATIONS ALL強制中斷所有應用程式