首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Oracle 「切換數據庫」誤區:其實你要切的是用戶/表空間

     編輯:程式設計綜合問答

核心概念釐清

Oracle 架構中 沒有 MySQL 意義上的「多個數據庫」。一個 Oracle 實例 = 一個數據庫。你在 DBCA 創建的 A、B、C、D 其實是 不同的表空間 或 不同的用戶 Schema。

  • 表空間:邏輯存儲容器,對應物理 .dbf 文件。
  • 用戶:擁有 Schema 對象(表、視圖、序列),默認綁定一個默認表空間。

正確的「切換」姿勢

-- 1. 以系統管理員創建用戶並指定表空間
CREATE USER user_a IDENTIFIED BY pwd_a DEFAULT TABLESPACE ts_a QUOTA UNLIMITED ON ts_a;
GRANT CONNECT, RESOURCE TO user_a;

-- 2. 客戶端連接時直接指定用戶
sqlplus user_a/pwd_a@//host:1521/service_name
-- 或在 JDBC URL 中指定
jdbc:oracle:thin:user_a/pwd_a@//host:1521/service_name

連上哪個用戶,就在那個用戶的 Schema 下工作,天然隔離,無需額外「切換數據庫」命令。

常見誤操作

ALTER SESSION SET CURRENT_SCHEMA = user_b;
僅改變未加 Schema 前綴時的默認解析路徑,權限仍屬當前登入用戶,慎用。
CONNECT user_b/pwd_b 在 SQL*Plus 中
等同於斷開重連,可行但會丟失會話變量/臨時表。

給新手的建議

  1. 先搞清 實例 ≠ 數據庫 ≠ Schema 的層級關系。
  2. 規劃表空間:系統/用戶/索引/臨時/撤銷分離,配額管理。
  3. 應用層通過不同連接池(不同用戶憑證)實現業務隔離。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved