Oracle 中 Schema(模式)是數據庫對象的邏輯容器,等同於用戶。理解 Schema 結構、對象類型、命名空間隔離及權限體系,是高效開發、運維 Oracle 的前提。
| 概念 | 說明 |
|---|---|
| Schema | 數據庫對象集合的邏輯歸屬,一對一綁定用戶(CREATE USER 即創建 Schema) |
| Database | 物理文件集合(datafile、controlfile、redolog),一個實例掛載一個數據庫 |
| Instance | 內存結構(SGA、PGA)+ 後台進程(PMON、SMON、DBWn、LGWR 等) |
| Tablespace | 邏輯存儲單位,由一個或多個數據文件組成,對象段落在其上 |
schema.object 且有權限)示例:SELECT * FROM emp; → 先找當前用戶 emp 表/視圖/同義詞 → 再找 PUBLIC 同義詞 → 最後報錯 ORA-00942。
授權執行特定 DDL/DML:CREATE SESSION、CREATE TABLE、CREATE ANY TABLE、DROP ANY TABLE、SELECT ANY DICTIONARY。
原則:最小權限,避免 ANY 權限給應用用戶。
針對具體對象:SELECT、INSERT、UPDATE、DELETE、EXECUTE、REFERENCES、INDEX。
GRANT SELECT, INSERT ON hr.employees TO app_user;
CONNECT、RESOURCE、DBA(僅開發環境用)CREATE ROLE app_read; GRANT SELECT ON hr.employees TO app_read;CREATE ROLE admin_role IDENTIFIED BY pwd;CREATE PROCEDURE ... AUTHID CURRENT_USER:調用者權限(INVOKER),動態 SQL、跨 Schema 通用邏輯常用| 操作 | SQL 示例 |
|---|---|
| 創建用戶/Schema | CREATE USER app IDENTIFIED BY pwd DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp; GRANT CREATE SESSION, CREATE TABLE TO app; |
| 查看 Schema 對象 | SELECT object_name, object_type FROM user_objects ORDER BY object_type; |
| 授予對象權限 | GRANT SELECT, UPDATE ON hr.employees TO app_role; |
| 創建同義詞 | CREATE PUBLIC SYNONYM emp FOR hr.employees; |
| 移動表到其他 Tablespace | ALTER TABLE hr.employees MOVE TABLESPACE users_data; |
T_<模塊>_<實體>、索引 IDX_<表>_<列>、包 PKG_<模塊>AUDIT SELECT, UPDATE, DELETE ON hr.employees BY ACCESS;Oracle Schema 是對象的邊界、權限的錨點、命名空間的隔離區。熟練掌握「對象分類、兩大命名空間、定義者/調用者權限、角色體系」,並遵循「最小權限、Schema 分層、腳本版本化」原則,即可駕馭企業級 Oracle 架構。