DB2 系統目錄與物件管理查詢速查
掌握 SYSIBM/SYSCAT 系統目錄視圖,快速取得版本、表、視圖、觸發器、序列、表空間、序列、綱要、索引、欄位、資料類型、緩衝池、套件、預存程序、約束等中繼資料。
常用系統目錄查詢
| 查詢目標 | SQL 範例 |
| 用戶擁有表數 | SELECT * FROM SYSIBM.SYSTABLES WHERE CREATOR='USER' |
| 用戶函數 | SELECT * FROM SYSIBM.SYSFUNCTIONS |
| 用戶視圖 | SELECT * FROM SYSIBM.SYSVIEWS WHERE CREATOR='USER' |
| DB2 版本 | SELECT * FROM SYSIBM.SYSVERSIONS |
| 觸發器 | SELECT * FROM SYSIBM.SYSTRIGGERS WHERE SCHEMA='USER' |
| 表空間狀態 | SELECT * FROM SYSIBM.SYSTABLESPACES |
| 序列狀態 | SELECT * FROM SYSIBM.SYSSEQUENCES |
| 綱要狀態 | SELECT * FROM SYSIBM.SYSSCHEMATA |
| 索引狀態 | SELECT * FROM SYSIBM.SYSINDEXES |
| 表欄位定義 | SELECT * FROM SYSIBM.SYSCOLUMNS WHERE TBNAME='AAAA' |
| 資料類型 | SELECT * FROM SYSIBM.SYSDATATYPES |
| 緩衝池 | SELECT * FROM SYSIBM.SYSBUFFERPOOLS |
表欄位修改限制
僅能修改 VARCHAR 型別,且只能增加長度,不能縮減。
檢視表結構
DESCRIBE TABLE TABLE_NAME
-- 或
DESCRIBE SELECT * FROM SCHEMA.TABLE_NAME
快速清空大表 (不記錄日誌)
ALTER TABLE TABLE_NAME ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE
COMMIT
-- 後續 DELETE 亦不記日誌
ALTER TABLE AB ACTIVATE NOT LOGGED INITIALLY
DELETE FROM AB WHERE ID > 1000
COMMIT
-- 建表時指定不記日誌
CREATE TABLE AB (ID INT) NOT LOGGED INITIALLY
套件、預存程序、約束查詢
| 目標 | 查詢 |
| 套件 | SELECT * FROM SYSCAT.PACKAGES |
| 預存程序 | SELECT * FROM SYSCAT.PROCEDURES |
| 檢查約束 | SELECT * FROM SYSCAT.CHECKS WHERE TABNAME='AAAA' |
| 參考完整性約束 | SELECT * FROM SYSCAT.REFERENCES WHERE TABNAME='AAAA' |
實例與授權管理
- 預設實例名:Windows/OS2
DB2,Linux/UNIX DB2INST1
- 預設管理帳戶:Windows/OS2
DB2ADMIN,Linux/UNIX DB2AS
- 實例類型:CLIENT, STANDALONE, SATELLITE, EEDB2, EEE
- 建立實例:
db2icrt INSTNAME
- 列出實例:
db2ilist
- 查看當前實例:
GET INSTANCE
- 更新實例:
db2iupdt
- 刪除實例完整步驟:停止應用 → db2terminate → db2stop → 備份實例目錄 → 登出所有使用者 →
db2idrop INSTANCE_NAME
授權指令 (db2licm)
| 操作 | 指令 |
| 列出授權產品 | db2licm -l |
| 新增授權 | db2licm -a FILENAME |
| 移除授權 | db2licm -r PRODUCT_PASSWORD |
| 更新購買數量 | db2licm -u |
| 強制使用已購數量 | db2licm -e HARD |
| 更新授權政策 | db2licm -p REGISTERED|CONCURRENT |
| 更新處理器數 | db2licm -n |
| 查詢授權版本 | db2licm -v |
| 說明 | db2licm -h |