Oracle Net compatibility issues

Top  Previous  Next

もしDirect Oracle AccessOracle Net 8以降を検知すると、新しいNet8インターフェースが使われます。もしOracle Net 8以降が見つからなかったら、古いSQL*Net関数が、SQL*Net 1.x or 2.x, Oracle 7.x and all previous Direct Oracle Access releasesとの互換を保つために使われます。

理論上、Oracle Net 8は以前のバージョンのSQL*Net 100%互換があります。しかしもしアプリケーションでLOB'sObjectsのような機能を使いたいとすれば、新しいOracle Net 8インターフェースを使わなくてはいけません。この新しいインターフェースの関係で、次の非互換が存在します:

w        LongLong Rawカラムは、TOracleQuery.GetLongFieldメソッドを使って、サーバーからランダムにそして区分的に読み込まれることはありません。 メソッドは機能します、しかし実行後直ぐにLong全体は読み込まれます。そしてGetLongFieldメソッドはメモリーから要求されたピースを取得します。
w        ToracleQueryToracleDataSet ErrorPositionErrorLine Net8 8.0.38.0.4ではサポートされません。なぜならこの情報は失われているからです。 常に0を返します。Net8 8.0.5以降ではこれら関数は正しく実行されます。
w        TOracleQuery.WarningFlags"Compiled with errors" bit ($20)以外はNet8では使用できません。
w        TOracleSession.ExternalLDA は、Net8ではもはやLDA構造体が使われていないので、使用できません。

Net8クライアントでDirect Oracle Accessに古いSQL*Netインターフェースを使わせるには、それによって上記の非互換を取り除き、TOracleSession.Preferences.UseOCI7 booleanTrueに設定します。 この方法で、SQL*NetOracle Net 8クライアントで100%の互換性を確保できます。 明らかにOracle Net 8の特別機能はアプリケーションで使用することが出来ません。それらの機能は:

w        TLOBLocator オブジェクト
w        TOracleObject オブジェクト
w        TOracleReference オブジェクト
w        Oracle8 password expiration
w        MTS session pooling
次の機能はOracle Net 8.1以降が必要です
w        TOracleDirectPathLoader コンポーネント
w        Temporary LOB's
w        Timestamps
Oracle Net 9.0以降を必要とする機能は:
w        Scrollable クエリー
Oracle Net 9.2以降を必要とするのは:
w        TXMLType オブジェクト
w        Oracle Session Pooling
w        Client side statement caching