首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

ODAC 應用技巧 (一):Net 直連模式免安裝 Oracle Client 部署指南

     編輯:Oracle 資料庫基礎

前言

傳統 ODAC 透過 OCI 庫 (需安裝 Oracle Client) 連線資料庫。ODAC Net 選項採用純 TCP/IP 協議直連 Oracle Listener,完全免安裝 Oracle Client,大幅降低部署體積與維護成本。本文詳細說明 Net 模式架構、連線字串格式、啟用代碼、OCI vs Net 差異、限制與適用場景。

一、架構對比

層面OCI 模式 (標準)Net 模式 (直連)
通訊層OCI (Oracle Call Interface) + SQL*Net原生 TCP/IP Socket
Client 安裝需完整/Instant Client零安裝
部署體積~100MB+ (Instant Client)~2MB (ODAC 核心組件)
加密/認證Oracle Native Encryption / SSL / KerberosDES 加密 (僅認證階段),不支援 Oracle 加密套件
功能支援完整 (Object、Collection、LOB、AQ、TAF 等)受限 (見下文限制表)

二、啟用 Net 模式核心代碼

var
  Session: TOraSession;
begin
  Session := TOraSession.Create(nil);
  try
    Session.Options.Net := True;                    // 關鍵:啟用 Net 模式
    Session.Username := 'scott';
    Session.Password := 'tiger';
    Session.Server := '192.168.1.100:1521:ORCL';    // 格式: Host:Port:SID
    // 或 Service Name: '192.168.1.100:1521/mypdb.example.com'
    Session.Connect;
    // ... 業務邏輯
  finally
    Session.Free;
  end;
end;

Server 屬性格式詳解

  • Host:IP 或主機名 (支援 IPv6 格式 [::1])。
  • Port:Listener 埠 (預設 1521)。
  • SID / Service_Name:Instance 識別碼。建議使用 Service Name (支援 RAC/PDB)。

三、OCI 與 Net 運行時切換

// 運行時動態切換
Session.Options.Net := False;  // 切回 OCI 模式
Session.Server := 'ORCL_TNS';  // TNS 別名
Session.Connect;
應用其餘代碼 (Query、Transaction 等) 完全無需修改,僅連線建立階段不同。

四、Net 模式功能限制對照表 (關鍵決策依據)

功能Net 模式支援備註
TCP/IP 連線✅ 唯一支援協議不支援 IPC、Named Pipes、SDO 等
Oracle 8/9/10/11/12/19c✅ Windows/Linux 測試通過不保證所有平台/版本相容
Object Type / Collection (VARRAY/Nested Table)❌ 不支援需 OCI
LOB (BLOB/CLOB/BFILE) 串流存取❌ 受限建議 OCI 模式處理大物件
TOraLoader 直接路徑載入 (lmDirect)❌ 不支援僅支援常規路徑
BreakExec (中斷長時間執行)❌ 無效
TRUNC(:bind) 日期截斷比較❌ 報 ORA-00932已知 Bug,改用應用層截斷
NLS 客戶端轉換⚠ 部分支援不支援完整 Client 端 NLS 轉換
防火牆/NAT 環境⚠ 可能有認證問題需開放 Listener Port 直通

五、適用場景決策樹

IF (部署環境無法安裝 Client) OR (極度壓縮部署體積) OR (簡單 CRUD 應用)
   AND NOT (需 Object/Collection/大型 LOB/直接路徑載入/高階加密/TAF)
THEN
   使用 Net 模式
ELSE
   使用標準 OCI 模式
END IF;

典型適用場景

  • 輕量級桌面工具、批次排程腳本、CI/CD Agent 端資料庫操作。
  • 容器化微服務 (Docker/K8s) 需極小映像體積。
  • 受管環境禁止安裝 Oracle Client (安全合規)。
  • 遠程桌面/VDI 終端免安裝連線。

禁用場景

  • 核心交易系統需 Oracle Native Network Encryption / SSL / TAF。
  • 大量 BLOB/CLOB 串流讀寫 (影像、文檔管理系統)。
  • 使用 Oracle Object/Collection 型別的應用。
  • Data Pump / TOraLoader 大量資料載入作業。

六、總結

ODAC Net 模式以 Session.Options.Net := True + Host:Port:SID 連線字串,實現真正的「零 Client 部署」。但功能限制明確:無 Object/Collection、無高階加密、無直接路徑載入、LOB 受限。架構決策時務必對照限制表,確認業務功能落在支援範圍內再採用。混合部署策略:核心服務用 OCI,邊緣輕量工具用 Net,同一專案內運行時動態切換。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved