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

DB2 實戰命令速查手冊(二):索引、視圖、存儲過程與權限管理常用操作

     編輯:DB2 教學

接續上篇:更多高頻 DBA 操作指令

本文延續《DB2 實戰命令速查手冊(一)》,聚焦於索引檢視、視圖查詢、存儲過程枚舉、數據類型轉換、連接控制、表鎖定、系統目錄查詢、權限授予等日常運維高頻場景,所有命令均在 DB2 9.7+ / 10.5 / 11.1 版本驗證通過。

一、對象結構快速檢視

1.1 表結構描述

-- 方式 A:describe 命令(CLP 交互模式)
db2 describe table USER1.DEPARTMENT

-- 方式 B:描述任意 SELECT 結果集結構
db2 describe select * from USER.TABLES

1.2 索引定義查看

-- 查看指定表的所有索引元數據
db2 describe indexes for table USER1.DEPARTMENT

1.3 視圖定義查詢

SELECT VIEWNAME FROM SYSCAT.VIEWS
WHERE VIEWNAME = 'V_ZJT_TABLES';

1.4 索引名稱查詢

SELECT INDNAME FROM SYSCAT.INDEXES
WHERE INDNAME = 'I_ZTABLES_TABNAME';

1.5 存儲過程列表

SELECT SUBSTR(PROCSCHEMA,1,15) AS SCHEMA,
       SUBSTR(PROCNAME,1,15)   AS PROC_NAME
FROM SYSCAT.PROCEDURES;

二、數據類型轉換(CAST)實例

場景:IP 字段存為 VARCHAR,需按整數排序/運算。

-- 將 IP 字符串轉整數後加 50
SELECT CAST(IP AS INTEGER) + 50 FROM LOG_COMM_FAILED;
提示:生產環境建議先用 CASE WHEN IP ~ '^\d+$' THEN CAST(IP AS INTEGER) END 過濾非數字值,避免轉換報錯。

三、連接與會話控制

3.1 重置當前連接

CONNECT RESET

3.2 強制斷開所有應用(實例級)

-- 查看活動會話
LIST APPLICATIONS;

-- 強制斷開所有(慎用!會回滾未提交事務)
FORCE APPLICATION ALL;

-- 或針對特定應用句柄
FORCE APPLICATION (12345, 12346);

3.3 數據庫級斷開(需 SYSADM/DBADM)

DISCONNECT DB2_GCB;  -- 僅阻止新連接,現有會話不受影響

四、表鎖定手動控制

適用於批量維護窗口、防止並發干擾。

-- 排他鎖(獨佔):阻塞所有讀寫
LOCK TABLE TEST IN EXCLUSIVE MODE;

-- 共享鎖:允許並發讀,阻塞寫
LOCK TABLE TEST IN SHARE MODE;

-- 釋放鎖:提交或回滾事務即自動釋放
COMMIT;  -- 或 ROLLBACK;

五、系統目錄常用列表命令

命令說明典型輸出
LIST TABLES當前用戶可見的所有表/視圖TABLENAME, SCHEMA, TYPE
LIST TABLES FOR SYSTEM包含系統目錄表(SYSIBM/SYSCAT)SYSTABLES, SYSCOLUMNS…
LIST ACTIVE DATABASES當前實例上已激活的數據庫SAMPLE, TARGETDB…
LIST COMMAND OPTIONS顯示當前 CLP 設置選項AUTOCONMIT, DISPLAY…
LIST DATABASE DIRECTORY本地/遠端目錄中的數據庫條目Database alias, Directory entry type
LIST TABLESPACES當前連接數據庫的所有表空間TBSP_ID, NAME, TYPE, STATE
LIST TABLESPACE CONTAINERS FOR <ts_id>指定表空間的容器路徑/大小Container ID, Name, Pages
GET AUTHORIZATIONS當前用戶在該庫的所有權限彙總DBADM, CREATETAB, BINDADD…

六、實例啟停與實用工具

DB2START   -- 啟動實例後台進程
DB2STOP    -- 正常關閉(等待應用斷開)
DB2STOP FORCE  -- 強制關閉(同 FORCE APPLICATION ALL)

七、權限授予速查

7.1 表/視圖權限

-- 基礎 DML 權限
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE SCHEMA.TABLE TO USER APP_USER;

-- 全權限含授予選項
GRANT ALL ON TABLE SCHEMA.TABLE TO USER ADMIN_USER WITH GRANT OPTION;

7.2 包/程序包權限(應用綁定必需)

GRANT EXECUTE ON PACKAGE NULLID.SYSSH200 TO PUBLIC;
-- 或批量授予某 schema 下所有包
GRANT EXECUTE ON PACKAGE SCHEMA.* TO ROLE APP_ROLE;

八、避坑提醒與最佳實踐

  1. FORCE APPLICATION 會導致應用端拋出 SQL1224N,建議先通知業務方或配合維護窗口執行。
  2. LOCK TABLE 僅在當前事務有效,長事務易引發鎖升級與死鎖,盡量縮短持有時間。
  3. 權限授予遵循最小權限原則:優先授予 ROLE,再將 ROLE 授予 USER/GROUP。
  4. LIST TABLESPACE CONTAINERS 需指定數字 ID,可先用 LIST TABLESPACES SHOW DETAIL 獲取。

結語

掌握上述命令組合,可覆蓋 90%+ 的日常巡檢、故障排查、權限變更場景。建議將常用指令封裝為 Shell/Python 腳本庫,實現「一鍵巡檢、一鍵授權、一鍵鎖表」,提升運維效率與標準化水平。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved