Oracle 與 MySQL、SQL Server 等資料庫最大的概念差異在於「資料庫優先、用戶次之」的層級關係。本文釐清此核心架構差異,並詳細說明建立資料庫、建立用戶、授權與連線的標準流程。
| 特性 | Oracle | MySQL / SQL Server / PostgreSQL |
|---|---|---|
| 層級關係 | Instance (實例) → Database (資料庫) → User/Schema (用戶/綱要) | Instance → Database → User (用戶跨 Database) |
| 用戶與 Schema | 一對一綁定,用戶即 Schema,同名 | 用戶可存取多個 Database,Schema 獨立於用戶 |
| 建立順序 | 先建 Database,再建 User | 先建 Database,再建 User (但 User 非綁定單一 DB) |
| 連線目標 | 連線至 Instance (SID/Service Name),隱含存取單一 Database | 連線指定 Database |
ORCL 或 PDB1.MYDOMAIN.COM (12c+ 多租戶架構)。# Linux/Unix
sqlplus sys/YourPassword@NewDB as sysdba
# Windows
sqlplus sys/YourPassword@NewDB as sysdba
說明:@NewDB 對應 tnsnames.ora 中的服務名或 SID。as sysdba 賦予最高管理權限。
-- 建立用戶並指定預設/臨時表空間
CREATE USER app_user IDENTIFIED BY StrongPassword
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON users; -- 給予表空間配額
-- 或簡易版 (預設表空間為 DATABASE DEFAULT)
CREATE USER app_user IDENTIFIED BY StrongPassword;
-- 基本連線與建立物件權限 (標準角色)
GRANT CONNECT, RESOURCE TO app_user;
-- DBA 角色 (僅限測試/開發環境,生產嚴禁)
-- GRANT DBA TO app_user;
-- 細粒度權限範例 (生產環境建議)
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SEQUENCE,
CREATE PROCEDURE, CREATE TRIGGER, CREATE SYNONYM
TO app_user;
sqlplus app_user/StrongPassword@NewDB
-- 或 JDBC URL
jdbc:oracle:thin:@//host:1521/NewDB
SYS Schema 儲存核心中繼資料。QUOTA 或 UNLIMITED TABLESPACE 系統權限給予空間。DEFAULT TABLESPACE 時,物件建立於資料庫預設永久表空間 (通常為 USERS)。PGA,不足時溢寫至用戶的 TEMPORARY TABLESPACE。理解「Instance → Database → User/Schema」的層級關係是掌握 Oracle 管理的基石。建立環境時遵循「DBCA 建庫 → SYSDBA 連線 → 建用戶/配額 → 精細授權 → 應用驗證」的標準流程,能確保架構清晰、權限可控、維護容易。