2 Oracle Database Gateway for ODBCの機能および制限事項

ゲートウェイがインストールおよび構成された後、ゲートウェイを使用して、Oracle以外のシステムのデータにアクセスすること、アプリケーションからOracle以外のシステムにネイティブ・コマンドを渡すこと、分散問合せを実行すること、およびデータをコピーすることができます。

トピック:

2.1 パススルー機能の使用

ゲートウェイでは、DBMS_HS_PASSTHROUGHパッケージを使用して、アプリケーションからOracle以外のシステムにネイティブ・コマンドまたは文を渡すことができます。

次のように、PL/SQLブロックのDBMS_HS_PASSTHROUGHパッケージを使用して、Oracle以外のシステムに渡す文を指定します。

DECLARE
    num_rows INTEGER;
BEGIN
    num_rows := DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@SYBS('command');
END;
/

commandには、次のいずれも使用できません。

  • BEGIN TRANSACTION

  • COMMIT

  • ROLLBACK

  • SAVE

  • SHUTDOWN

DBMS_HS_PASSTHROUGHパッケージでは、バインド値を渡すこと、およびSELECT文を実行することがサポートされています。

注意:

TRUNCATEはパススルー文では使用できません。

一般的なルールとして、Sybaseデータベースの場合は特に、パススルーで各DDL文の後にCOMMITを指定することをお薦めします。

2.2 AUTO COMMITの使用

一部のOracle以外のデータベースはロギングなしで動作します。このような環境で読取り専用機能が必要な場合は、HS_TRANSACTION_MODELゲートウェイ・パラメータを設定する必要があります。

HS_TRANSACTION_MODELパラメータは次のように設定できます。

HS_TRANSACTION_MODEL=READ_ONLY_AUTOCOMMIT

ただし、機能を更新する必要がある場合は、ゲートウェイ初期化パラメータ・ファイルでHS_TRANSACTION_MODEL=SINGLE_SITE_AUTOCOMMITを設定します。更新は即時にコミットされます。コミット確認は、ロギングなしで動作しているターゲットでは許可されません。

2.3 既知の制限

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

既知の制限事項を次に示します。

  • パススルー問合せはBLOBおよびCLOBデータを読み取ることができません

  • サポートされない関数がWHERE句に含まれる更新または削除は許可されません

  • Oracle Database Gateway for ODBCはストアド・プロシージャをサポートしません

  • 分散トランザクションには参加できません。単一サイト・トランザクションのみがサポートされます

  • マルチスレッド・エージェントはサポートされません

  • バインド変数でのLONG列の更新はサポートされません

  • 行IDはサポートされません

トピック:

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

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

次のエラーが発生する可能性があります。

ORA-1002:  fetch out of sequence 

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

2.3.2 SQL構文の制限事項

Oracle Database Gateway for ODBCでは、SQL構文に制限事項があります。

トピック:

2.3.2.1 WHERE CURRENT OF句

WHERE CURRENT OF句を含むUPDATEおよびDELETE文は、Oracle ROWIDの実装に依存しているため、ゲートウェイではサポートされていません。ゲートウェイを通じて特定の行を更新または削除するには、条件スタイルとしてWHERE句を使用する必要があります。

2.3.2.2 CONNECT BY句

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

2.3.2.3 ROWID

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

2.3.2.4 EXPLAIN PLAN文

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

  • 小文字の表名を使用するSQL*PlusのCOPYコマンド

    小文字の表名は二重引用符で囲みます。

    例:

    copy from tkhouser/tkhouser@inst1 insert loc_tkhodept using select * from "tkhodept"@holink2;
  • データベース・リンク

    ゲートウェイはマルチスレッド化されていないため、共有データベース・リンクをサポートできません。ゲートウェイ・セッションはそれぞれ別のゲートウェイ・プロセスを起動し、接続は共有されません。

関連項目:

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

2.3.3 CALLBACKリンクのサポート

Oracle Database Gateway for ODBCでは、CALLBACKリンクはサポートされません。

ゲートウェイでCALLBACKリンクを試行すると、次のエラー・メッセージが返されます。

ORA-02025: All tables in the SQL statement must be at the remote database

2.4 既知の問題点

この項では、既知の問題点について説明し、可能な場合は問題を修正するための提案を示します。問題についての疑問は、Oracleサポート・サービスに問い合せてください。

トピック:

2.4.1 暗号化形式のログイン

Oracleデータベースでは、パスワードが自動的に暗号化されます。

Oracleデータベースでは、初期化パラメータDBLINK_ENCRYPT_LOGINはサポートされなくなりました。バージョン7.3までは、このパラメータのデフォルトのTRUE値は、ログイン・ユーザーIDのパスワードがネットワーク上に(クリア・テキストで)送信されることを防ぎました。それより後のバージョンでは、パスワードが自動的に暗号化されます。

2.4.2 日付計算

このトピックでは、ゲートウェイで正しく機能しないSQL式について説明します。

date + number
number + date
date - number
date1 - date2

前述の式が指定された文は、変換されずにOracle以外のシステムに送信されます。Oracle以外のシステムでこれらの日付計算関数がサポートされていない場合、文はエラーを返します。