首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

Oracle 架構獨特性:資料庫先於用戶、建立流程與權限模型

     編輯:Oracle 教學

Oracle 架構獨特性:資料庫先於用戶、建立流程與權限模型

Oracle 與 MySQL、SQL Server 等資料庫最大的概念差異在於「資料庫優先、用戶次之」的層級關係。本文釐清此核心架構差異,並詳細說明建立資料庫、建立用戶、授權與連線的標準流程。

核心概念差異對照

特性OracleMySQL / 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

Oracle 環境建立標準流程

步驟 1:建立資料庫 (使用 DBCA)

  1. 啟動 Database Configuration Assistant (DBCA)。
  2. 選擇「建立資料庫」→ 選擇範本 (一般用途/資料倉儲/自訂)。
  3. 指定全域資料庫名 (Global Database Name),例如 ORCL 或 PDB1.MYDOMAIN.COM (12c+ 多租戶架構)。
  4. 設定 SYS/SYSTEM 密碼、字符集 (建議 AL32UTF8)、儲存路徑 (ASM/檔案系統)、備份/恢復設定。
  5. 完成建立,DBCA 會自動啟動 Instance、建立控制檔、Redo Log、系統表空間 (SYSTEM, SYSAUX, UNDO, TEMP) 等核心結構。

步驟 2:以 SYSDBA 身分連線至新資料庫

# Linux/Unix
sqlplus sys/YourPassword@NewDB as sysdba

# Windows
sqlplus sys/YourPassword@NewDB as sysdba

說明:@NewDB 對應 tnsnames.ora 中的服務名或 SID。as sysdba 賦予最高管理權限。

步驟 3:建立應用用戶 (Schema Owner)

-- 建立用戶並指定預設/臨時表空間
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;

步驟 4:授予核心角色與系統權限

-- 基本連線與建立物件權限 (標準角色)
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;

步驟 5:應用端連線驗證

sqlplus app_user/StrongPassword@NewDB
-- 或 JDBC URL
jdbc:oracle:thin:@//host:1521/NewDB

關鍵角色與用戶說明

  • SYS:擁有資料字典基表,擁有最高權限,可啟動/關閉資料庫,內部以 SYS Schema 儲存核心中繼資料。
  • SYSTEM:輔助管理員,不可啟動/關閉資料庫,但可建立/管理用戶、表空間等。
  • SCOTT/TIGER:經典示範用戶,含 EMP/DEPT 範例表,適合教學測試。
  • PUBLIC:虛擬角色,所有用戶自動隸屬。對 PUBLIC 授權等同於對所有用戶授權。

表空間配額與預設表空間機制

  • 新用戶預設在任何表空間配額為 0,必須透過 QUOTA 或 UNLIMITED TABLESPACE 系統權限給予空間。
  • 未指定 DEFAULT TABLESPACE 時,物件建立於資料庫預設永久表空間 (通常為 USERS)。
  • 排序、雜湊連接、全域暫存表等操作會優先使用記憶體 PGA,不足時溢寫至用戶的 TEMPORARY TABLESPACE。

常見誤區與最佳實踐

  1. 誤區:以為建立用戶即建立資料庫。
    正確:資料庫是容器,用戶是其內的 Schema 擁有者。
  2. 誤區:直接使用 SYS/SYSTEM 跑應用。
    正確:應用務必使用專屬低權限用戶,遵循最小權限原則。
  3. 最佳實踐:採用「一個應用一個 Schema 用戶」,物件不跨 Schema 直接引用,透過同義詞或授權存取共享資料。
  4. 最佳實踐:12c+ 環境建議使用 PDB (Pluggable Database) 隔離多租戶,每個 PDB 獨立資料字典與用戶空間。

總結

理解「Instance → Database → User/Schema」的層級關係是掌握 Oracle 管理的基石。建立環境時遵循「DBCA 建庫 → SYSDBA 連線 → 建用戶/配額 → 精細授權 → 應用驗證」的標準流程,能確保架構清晰、權限可控、維護容易。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved