在學習或管理 Oracle 資料庫時,建立新用戶並分配專屬表空間是基本且關鍵的操作。本文將詳細記錄在現有資料庫實例上,從查詢資料檔位置、建立表空間、創建用戶到授予權限的完整標準流程,供初學者與 DBA 參考。
本範例以 Linux 作業系統為例,假設已安裝 Oracle 資料庫,並具備作業系統層級的 oracle 用戶權限。
su - oracle 切換身份。sqlplus "/as sysdba"。新建表空間前,建議先確認現有資料檔(.dbf)的存放目錄,以便規劃新表空間的檔案位置。
SELECT name FROM v$datafile;
查詢結果通常會顯示類似 /u01/app/oracle/oradata/ORCL/ 的路徑,新表空間的資料檔建議放置於同一目錄下。
以下範例建立一個名為 NOTIFYDB 的表空間,初始大小 200MB,啟用自動擴展、區域本地管理與自動段空間管理(ASSM)。
CREATE TABLESPACE NOTIFYDB
DATAFILE '/Oracle/oradata/test/notifydb.dbf'
SIZE 200M AUTOEXTEND ON
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;
CREATE USER hc_notify IDENTIFIED BY hc_passWord
DEFAULT TABLESPACE NOTIFYDB;
此指令建立用戶 hc_notify,密碼為 hc_passWord,並將其預設表空間指向剛建立的 NOTIFYDB。
為讓用戶能正常開發與存取資料,需授予核心角色與系統權限:
-- 基本連線與建表權限
GRANT CONNECT, RESOURCE TO hc_notify;
-- 移除表空間配額限制(視安全策略決定是否授予)
GRANT UNLIMITED TABLESPACE TO hc_notify;
-- 進階開發常用權限
GRANT CREATE DATABASE LINK TO hc_notify;
GRANT SELECT ANY SEQUENCE, CREATE MATERIALIZED VIEW TO hc_notify;
安全提醒:
UNLIMITED TABLESPACE與SELECT ANY SEQUENCE屬於高權限,生產環境請遵循「最小權限原則」,改以ALTER USER ... QUOTA ... ON ...精確控制配額。
完成上述步驟後,即可使用 hc_notify/hc_passWord 連線至指定實例,開始建立資料表、索引等物件。建議後續定期監控表空間使用率(查詢 DBA_FREE_SPACE),並依業務增長適時擴充資料檔或新增資料檔。