Oracle 11g 安裝後預設使用全域資料庫名(Global Database Name)或 SID 進行連接。在單機多資料庫實例環境下,開發者常需指定連接具體的可插拔資料庫(PDB)而非容器資料庫(CDB)或預設 SID。
在連接字串中指定 SERVICE_NAME 參數:
jdbc:oracle:thin:@//localhost:1521/PDBORCL -- 易連接語法
-- 或 TNSNAMES.ORA 配置
MYPDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = PDBORCL)))
編輯 $ORACLE_HOME/network/admin/tnsnames.ora:
DEV_PDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb_dev.localdomain) -- 具體 PDB 服務名
)
)
連接時使用:sqlplus user/pass@DEV_PDB 或 JDBC jdbc:oracle:thin:@DEV_PDB
ALTER SESSION SET CONTAINER = PDBORCL;
-- 後續操作將在指定 PDB 中進行
SELECT SYS_CONTEXT('USERENV', 'CON_NAME') FROM DUAL; -- 顯示當前容器名
SELECT NAME, OPEN_MODE FROM V$PDBS; -- 查看所有 PDB 狀態
lsnrctl status 確認服務已註冊connectionInitSql 自動切換容器