46. 快速清除大量資料表
-- 方法 1: ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE (最快,不寫日誌)
ALTER TABLE TBL ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE;
COMMIT;
-- 方法 2: 分批 DELETE 配合 NOT LOGGED INITIALLY
COMMIT;
ALTER TABLE AB ACTIVATE NOT LOGGED INITIALLY;
DELETE FROM AB WHERE ID > 1000;
COMMIT;
-- 建表時指定不記錄日誌
CREATE TABLE AB (ID INT) NOT LOGGED INITIALLY;
- 注意:
NOT LOGGED INITIALLY 僅對啟用後的第一個單位工作 (UOW) 有效,之後自動恢復記錄日誌。
- 大量刪除建議分批 Commit,避免日誌爆滿與鎖升級。
47-50. 目錄查詢:套件、SP、約束
| 查詢 | SQL |
| 資料庫套件 | SELECT * FROM SYSCAT.PACKAGES |
| 儲存程序 | SELECT * FROM SYSCAT.PROCEDURES |
| 表 CHECK 約束 | SELECT * FROM SYSCAT.CHECKS WHERE TABNAME='AAAA' |
| 表參考完整性 (FK) | SELECT * FROM SYSCAT.REFERENCES WHERE TABNAME='AAAA' |
51-52. 預設實例與帳號
| 平台 | 預設實例 | 預設帳號 |
| Windows/OS/2 | DB2 | DB2ADMIN |
| Linux/UNIX | DB2INST1 | DB2AS |
53. 實例類型
- CLIENT (用戶端)
- STANDALONE (獨立)
- SATELLITE (衛星)
- EEDB2 / EEE (企業擴充/平行版)
54-58. 實例生命週期管理
DB2ICRT INSTANCE_NAME -- 建立
DB2ILIST -- 列出所有實例
GET INSTANCE -- 目前實例
DB2IUPDT INSTANCE_NAME -- 更新實例 (套用修正包)
DB2IDROP INSTANCE_NAME -- 刪除實例
-- 刪除實例完整步驟:
1. FORCE APPLICATION ALL
2. 所有 CLP 執行 DB2 TERMINATE
3. DB2STOP
4. 備份 DB2INSTPROF 指向的實例目錄
5. 登出實例所有使用者
6. DB2IDROP INSTANCE_NAME
59-63. 授權管理 (DB2LICM)
| 操作 | 指令 |
| 列出已授權產品 | DB2LICM -L |
| 新增授權檔 | DB2LICM -A FILENAME |
| 移除產品授權 | DB2LICM -R PRODUCT_PASSWORD |
| 更新購買授權數 | DB2LICM -U |
| 強制執行硬性授權 (超量拒絕連線) | DB2LICM -E HARD |
64-67. 授權策略與處理器數
DB2LICM -P REGISTERED|CONCURRENT -- 設定授權模式
DB2LICM -N NUM_CPUS -- 更新處理器數量
DB2LICM -V -- 查詢授權檔版本資訊
DB2LICM -H -- 說明
68-69. 表空間基礎
- 資料庫至少包含:1 個目錄表空間 + 1+ 個使用者表空間 + 1+ 個暫存表空間。
- 管理模式:SMS (系統管理) / DMS (資料庫管理)。
70-78. 資料庫生命週期指令
| 操作 | 指令 |
| 列出系統資料庫目錄 | LIST DATABASE DIRECTORY |
| 建立資料庫 (系統命令,非 SQL) | CREATE DATABASE ... |
| 查看資料庫配置 | GET DATABASE CONFIGURATION FOR ABC |
| 重設資料庫配置為預設值 | RESET DATABASE CONFIGURATION FOR ABC |
| 修改資料庫配置 | UPDATE DATABASE CONFIGURATION FOR ABC USING PARM VALUE |
| 重新啟動資料庫 (異常恢復) | RESTART DATABASE DB_NAME |
| 啟用資料庫 (預先載入記憶體) | ACTIVATE DATABASE DB_NAME |
| 停用資料庫 | DEACTIVATE DATABASE DB_NAME |
| 刪除資料庫 | DROP DATABASE DB_NAME |
79-90. Schema、表、Sequence、時間
CREATE SCHEMA SCHEMA_NAME
SET SCHEMA = SCHEMA_NAME
-- 表類型: 基本表/結果表/概要表/類型表/子表/宣告暫存表/系統暫存表
CREATE SEQUENCE ORDER_SEQ START WITH 1 INCREMENT BY 1 NO MAXVALUE NO CYCLE CACHE 24
SET INTEGRITY TABLE_NAME OFF -- 檢查暫掛
LOCK TABLE TABLE_NAME IN EXCLUSIVE MODE -- 排他鎖
SET INTEGRITY FOR TABLE_NAME ALL IMMEDIATE UNCHECKED -- 解除檢查暫掛
COMMIT -- 釋放鎖
ALTER TABLE TABLE_NAME ACTIVATE NOT LOGGED INITIALLY -- 關閉日誌 (單次 UOW)
DROP TABLE SCHEMA.TABLE_NAME
RENAME TABLE OLD TO NEW
SELECT CURRENT TIMESTAMP FROM SYSIBM.SYSDUMMY1
- 上一篇文章: IBM DB2 日常維護匯總 (三) - 目錄視圖查詢與物件管理
- 下一篇文章: IBM DB2 日常維護匯總 (五) - 監控、事件監控器與資料移動
Copyright ©
程式碼之家 All Rights Reserved