CREATE TEMPORARY TABLESPACE test_temp
TEMPFILE 'E:\Oracle\product\10.2.0\oradata\testserver\test_temp01.dbf'
SIZE 32M
AUTOEXTEND ON NEXT 32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
CREATE TABLESPACE test_data
LOGGING
DATAFILE 'E:\Oracle\product\10.2.0\oradata\testserver\test_data01.dbf'
SIZE 32M
AUTOEXTEND ON NEXT 32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO;
CREATE USER username IDENTIFIED BY password
DEFAULT TABLESPACE test_data
TEMPORARY TABLESPACE test_temp
QUOTA UNLIMITED ON test_data
PASSWORD EXPIRE ACCOUNT UNLOCK;
GRANT CONNECT, RESOURCE TO username;
說明:CONNECT = CREATE SESSION,RESOURCE = CREATE TABLE/VIEW/SEQUENCE/PROCEDURE/TRIGGER/TYPE/SYNONYM/CLUSTER/INDEXTYPE/OPERATOR。生產環境建議改用精確授權 (參考 93476 文章)。
| 子句 | 必要性 | 說明 |
|---|---|---|
| TEMPFILE / DATAFILE | 必填 | 指定 OS 檔案路徑,建議使用 OMF (OMF啟用時可省略) |
| AUTOEXTEND ON | 建議 | 自動擴展避免 ORA-01652/01653,MAXSIZE 設上限防止佔滿磁碟 |
| EXTENT MANAGEMENT LOCAL | 必填 | LMT 為標準,Dictionary Managed 已棄用 |
| SEGMENT SPACE MANAGEMENT AUTO | 強烈建議 | ASSM 取代 freelists,減少高併發爭用 |
| QUOTA UNLIMITED | 建議 | 避免預設無配額導致無法建表,或指定具體配額 |
| PASSWORD EXPIRE | 安全最佳實踐 | 強制首次登入修改密碼 |
-- 確認表空間建立
SELECT tablespace_name, contents, extent_management, allocation_type, segment_space_management
FROM dba_tablespaces WHERE tablespace_name IN ('TEST_TEMP','TEST_DATA');
-- 確認用戶建立
SELECT username, default_tablespace, temporary_tablespace, account_status
FROM dba_users WHERE username = 'USERNAME';
-- 確認權限
SELECT * FROM dba_sys_privs WHERE grantee = 'USERNAME';
SELECT * FROM dba_role_privs WHERE grantee = 'USERNAME';
「表空間先行、用戶綁定、最小授權、驗證落地」四步驟標準化流程,可納入自動化部署管線 (Ansible/Terraform/Shell),確保環境一致性與合規性。