機械翻訳について

2.10 既知の制限事項

これらのトピックでは、Oracle Database Gateway for SQL Serverの既知の制限について説明し、可能な場合に対処するための推奨事項を示します。

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

ノート:

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

2.10.1 複数のオープン文書

SQL Serverへのアクセスには、接続ごとに1つのオープン文またはカーソルが許可されるという制限があります。 2番目の文またはカーソルを同じトランザクションで開いてSQL Serverにアクセスする必要がある場合は、新しい接続が必要です。

この制限により、同じトランザクション内の複数のオープン文またはカーソルは、SQL Serverへの異なる接続を使用するため、相互にロックできます。

この制限を回避するには、コミットを発行するか、ロジックを変更するか、またはその両方を行います。

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

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

たとえば、次のような場合です:

  • ゲートウェイによって処理された文によってターゲット・データベースで暗黙的なコミットが発生した場合
  • 自動コミット・モードで動作するようにターゲット・データベースが構成されている場合

ノート:

特定の文を実行すると、ターゲット・データベースで暗黙的なコミットが発生することがわかっている場合、Oracleでは、文が独自のトランザクションで実行されるようにすることを強くお薦めします。

SQL Serverデータベースへの接続が確立されると、ゲートウェイは自動コミット・モードをオフに設定します。

2.10.3 トランザクション機能

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

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

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

デフォルトでは、ゲートウェイはCOMMIT_CONFIRMとして構成されます。

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

PL/SQLカーソル・ループで発行されたCOMMITまたはROLLBACKは、開いているすべてのカーソルを閉じます。

これにより、次のエラーが発生する可能性があります:

ORA-1002:  fetch out of sequence 

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

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

Oracleトランザクション・マネージャ、Oracle COMMITまたはROLLBACKコマンドは、コミットまたはロールバックを埋め込むストアド・プロシージャを介して発行される変更を制御できません。

結果セットを含むストアド・プロシージャにOracle Database Gateway for SQL Serverを介してアクセスする場合は、異機種間サービスの順次モードで作業する必要があります。

Oracle Database Gateway for SQL Serverを介して複数の結果セットを持つストアド・プロシージャにアクセスする場合は、続行する前にすべての結果セットを読み取る必要があります。

ストアド・プロシージャの出力パラメータは、空の文字列に初期化する必要があります。

2.10.6 パススルー機能

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

2.10.7 DDL文

SQL Serverでは、いくつかのDDL文を独自のトランザクションで実行する必要があり、特定のトランザクションで実行できるDDL文は1つのみです。

これらのDDL文をSQL Serverストアド・プロシージャで使用し、プロシージャ機能を使用してゲートウェイを介してストアド・プロシージャを実行する場合、またはパススルー機能を使用してゲートウェイを介してDDL文を実行すると、エラー状態になることがあります。 これは、ゲートウェイのプロシージャ機能およびパススルー機能では、DDL文が独自の個別のトランザクションで実行されることを保証できないためです。

次のSQL Server DDL文は、ゲートウェイ・パススルー機能で渡そうとした場合、またはそれらを含むSQL Serverストアド・プロシージャを実行した場合、エラー状態を引き起こす可能性があります:

  • ALTER DATABASE
  • CREATE DATABASE
  • CREATE INDEX
  • CREATE PROCEDURE
  • CREATE TABLE
  • CREATE VIEW
  • DISK INIT
  • DROP <object>
  • DUMP TRANSACTION
  • GRANT
  • LOAD DATABASE
  • LOAD TRANSACTION
  • RECONFIGURE
  • REVOKE
  • SELECT INTO
  • TRUNCATE TABLE
  • UPDATE STATISTICS

関連項目:

DDL文の詳細は、SQL Serverのドキュメントを参照してください。

2.10.8 SQL構文

これらのトピックでは、SQL構文の制限事項を示します。

関連項目:

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

2.10.8.1 WHERE CURRENT OF句

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

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

2.10.8.2 CONNECT BY句

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

2.10.8.3 副問合せの関数

INSERTUPDATEまたはDELETE SQL文の副問合せの一部の場合、バインド変数および式は、文字列関数または数学関数のオペランドとしてサポートされていません。

2.10.8.4 副問合せのパラメータ

SQL Serverの制限により、副問合せではパラメータを使用できません。

2.10.8.5 UPDATE文のデータ・ディクショナリ表およびビュー

UPDATE文のSET句のデータ・ディクショナリ表およびビューはサポートされていません。

2.10.8.6 ROWID

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

2.10.8.7 TO_DATE

TO_DATEは予約語であり、データベース識別子名として使用できません。

2.10.8.8 EXPLAIN PLAN文

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

2.10.9 関数

このトピックでは、Oracle Database Gateway for SQL Serverで関数を使用するための制限について説明します。

関数の使用には、次の制限が適用されます:

  • サポートされていない関数は、LONG列を参照する文では使用できません。
  • SUBSTR関数の2番目のパラメータとして負の数値が使用されている場合、不正な結果が返されます。 これは、Oracle SUBSTR関数とSQL Serverの同等の関数の互換性がないためです。

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

SQL*Plus COPYコマンドを小文字の表名とともに使用する場合は、表名を二重引用符で囲みます。

たとえば:

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

2.10.11 データベース・リンク

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

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