2.5 既知の制限事項
このトピックでは、Oracle Database Gateway for DRDAを使用した既知の制限について説明します。
次の制限が、12cリリース2 (12.2)の製品に存在することがわかっています。 将来のリリースでこれらの制限が変更される予定はありません。 アプリケーションを開発する際の情報または制限については、「アプリケーションの開発」を参照してください。
- 「DB2に関する考慮事項」
これらのトピックでは、12cリリース2 (12.2)に存在するDB2の考慮事項について説明します。 - 「SQLの制限事項」
これらのトピックでは、Oracle Database Gateway for DRDAのSQL制限について説明します。
親トピック: リリース情報
2.5.1 DB2の考慮事項
これらのトピックでは、12cリリース2 (12.2)に存在するDB2の考慮事項について説明します。
- 「DD基本表およびビュー」
DD基本表およびビューの所有者は、OTGDB2
です。 これは変更できません。 - 「SUBSTR関数後処理済」
SUBSTR
関数は、z/OSのDB2 UDBなど、DRDAサーバーと互換性がない方法でOracleデータベースで使用できます。 - 「データ型の制限」
Oracle Database Gateway for DRDAでのデータ型の制限。 - 「NULL値およびストアド・プロシージャ」
NULL値は、ゲートウェイを介したストアド・プロシージャへのコールに渡されず、戻されません。 - 「数値の文字列の連結」
DB2ユニバーサル・データベースでは、数値の文字列連結はサポートされていません。 - 「GLOBAL_NAMES初期化パラメータ」
OracleデータベースのINIT.ORA
ファイルでGLOBAL_NAMES
がTRUE
に設定されている場合は、ゲートウェイに接続できるように、ゲートウェイ初期化パラメータ・ファイルで異機種間サービス(HS)初期化パラメータHS_DB_DOMAIN
を指定し、OracleデータベースのDB_DOMAIN
パラメータの値と一致させる必要があります。 - 「DRDAパッケージおよびDB2に関する考慮事項」
ゲートウェイは、文の実行にパッケージを使用します。 このパッケージは、ゲートウェイがターゲットDB2システムに初めて接続したときに暗黙的にバインドされます。 - 「日付の算術」
DB2では、日付データ型での数値の加算または減算は許可されません。 - 「行長の制限」
DRDAアーキテクチャの制限により、DRDA表現で集計長が32 KBを超える行は格納または取得できません。 - 「SQL*Plus内のLONGデータ型」
SQL*Plusは、Oracle Database Gateway for DRDAからLONG
データ型の列をフェッチできません。 - 「ストアド・プロシージャおよびトランザクション整合性」
IBM DB2には、ストアド・プロシージャの戻り時にコミットと呼ばれる機能が導入されています。
親トピック: 既知の制限事項
2.5.1.2 後処理されるSUBSTR関数
SUBSTR
関数は、z/OSのDB2 UDBなど、DRDAサーバーと互換性がない方法でOracleデータベースで使用できます。
したがって、SUBSTR
関数は後処理されます。 ただし、サーバーは「ネイティブ・セマンティクス」機能を使用してネイティブに処理できます。 詳細は、「アプリケーションの開発」を参照してください。
親トピック: DB2に関する考慮事項
2.5.1.3 データ型の制限事項
Oracle Database Gateway for DRDAでのデータ型の制限。
データ型の詳細は、「DRDAデータ型からOracleデータ型への変換」を参照してください。
親トピック: DB2に関する考慮事項
2.5.1.4 NULL値およびストアド・プロシージャ
NULL値は、ゲートウェイを通じてストアド・プロシージャのコールに渡されることはなく、コールから戻されることもありません。
親トピック: DB2に関する考慮事項
2.5.1.5 数値の文字列連結
DB2ユニバーサル・データベースでは、数値の文字列連結はサポートされていません。
たとえば、次のような使用方法は許可されません。
SELECT 2||2 FROM table@dblink
親トピック: DB2に関する考慮事項
2.5.1.6 GLOBAL_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」を参照してください。
親トピック: DB2に関する考慮事項
2.5.1.7 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に関する考慮事項
2.5.1.8 日付計算
DB2では、日付データ型での数値の加算または減算は許可されません。
一般に、DB2の制限により、次のタイプのSQL式フォームはゲートウェイで正しく動作しません:
date + number number + date date - number date1 - date2
日付と数値の加算および減算の(date + number, number + date, date - number)
フォームは、拒否されるDB2に送信されます。
また、DB2では、日付の減算は常に実行されません。 2つの日付(date1 - date2)
を減算すると、DB2の日付の減算の解釈が異なるため、結果はサーバーによって異なります。
ノート:
日付の計算に関する問題が解決されるまで、すべてのゲートウェイSQL式で日付の計算式を使用しないでください。親トピック: DB2に関する考慮事項
2.5.1.10 SQL*Plus内のLONGデータ型
SQL*Plusは、Oracle Database Gateway for DRDAからLONG
データ型の列をフェッチできません。
親トピック: DB2に関する考慮事項
2.5.1.11 ストアド・プロシージャおよびトランザクション整合性
IBM DB2では、ストアド・プロシージャ用として戻り時にコミット(Commit on Return)という機能が導入されています。
この機能により、DB2では、ストアド・プロシージャの成功後に自動コミットを実行できます。 この機能は、プロシージャの作成時に有効化されます。 データの整合性を確保するために、Oracle Database Gateway for DRDAは異機種環境ではこの機能をサポートしません。 この機能が有効になっているストアド・プロシージャをコールしようとすると、ゲートウェイからエラーORA-28526
またはPLS-00201
が返されます(識別子を宣言する必要があります)。
親トピック: DB2に関する考慮事項
2.5.2 SQLの制限
これらのトピックでは、Oracle Database Gateway for DRDAのSQL制限について説明します。
- 「Oracle ROWID列」
DB2ROWID
列は、OracleROWID
列と互換性がありません。 - 「Oracleバインド変数」
Oracleバインド変数は、ゲートウェイとともに使用するとSQLパラメータ・マーカーになります。 - 「CONNECT BYはサポートされていません」
Oracle Database Gateway for DRDAは、SELECT
文でCONNECT BY
をサポートしていません。
親トピック: 既知の制限事項
2.5.2.1 Oracle ROWID列
DB2 ROWID
列は、Oracle ROWID
列と互換性がありません。
ROWID
列はサポートされていないため、次の制限が適用されます:
UPDATE
およびDELETE
は、WHERE CURRENT OF CURSOR
句ではサポートされていません。 ゲートウェイを介して特定の行を更新または削除するには、条件スタイルのWHERE
句を使用する必要があります。 (Oracle Bug#205538)プリコンパイラおよびPL/SQLプログラムで
UPDATE
文およびDELETE
文が使用される場合、これらの文はOracleROWID
関数に内部的に依存します。- Oracle DatabaseとDB2間のスナップショットはサポートされません。
スナップショットは、Oracleの
ROWID
列に内部的に依存します。
親トピック: SQLの制限事項
2.5.2.2 Oracleバインド変数
Oracleバインド変数は、ゲートウェイでの使用時にSQLパラメータ・マーカーになります。
したがって、バインド変数は、SQLパラメータ・マーカーと同じ制限を受けます。
たとえば、次のような文は許可されません。
WHERE :x IS NULL WHERE :x = :y
親トピック: SQLの制限事項
2.5.2.3 サポートされないCONNECT BY
Oracle Database Gateway for DRDAは、SELECT
文でCONNECT BY
をサポートしていません。
親トピック: SQLの制限事項