Oracle 安裝完成後會建立預設資料庫,但實際應用通常需建立專屬使用者與表空間,隔離資料、控制配額、便於備份恢復。本文說明兩種常見建立模式:自訂表空間與使用預設表空間。
CREATE TABLESPACE app_data
DATAFILE '/u01/app/oracle/oradata/app_data01.dbf' SIZE 500M
AUTOEXTEND ON NEXT 100M MAXSIZE 10G
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K
SEGMENT SPACE MANAGEMENT AUTO;
CREATE TEMPORARY TABLESPACE app_temp
TEMPFILE '/u01/app/oracle/oradata/app_temp01.dbf' SIZE 200M
AUTOEXTEND ON NEXT 50M MAXSIZE 5G
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
CREATE USER app_user IDENTIFIED BY "Str0ngP@ssw0rd"
DEFAULT TABLESPACE app_data
TEMPORARY TABLESPACE app_temp
PROFILE DEFAULT
ACCOUNT UNLOCK;
-- 基本連線與建表權限
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SEQUENCE, CREATE PROCEDURE TO app_user;
-- 表空間配額 (若不給 UNLIMITED TABLESPACE)
ALTER USER app_user QUOTA UNLIMITED ON app_data;
-- 進階權限 (視需求)
-- GRANT CREATE TRIGGER, CREATE TYPE, CREATE SYNONYM TO app_user;
-- GRANT SELECT ANY TABLE, INSERT ANY TABLE TO app_user; -- 謹慎授予
-- 使用資料庫預設的 USERS (永久) 和 TEMP (暫存) 表空間
CREATE USER dev_user IDENTIFIED BY dev123
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
ACCOUNT UNLOCK;
GRANT CONNECT, RESOURCE TO dev_user;
-- CONNECT = CREATE SESSION
-- RESOURCE = CREATE TABLE, VIEW, SEQUENCE, PROCEDURE, TRIGGER, TYPE, SYNONYM 等
-- 若需 DBA 權限 (僅限開發/測試)
-- GRANT DBA TO dev_user;
| 物件 | 用途 | 建議命名 |
|---|---|---|
| 永久表空間 | 儲存表、索引等持久物件 | app_data, idx_data, hist_data |
| 暫存表空間 | 排序、雜湊、全域暫存表 | app_temp |
| UNDO 表空間 | 交易回滾、讀取一致性 | undotbs1 (通常由 DBCA 建立) |
| 使用者 | Schema 擁有者 | app_user, app_readonly |
| 設定檔 | 密碼策略、資源限制 | DEFAULT 或自訂 app_profile |
-- 修改使用者預設表空間
ALTER USER app_user DEFAULT TABLESPACE new_data;
-- 修改暫存表空間
ALTER USER app_user TEMPORARY TABLESPACE new_temp;
-- 解鎖/鎖定帳號
ALTER USER app_user ACCOUNT UNLOCK;
ALTER USER app_user ACCOUNT LOCK;
-- 修改密碼
ALTER USER app_user IDENTIFIED BY "NewP@ssw0rd";
-- 查看使用者配額
SELECT * FROM dba_ts_quotas WHERE username = 'APP_USER';
-- 刪除使用者 (含物件)
DROP USER app_user CASCADE;
core_data, log_data, archive_data),便於備份、遷移、分層儲存。SEGMENT SPACE MANAGEMENT AUTO 取代 freelists,減少爭用。GRANT DBA、ANY 權限濫用。PASSWORD_VERIFY_FUNCTION 強制複雜度。AUDIT SESSION, CREATE TABLE, DROP USER BY app_user。提示:使用 DBCA (Database Configuration Assistant) 圖形化建立資料庫時,可在「儲存管理」步驟預先規劃表空間配置,避免事後手工調整。