2 Oracle Database Gateway for ODBCの機能および制限事項
ゲートウェイがインストールおよび構成された後、ゲートウェイを使用して、Oracle以外のシステムのデータにアクセスすること、アプリケーションからOracle以外のシステムにネイティブ・コマンドを渡すこと、分散問合せを実行すること、およびデータをコピーすることができます。
トピック:
- パススルー機能の使用
ゲートウェイでは、DBMS_HS_PASSTHROUGH
パッケージを使用して、アプリケーションからOracle以外のシステムにネイティブ・コマンドまたは文を渡すことができます。 - AUTO COMMITの使用
Oracle以外の一部のデータベースは、ロギングなしで動作します。このような環境で読取り専用機能が必要な場合は、HS_TRANSACTION_MODEL
ゲートウェイ・パラメータを設定する必要があります。 - 既知の制限事項
この項または「既知の問題点」で示されていない非互換性の問題が発生した場合は、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
を指定することをお薦めします。
関連項目:
DBMS_HS_PASSTHROUGH
パッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』および『Oracle Database Heterogeneous Connectivityユーザーズ・ガイド』を参照してください。
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はサポートされません
トピック:
- PL/SQLカーソル・ループのCOMMITまたはROLLBACKによるオープン・カーソルのクローズ
PL/SQLカーソル・ループで発行されたCOMMIT
またはROLLBACK
は、すべてのオープン・カーソルをクローズするため、エラーが発生する可能性があります。 - SQL構文の制限事項
Oracle Database Gateway for ODBCでは、SQL構文に制限事項があります。 - CALLBACKリンクのサポート
Oracle Database Gateway for ODBCでは、CALLBACK
リンクはサポートされません。
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.4 EXPLAIN PLAN文
EXPLAIN PLAN
文はサポートされていません。
-
小文字の表名を使用するSQL*Plusの
COPY
コマンド小文字の表名は二重引用符で囲みます。
例:
copy from tkhouser/tkhouser@inst1 insert loc_tkhodept using select * from "tkhodept"@holink2;
-
データベース・リンク
ゲートウェイはマルチスレッド化されていないため、共有データベース・リンクをサポートできません。ゲートウェイ・セッションはそれぞれ別のゲートウェイ・プロセスを起動し、接続は共有されません。
関連項目:
SQL構文に関する制限事項の詳細は、「サポート対象のSQL構文および関数」を参照してください。
2.4 既知の問題点
この項では、既知の問題点について説明し、可能な場合は問題を修正するための提案を示します。問題についての疑問は、Oracleサポート・サービスに問い合せてください。
トピック:
- 暗号化形式のログイン
Oracleデータベースでは、パスワードが自動的に暗号化されます。 - 日付計算
このトピックでは、ゲートウェイで正しく機能しないSQL式について説明します。
2.4.1 暗号化形式のログイン
Oracleデータベースでは、パスワードが自動的に暗号化されます。
Oracleデータベースでは、初期化パラメータDBLINK_ENCRYPT_LOGIN
はサポートされなくなりました。バージョン7.3までは、このパラメータのデフォルトのTRUE
値は、ログイン・ユーザーIDのパスワードがネットワーク上に(クリア・テキストで)送信されることを防ぎました。それより後のバージョンでは、パスワードが自動的に暗号化されます。