Oracle 初學者最易混淆的四個概念——服務名、表空間、方案、用戶,本文通過層級歸納、定義解析、實戰 SQL 演示,建立清晰的心智模型。
層級關係:Service Name > Tablespace > Schema (User)
CREATE USER scott IDENTIFIED BY tiger; 同時隱式創建同名 Schema SCOTT。CREATE SCHEMA 但用於批量創建對象),只能通過創建 User 間接創建。emp 實際解析為 scott.emp。ALTER SESSION SET CURRENT_SCHEMA = other_user; 切換默認 Schema。DEFAULT TABLESPACE),創建對象不指定則存入默認表空間。CREATE TABLE t (...) TABLESPACE users_data;-- 1. 授權 scott DBA 以便演示
GRANT dba TO scott;
-- 2. scott 登錄創建表(默認 schema=SCOTT,默認 tablespace=USERS)
CREATE TABLE test(name CHAR(10));
-- 3. scott 顯式指定 schema=SYSTEM 創建同名表
CREATE TABLE system.test(name CHAR(10));
-- 4. 插入數據區分
INSERT INTO test VALUES ('scott');
INSERT INTO system.test VALUES ('system');
COMMIT;
-- 5. 切換到 system 用戶
CONN system/manager
SELECT * FROM test; -- 顯示 'system'(system 默認 schema=SYSTEM)
-- 6. 切換當前會話默認 schema 為 scott
ALTER SESSION SET CURRENT_SCHEMA = scott;
SELECT * FROM test; -- 顯示 'scott'
-- 7. 查詢數據字典確認 OWNER (即 SCHEMA)
SELECT owner, table_name FROM dba_tables WHERE table_name = UPPER('test');
-- 結果:
-- OWNER TABLE_NAME
-- SCOTT TEST
-- SYSTEM TEST
DBA_TABLES.OWNER = Schema 名 = User 名(對於普通用戶)。SCHEMA.OBJECT,非 USER.OBJECT。服務名裝表空間,表空間存數據文件;
用戶登錄得方案,方案裡裝表視圖。
方案等於用戶名,邏輯物理要分開。
創建對象指表空間,訪問對象帶方案名。
徹底理清這四個概念的層級與映射,是掌握 Oracle 多租戶、權限模型、數據遷移、備份恢復的基石。