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

Oracle 用戶表空間權限疑難雜症:跨表空間建表授權與 TABS 同義詞解析

     編輯:Oracle 資料庫基礎

問題場景

  • 用戶 A:預設表空間 A1,暫存表空間 A2。
  • 新建表空間 A3,需讓 A 能在 A3 建表。
  • 限制:不授予 CREATE ANY TABLE、不授 DBA 役。
  • 延伸問題:若 A3 換成 SYSTEM 表空間,方法是否仍有效?
  • 補充:TABS 是什麼?

解決方案:授予表空間配額

核心指令(以 SYS 執行):

-- 方案一:無限制配額
ALTER USER a QUOTA UNLIMITED ON a3;

-- 方案二:具體額度(建議)
ALTER USER a QUOTA 100M ON a3;

原理:用戶在表空間建立物件的前提是「系統權限 + 該表空間配額」。QUOTA 精確控制後者,無需提升系統權限。

延伸問題回答:換成 SYSTEM 表空間

同樣有效。ALTER USER a QUOTA 100M ON system; 即可。但強烈不建議在 SYSTEM 存放用戶資料,因:

  • 系統核心物件與用戶資料爭用 I/O、空間。
  • 用戶誤操作易導致系統表空間滿載,引發實例掛點。
  • 違反「系統與業務分離」架構原則。

補充知識:TABS 同義詞

SELECT * FROM dba_synonyms WHERE synonym_name = 'TABS';

結果顯示:TABS 是 USER_TABLES 的公用同義詞,Oracle 為簡化輸入而建立。查詢 SELECT * FROM tabs 等同於 SELECT * FROM user_tables,僅列出當前用戶擁有的表。

結語

跨表空間建表授權,核心在於 QUOTA 而非系統權限提升。善用配額實現精準授權,堅守系統/業務表空間分離,是穩健架構的基石。

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