既知の制限事項
このトピックでは、Oracle Database Gateway for DRDAを使用した既知の制限について説明します。
次の制限が、12cリリース2 (12.2)の製品に存在することがわかっています。 将来のリリースでこれらの制限が変更される予定はありません。 アプリケーションを開発する際の情報または制限については、「アプリケーションの開発」を参照してください。
DB2考慮事項
これらのトピックでは、12cリリース2 (12.2)に存在するDB2の考慮事項について説明します。
後処理されるSUBSTR関数
SUBSTR関数は、z/OSのDB2 UDBなど、DRDAサーバーと互換性がない方法でOracleデータベースで使用できます。
したがって、SUBSTR関数は後処理されます。 ただし、サーバーは「ネイティブ・セマンティクス」機能を使用してネイティブに処理できます。 詳細は、「アプリケーションの開発」を参照してください。
数値の文字列連結
DB2ユニバーサル・データベースでは、数値の文字列連結はサポートされていません。
たとえば、次のような使用方法は許可されません。
SELECT 2||2 FROM table@dblinkGLOBAL_NAMES初期化パラメータ
OracleデータベースのINIT.ORAファイルでGLOBAL_NAMESがTRUEに設定されている場合は、ゲートウェイに接続できるように、ゲートウェイ初期化パラメータ・ファイルで異機種間サービス(HS)初期化パラメータHS_DB_DOMAINを指定し、OracleデータベースのDB_DOMAIN パラメータの値と一致させる必要があります。
詳細は、使用しているプラットフォームに応じて、「Oracle Database Gatewayインストレーションおよび構成ガイドfor IBM AIX on POWER Systems (64-Bit)、Linux x86-64、Oracle Solaris on SPARC (64-Bit)、Oracle Solaris on x86-64 (64-Bit)、HP-UX Itanium」または「Oracle Database Gatewayインストレーションおよび構成ガイドfor Microsoft Windows」を参照してください。
DRDAパッケージおよびDB2に関する考慮事項
ゲートウェイは、文の実行にパッケージを使用します。 このパッケージは、ゲートウェイがターゲットDB2システムに初めて接続したときに暗黙的にバインドされます。
DB2システムに接続するユーザーIDに、パッケージのバインドに必要な権限があることを確認します。 詳細は、使用しているプラットフォームに応じて、「Oracle Database Gatewayインストレーションおよび構成ガイドfor IBM AIX on POWER Systems (64-Bit)、Linux x86-64、Oracle Solaris on SPARC (64-Bit)、Oracle Solaris on x86-64 (64-Bit)、HP-UX Itanium」または「Oracle Database Gatewayインストレーションおよび構成ガイドfor Microsoft Windows」を参照してください。
日付計算
DB2では、日付データ型での数値の加算または減算は許可されません。
一般に、DB2の制限により、次のタイプのSQL式フォームはゲートウェイで正しく動作しません:
date + number number + date date - number date1 - date2
日付と数値の加算および減算の(date + number, number + date, date - number)フォームは、拒否されるDB2に送信されます。
また、DB2では、日付の減算は常に実行されません。 2つの日付(date1 - date2)を減算すると、DB2の日付の減算の解釈が異なるため、結果はサーバーによって異なります。
ノート:
日付の計算に関する問題が解決されるまで、すべてのゲートウェイSQL式で日付の計算式を使用しないでください。ストアド・プロシージャおよびトランザクション整合性
IBM DB2では、ストアド・プロシージャ用として戻り時にコミット(Commit on Return)という機能が導入されています。
この機能により、DB2では、ストアド・プロシージャの成功後に自動コミットを実行できます。 この機能は、プロシージャの作成時に有効化されます。 データの整合性を確保するために、Oracle Database Gateway for DRDAは異機種環境ではこの機能をサポートしません。 この機能が有効になっているストアド・プロシージャをコールしようとすると、ゲートウェイからエラーORA-28526またはPLS-00201が返されます(識別子を宣言する必要があります)。
SQLの制限事項
これらのトピックでは、Oracle Database Gateway for DRDAのSQL制限について説明します。
Oracle ROWID列
DB2 ROWID列は、Oracle ROWID列と互換性がありません。
ROWID列はサポートされていないため、次の制限が適用されます:
UPDATEおよびDELETEは、WHERE CURRENT OF CURSOR句ではサポートされていません。 ゲートウェイを介して特定の行を更新または削除するには、条件スタイルのWHERE句を使用する必要があります。 (Bug番号 205538)プリコンパイラおよびPL/SQLプログラムで
UPDATE文およびDELETE文が使用される場合、これらの文はOracleROWID関数に内部的に依存します。- OracleデータベースとDB2間のスナップショットはサポートされていません。
スナップショットは、Oracleの
ROWID列に内部的に依存します。
Oracleバインド変数
Oracleバインド変数は、ゲートウェイでの使用時にSQLパラメータ・マーカーになります。
したがって、バインド変数は、SQLパラメータ・マーカーと同じ制限を受けます。
たとえば、次のような文は許可されません。
WHERE :x IS NULL WHERE :x = :y