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 精確控制後者,無需提升系統權限。
同樣有效。ALTER USER a QUOTA 100M ON system; 即可。但強烈不建議在 SYSTEM 存放用戶資料,因:
SELECT * FROM dba_synonyms WHERE synonym_name = 'TABS';
結果顯示:TABS 是 USER_TABLES 的公用同義詞,Oracle 為簡化輸入而建立。查詢 SELECT * FROM tabs 等同於 SELECT * FROM user_tables,僅列出當前用戶擁有的表。
跨表空間建表授權,核心在於 QUOTA 而非系統權限提升。善用配額實現精準授權,堅守系統/業務表空間分離,是穩健架構的基石。