要從你的機器(客戶端)連接遠程 Oracle 服務器(數據庫端),**必須安裝 Oracle Client 軟件**(Instant Client 或完整 Client),原因:
sqlnet.ora, tnsnames.ora 解析服務名、配置加密、閥值等。LD_LIBRARY_PATH (Linux) / PATH (Windows) 指向解壓目錄。tnsnames.ora 或使用 EZConnect 字符串:host:port/service_name。# 服務器上檢查
lsnrctl status
# 若無輸出,啟動:
lsnrctl start
# 確認監聽端口(默認 1521)防火牆放行
| 方案 | 原理 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|---|
| JDBC Thin Driver (Type 4) | 純 Java 實現 Oracle 協議,無需本地庫 | 跨平台、無安裝、Maven/Gradle 依賴即可 | 不支援 OCI 高級特性(如透明應用故障轉移 TAF、高級加密) | Java 應用首選 |
| Python cx_Oracle Thin Mode (8.3+) | 純 Python 實現,可選無 Client | 部署簡單 | 性能略低於 Thick Mode | Python 數據科學/腳本 |
| REST/HTTPS API 网关 | 中間層(ORDS, Spring Boot, Node.js)暴露 REST,客戶端走 HTTP | 客戶端零依賴、防火牆友好、語言無關 | 需開發/維護中間層、增加網絡跳轉 | 微服務架構、異構系統集成 |
| Oracle Cloud / Autonomous DB | 提供 Wallet-based TLS 連接,驅動自動下載憑證 | 安全、免配置 tnsnames | 僅限雲數據庫 | 雲原生應用 |
-- TNSNAMES (需 Client + tnsnames.ora)
jdbc:oracle:thin:@MYDB
-- EZConnect (需 Client/Thin Driver)
jdbc:oracle:thin:@//192.168.1.100:1521/ORCLPDB1
-- Thin Driver 完整參數
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCLPDB1)))
tnsnames.ora 或用 EZConnect,確保服務端 Listener 運行、防火牆放行 1521。com.oracle.database.jdbc:ojdbc11:23.4.0.0。