表空間是 Oracle 邏輯儲存單元,合理規劃表空間 (永久/臨時/UNDO) 並為應用用戶指定專屬表空間,是效能隔離、空間管控、備份恢復粒度控制的基礎。本文以 Windows/Linux 通用語法,示範表空間建立/修改/刪除、用戶建立與表空間關聯、權限授予/回收全流程。
# Linux
mkdir -p /opt/oracle/oradata/cocis
chown oracle:oinstall /opt/oracle/oradata/cocis
# Windows
# 手動建立 D:\Oracle\oradata\cocis
⚠️ 若目錄不存在,
CREATE TABLESPACE會報ORA-01119/ORA-27040。
CREATE TABLESPACE histdb
DATAFILE 'D:\Oracle\product\10.2.0\oradata\orcl\histdb.dbf' -- 路徑含檔名
SIZE 200M
AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;
| 子句 | 說明 | 建議 |
|---|---|---|
| DATAFILE | 資料檔完整路徑 + 檔名 | 表空間名與檔名建議一致,便於辨識 |
| SIZE | 初始大小 | 視預估資料量,建議 100M-1G 起步 |
| AUTOEXTEND ON/OFF | 自動擴展開關 | 生產環境建議 ON |
| NEXT | 每次擴展增量 | 10M-100M,避免頻繁擴展碎片化 |
| MAXSIZE | 上限 (UNLIMITED 或具體值) | 受限於磁碟配額,建議設定具體上限 |
| EXTENT MANAGEMENT LOCAL | 區塊管理模式 (LOCAL/DICTIONARY) | 強制 LOCAL,效能優、無字典爭用 |
| SEGMENT SPACE MANAGEMENT AUTO | 段空間管理 (AUTO/MANUAL) | 強制 AUTO (ASSM),自動管理自由清單 |
-- 手動擴展/縮小資料檔
ALTER DATABASE DATAFILE '.../histdb.dbf' RESIZE 500M;
-- 開啟/關閉自動擴展
ALTER DATABASE DATAFILE '.../histdb.dbf' AUTOEXTEND ON/OFF;
DROP TABLESPACE histdb INCLUDING CONTENTS AND DATAFILES;
INCLUDING CONTENTS:刪除表空間內所有段 (表、索引等)。AND DATAFILES:同步刪除作業系統層面資料檔 (10g+ 支援)。INCLUDING CONTENTS,將報錯。
CREATE USER cocis IDENTIFIED BY cocis
DEFAULT TABLESPACE cocis
TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON cocis; -- 10g 可直接在 CREATE USER 給配額
SELECT username, default_tablespace, temporary_tablespace
FROM dba_users
WHERE username = 'COCIS';
GRANT CONNECT, RESOURCE TO cocis;
CONNECT:含 CREATE SESSION 等基本權限。RESOURCE:含 CREATE TABLE、CREATE SEQUENCE、CREATE PROCEDURE 等物件建立權限。RESOURCE 不再含 UNLIMITED TABLESPACE,需額外授予配額。
GRANT CREATE TABLE, CREATE VIEW, CREATE SEQUENCE, CREATE PROCEDURE TO cocis;
GRANT CREATE TRIGGER, CREATE TYPE, CREATE SYNONYM TO cocis;
-- 視業務需求增減
GRANT DBA TO cocis; -- 含所有系統權限,含 SHUTDOWN DATABASE
GRANT SYSDBA TO cocis; -- 需密碼檔驗證,極高風險
REVOKE UNLIMITED TABLESPACE FROM cocis;
ALTER USER cocis QUOTA UNLIMITED ON cocis;
-- 或限制大小
ALTER USER cocis QUOTA 10G ON cocis;
SELECT tablespace_name, max_bytes/1024/1024 AS max_mb, bytes/1024/1024 AS used_mb
FROM dba_ts_quotas
WHERE username = 'COCIS';
TBS_<應用>_<類型>,如 TBS_CRM_DATA、TBS_CRM_IDX、TBS_CRM_LOB。UNLIMITED TABLESPACE,按表空間授予配額,防止單一用戶佔滿磁碟。