Oracle 採「單資料庫、多表空間、多使用者」架構,各表空間物理隔離,使用者綁定預設/暫存表空間。本文提供生產環境可直接套用的標準 DDL 模板與權限最小化原則。
CREATE TABLESPACE pfm
DATAFILE 'D:\oracle\oradata\orcl\pfm.dbf'
SIZE 100M
AUTOEXTEND ON NEXT 32M MAXSIZE 200M
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;
LOCAL 區塊管理:位圖追蹤,無字典競爭。AUTO 區段空間管理:自動管理 freelist,高併發優勢。CREATE TEMPORARY TABLESPACE pfm_temp
TEMPFILE 'D:\oracle\oradata\orcl\pfm_temp.dbf'
SIZE 100M
AUTOEXTEND ON NEXT 32M MAXSIZE 200M
EXTENT MANAGEMENT LOCAL;
專供排序、雜湊、全域暫存表使用,避免佔用永久表空間。
CREATE USER app_user
IDENTIFIED BY "StrongP@ssw0rd"
DEFAULT TABLESPACE pfm
TEMPORARY TABLESPACE pfm_temp
QUOTA UNLIMITED ON pfm; -- 或指定具體額度
QUOTA 限制使用者在表空間最大用量,防止單一失控佔滿空間。GRANT QUOTA ON other_ts TO app_user。DBA 擁有系統級特權,RESOURCE 含 UNLIMITED TABLESPACE,違反最小權限。
-- 1. 建立應用專屬角色
CREATE ROLE app_read_write;
-- 2. 授予物件權限(由 DBA 或擁有者執行)
GRANT SELECT, INSERT, UPDATE, DELETE ON schema_a.table_x TO app_read_write;
-- 或授予全部表(謹慎)
GRANT SELECT, INSERT, UPDATE, DELETE ON schema_a.* TO app_read_write; -- 12c+ 支援
-- 3. 授予系統權限(僅必要者)
GRANT CREATE SESSION, CREATE TABLE, CREATE SEQUENCE, CREATE VIEW, CREATE PROCEDURE TO app_read_write;
-- 4. 將角色授予使用者
GRANT app_read_write TO app_user;
| 操作 | 指令 |
|---|---|
| 修改使用者預設表空間 | ALTER USER app_user DEFAULT TABLESPACE new_ts; |
| 修改使用者暫存表空間 | ALTER USER app_user TEMPORARY TABLESPACE new_temp; |
| 調整表空間配額 | ALTER USER app_user QUOTA 500M ON pfm; |
| 鎖定/解鎖帳號 | ALTER USER app_user ACCOUNT LOCK / UNLOCK; |
| 密碼過期強制重設 | ALTER USER app_user PASSWORD EXPIRE; |
| 監控表空間使用率 | SELECT tablespace_name, ROUND(used_space*block_size/1024/1024) MB_USED FROM dba_tablespace_usage_metrics; |
「表空間隔離、使用者綁定、角色授權、配額限制」四步走,建立安全、可控、易維護的 Oracle 權限體系。拒絕 DBA 大權旁落,從建帳號那一刻開始踐行最小權限。