DB2 中「Schema」對應 Oracle 的「User/Schema」,物件 (表、視圖、索引…) 皆歸屬於某個 Schema。本文整理查看當前 Schema、切換 Schema、切換連線使用者、授權與查詢權限的常用指令,供日常操作快速參考。
db2 connect to study
-- 方式 1 (標準)
SELECT CURRENT SCHEMA FROM SYSIBM.SYSDUMMY1;
-- 方式 2 (相容 Oracle DUAL)
SELECT CURRENT SCHEMA FROM SYSIBM.DUAL;
回傳值即為當前 Session 的隱性 Schema (未指定 Schema 時物件解析的預設值)。
SET CURRENT SCHEMA = toms;
-- 或
SET SCHEMA toms;
僅影響目前連線,不改變資料庫層面的物件歸屬。
db2 connect to cpsdb user administrator using 111111
以新使用者身分建立新連線,舊連線自動中斷。
db2 grant dbadm on database to user odsuser
db2 get authorizations
輸出包含:直接授予權限、透過群組/角色繼承權限、PUBLIC 權限等。
| 操作 | 指令 |
|---|---|
| 建立 Schema | db2 "CREATE SCHEMA auth AUTHORIZATION dba" |
| 刪除 Schema 及其物件 | db2 "DROP SCHEMA auth RESTRICT" (需無物件) 或 CASCADE |
| 列出所有 Schema | db2 "SELECT SCHEMANAME FROM SYSCAT.SCHEMATA" |
| 將物件移轉至其他 Schema | db2 "RENAME TABLE old_schema.tab TO new_schema.tab" |
| 設定隱性 Schema (Session 級) | SET CURRENT SCHEMA = new_schema |
熟記上述指令可大幅提升 DB2 日常開發/運維效率。特別注意:SET CURRENT SCHEMA 僅為「解析捷徑」,不改變物件擁有者;真正的權限控管仍需透過 GRANT/REVOKE 於資料庫層面設定。