表空間是 Oracle 邏輯儲存架構的核心單元。本文提供標準化的建立語法範本,涵蓋永久、暫存、UNDO 表空間,並說明自動擴展、區塊管理、大檔案等關鍵選項配置原則。
CREATE TEMPORARY TABLESPACE temp_data
TEMPFILE '/u01/oradata/ORCL/temp_data01.dbf'
SIZE 512M
AUTOEXTEND ON NEXT 256M MAXSIZE 8G
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M; -- 建議固定區塊大小減少碎片
關鍵點:TEMPFILE 不記錄重做日誌,啟動快;UNIFORM SIZE 避免大量小區塊分配競爭。
CREATE TABLESPACE app_data
DATAFILE '/u01/oradata/ORCL/app_data01.dbf'
SIZE 1G
AUTOEXTEND ON NEXT 512M MAXSIZE 32G
EXTENT MANAGEMENT LOCAL AUTOALLOCATE -- 系統自動決定區塊大小 (64K/1M/64M)
SEGMENT SPACE MANAGEMENT AUTO; -- ASSM,位圖管理自由空間,優於 FREELISTS
CREATE BIGFILE TABLESPACE dw_data
DATAFILE '/u02/oradata/ORCL/dw_data01.dbf'
SIZE 10T
AUTOEXTEND ON NEXT 100G MAXSIZE 128T
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO;
限制:單表空間僅一個資料檔,無法手動加檔案分散 I/O;備份/還原單元較大。
CREATE UNDO TABLESPACE undotbs2
DATAFILE '/u01/oradata/ORCL/undotbs02.dbf'
SIZE 2G
AUTOEXTEND ON NEXT 512M MAXSIZE 16G
EXTENT MANAGEMENT LOCAL
RETENTION GUARANTEE; -- 保證 UNDO 保留時間,防止 ORA-01555
啟用:ALTER SYSTEM SET UNDO_TABLESPACE = undotbs2 SCOPE=BOTH;
CREATE USER app_user IDENTIFIED BY "ComplexPass#2024"
DEFAULT TABLESPACE app_data
TEMPORARY TABLESPACE temp_data
QUOTA UNLIMITED ON app_data; -- 或指定額度 QUOTA 10G ON app_data
GRANT CREATE SESSION, CREATE TABLE, CREATE SEQUENCE, CREATE VIEW TO app_user;
-- 視需求授予 RESOURCE / DBA 等角色
| 子句 | 建議值 | 說明 |
|---|---|---|
| EXTENT MANAGEMENT | LOCAL | 字典管理已棄用,Local 使用位圖在檔案頭管理,效能極佳 |
| AUTOALLOCATE vs UNIFORM SIZE | 資料表空間用 AUTOALLOCATE;暫存/大批量載入用 UNIFORM SIZE 1M~16M | AUTOALLOCATE 自適應;UNIFORM 減少分配競爭 |
| SEGMENT SPACE MANAGEMENT | AUTO (ASSM) | 位圖管理自由列表,解決 High Water Mark 競爭,支援壓縮 |
| AUTOEXTEND | ON NEXT 256M~1G MAXSIZE UNLIMITED/具體上限 | 避免半夜空間不足掛起;MAXSIZE 防止單一失控撐爆磁碟 |
| LOGGING / NOLOGGING | 資料表空間 LOGGING;暫存/中繼表空間可 NOLOGGING | NOLOGGING 僅影響直路徑載入/建立索引,DML 仍產生重做 |
{ENV}_{APP}_{TYPE}_{SEQ},例:PRD_ERP_DATA_01、PRD_ERP_IDX_01、PRD_ERP_LOB_01。UNLIMITED QUOTA,按應用模組設定額度,防止失控寫入影響其他租戶。