大多數應用程序使用 OCI 的ODAC 標准方式來連接 Oracle 數據庫服務器。這是使用第三方開發語言設計 Oracle 應用程序最常用的方法。 所有的 OCI 接口都作為內部庫來使用,使得編譯生成的應用程序非常小。但是,這需要在客戶機上安裝 Oracle 客戶端軟件,這使得安裝和管理要花費額外的開銷。 有時,安裝 Oracle 客戶端程序甚至是不可能的。 例如,如果你需要在遠程計算機上設置你的應用程序,你不能提供特殊的文件支持。
ODAC Net 允許你的應用程序直接通過 TCP/IP 協議來連接 Oracle,而不需要 Oracle 客戶端軟件。運行使用 ODAC Net 的應用程序,僅需要有一個支持 TCP/IP 協議的操作系統。
使用 ODAC Net 連接 Oracle 服務器,你需要知道 Oracle 服務器的地址,監聽端口號以及數據庫實例名稱。
在你的應用程序中使用 Net 選項前,你只需要設置 TOraSession 對象的選項 Net 為 True 且指定它的Server 屬性為指定的數據庫。如果使用 ODAC 的標准方式通過 OCI 來連接數據庫,你必須設置 Server 屬性為 TNS 別名,但現在使用 ODAC 的 Net 選項,你只需要指定數據庫字符串,格式如下: Host:Port:SID.
這裡, Host 指服務器地址, Port 指服務器監聽端口號, SID 指特定的系統實例名稱。
這裡有個例子示范不使用 OCI 而 連接數據庫:
var
Session: TOraSession;
. . .
Session.Options.Net := True;
Session.Username := 'Scott';
Session.PassWord := 'tiger';
Session.Server := '205.227.44.44:1521:orcl';
Session.Connect;
注意:這些是你的應用程序要支持 Net 選項時所必須的。你不需要重寫應用程序的其它部分。除此之外,你還可以在任何時候通過 OCI 連接 Oracle 。要實現它,你僅需要設置 TOraSession.Options.Net 選項為 False.
OCI 與 Net:
使用 ODAC 標准方式和 Net 方式編譯的應用程序,在程序大小和運行速度上非常相似。使用 Net 選項在安全方面,與使用 OCI 的 Oracle 的加密方式並不相同。 Net 使用 DES 來驗證安全性,現在它並不支持 Oracle 的加密方式。
ODAC Net 的優勢:
- 不需要安裝和管理 Oracle 客戶端軟件;
- 減少系統需求。
ODAC Net 選項的限制:
僅支持通過 TCP/IP 協議來連接 Oracle;
不支持 Oracle 8 的對象,數組;
不支持 TOraLoader 的直接裝載;
請注意:我們並不能保證 ODAC Net 可以在所有網絡上的所有 Oracle 服務器上運行。我們使用 Net 選項在本地局域網上測試了 Windows 平台上 Oracle 7.3 以後的所有版本。
ODAC 通過 OCI 可以運行在所有的 Oracle 服務器上。Net 選項在 Window 及 Linux 平台上的所有Oracle 服務器上被測試過。我們不能保證它可以運行在其它平台上。
使用防火牆時可能會出現驗證問題。
Net 選項在本地語言下運行時會有些不同。它不支持客戶端的 NLS 轉換。
BreakExec 過程不能運行。
TOraLoader 組件不在運行在直接路徑接口模式(lmDirect 模式)。
Net 選項還有一些其它問題。例如,進行截斷日期比較時會出現錯誤。
SELECT * FROM scott.emp WHERE hiredate >= TRUNC(:hiredate)
執行該查詢時會出現 ORA-00932 錯誤: 不支持的數據類型。
如果沒有上面的限制,你可以通過 OCI 在任何時間關閉連接。