機械翻訳について

2.9 既知の制限事項

次の各項では、既知の制限について説明し、可能な場合に対処するための推奨事項を示します。

この項または既知の問題点で示されていない非互換性の問題が発生した場合は、Oracleサポート・サービスに連絡してください。

次の制限も適用されます:

  • SUBSTR関数の2番目のパラメータとして負の数値が使用されている場合、不正な結果が返されます。 これは、Oracle SUBSTR関数とSybaseでの同等の関数の互換性がないためです。

    ノート:

    制限に関するご質問や懸念がある場合は、Oracle Support Servicesまでお問い合わせください。

2.9.1 トランザクションの整合性

ゲートウェイは、次の場合にトランザクションの整合性を保証できません。

  • ゲートウェイによって処理された文によってターゲット・データベースで暗黙的なコミットが発生した場合

  • 自動コミット・モードで動作するようにターゲット・データベースが構成されている場合

    ノート:

    Oracleでは、次のことを強くお薦めします:

    • 特定の文を実行するとターゲット・データベースで暗黙的なコミットが発生することがわかっている場合は、この文が独自のトランザクションで実行されていることを確認します。
    • 自動コミット・モードで動作するようにターゲット・データベースを構成しないでください。

2.9.2 トランザクション機能

ゲートウェイは保存ポイントをサポートしていません。

分散更新トランザクションがゲートウェイに関係していて、ユーザーが保存ポイントを作成しようとすると、次のエラーが発生します:

ORA-02070: database dblink does not support savepoint in this context

デフォルトでは、ゲートウェイはCOMMIT_CONFIRMとして構成され、トランザクションによってSybaseデータベースが更新されると、常にコミット・ポイント・サイトになります。

2.9.3 PL/SQLカーソル・ループのCOMMITまたはROLLBACKによるオープン・カーソルのクローズ

PL/SQLカーソル・ループで発行されたCOMMITまたはROLLBACKは、すべてのオープン・カーソルをクローズするため、エラーが発生する可能性があります。

たとえば:

ORA-1002:  fetch out of sequence 

このエラーを回避するには、COMMITまたはROLLBACK文をカーソル・ループの外に移動します。

2.9.4 ストアド・プロシージャ

Oracle Database Gateway for Sybaseおよびストアド・プロシージャ。

ストアド・プロシージャについては、次の点を考慮してください:

  • コミットまたはロールバックを埋め込むストアド・プロシージャを介して発行される変更は、Oracleトランザクション・マネージャ、Oracle COMMITまたはROLLBACKコマンドでは制御できません。
  • 結果セットを含むストアド・プロシージャにOracle Database Gateway for Sybaseを介してアクセスする場合は、異機種間サービスの順次モードで作業する必要があります。
  • Oracle Database Gateway for Sybaseを介して複数の結果セットを持つストアド・プロシージャにアクセスする場合は、続行する前にすべての結果セットを読み取る必要があります。
  • ストアド・プロシージャの出力パラメータは、NULL値に初期化する必要があります。
  • Oracle Database Gateway for Sybaseは、パススルー問合せ内の出力パラメータまたは出力パラメータを含むストアド・プロシージャをサポートしていません。

2.9.5 パススルー機能

Sybaseがゲートウェイ・パススルー機能を使用して実行したDDL文は、マルチ・ステートメント・トランザクションで失敗することがあります。

SybaseオプションDDL in tranを設定して、トランザクション内のDDL文を許可します。

Oracleでは、パススルー機能を使用してそのような文を実行するときに、DDL文を独自のトランザクションに配置することをお薦めします。 DDL文の後に明示的なCOMMITを発行する必要があります。

ゲートウェイを通過するSQL文によってSybaseデータベースで暗黙的なコミットが発生した場合、Oracleトランザクション・マネージャはコミットを認識せず、Oracle ROLLBACKコマンドを使用してトランザクションをロールバックすることはできません。

2.9.6 Sybase NCHARおよびNVARCHARデータ型

ゲートウェイは、SybaseのNCHARまたはNVARCHARデータ型で定義された列を選択できません。

2.9.7 SQL構文

次のトピックでは、SQL構文の制限について説明します。

関連項目:

SQL構文に関する制限事項の詳細は、「サポート対象のSQL構文および関数」を参照してください。

2.9.7.1 WHERE CURRENT OF句

WHERE CURRENT OF句を含むUPDATE 文およびDELETE文は、Oracle ROWID実装に依存するため、ゲートウェイではサポートされていません。

ゲートウェイを通じて特定の行を更新または削除するには、条件スタイルとしてWHERE句を使用する必要があります。

2.9.7.2 CONNECT BY句

ゲートウェイでは、SELECT文でのCONNECT BY句はサポートされていません。

2.9.7.3 ROWID

Oracle ROWIDの実装はサポートされていません。

2.9.7.4 INSERT文の副問合せ

INSERT文の副問合せでは、同じ表に複数の別名を使用できません。

たとえば、次の文はサポートされていません。

SQL> INSERT INTO "emp_target"@SYBS
         SELECT a."empno" FROM "emp_source"@SYBS a,
            "emp_source"@SYBS b WHERE b."empno"=9999

2.9.7.5 EXPLAIN PLAN文

EXPLAIN PLAN 文はサポートされません。

2.9.8 SQL*Plus小文字の表名を含むCOPYコマンド

小文字の表名を囲むには、二重引用符を使用する必要があります。

たとえば:

copy from tkhouser/tkhouser@inst1 insert loc_tkhodept using select * from "tkhodept"@holink2;

2.9.9 データベース・リンク

ゲートウェイはマルチスレッド化されていないため、共有データベース・リンクをサポートできません。

ゲートウェイ・セッションはそれぞれ別のゲートウェイ・プロセスを起動し、接続は共有されません。