プライマリ・コンテンツに移動

Oracle® Data Provider for .NET開発者ガイド ODAC 12.2c リリース1 (12.2.0.1) for Microsoft Windows E88311-03 |
| 目次 | 索引

前 | 次 |

# データベース・アプリケーションの移行: SQL翻訳フレームワーク

Oracle以外のデータベース・アプリケーションからOracle Databaseへの移行の中心としては、Oracle以外のSQL文のOracle Databaseによって処理可能なSQL文への変換が必要です。SQLの変換は、一般的に手動で労力を要するプロセスです。労力を減らすために、Oracle Database 12cはSQL翻訳フレームワークを導入しました。これにより、クライアント・アプリケーションからのOracle以外のSQL文を取得し、実行時にOracle Databaseが実行するように翻訳します。

SQL翻訳フレームワークはOracle以外のストアド・プロシージャをOracleのストアド・プロシージャにマップするために使用でき、これによりOracle Databaseに移行する際にそうしたストアド・プロシージャが正常に実行できるようにします。

現在、SQL翻訳フレームワークはSybase Adaptive Server EnterpriseおよびMicrosoft SQL Serverで使用できます。IBM DB2のサポートには制限があります。

注意:

SQL翻訳フレームワークはODP.NET管理対象外ドライバでのみサポートされています。ODP.NET管理対象ドライバは、この機能をサポートしていません。

## SQL翻訳プロファイル

SQL翻訳プロファイルは、取得されたOracle以外のSQL文とその翻訳または翻訳エラーのセットを含むデータベース・オブジェクトです。SQL翻訳プロファイルを使用して、翻訳の確認、承認および変更を行います。プロファイルは1つのトランスレータと関連付けられています。ただし、1つのトランスレータは1つ以上のSQL翻訳プロファイルで使用できます。通常、アプリケーションごとに1つのSQL翻訳プロファイルがあります。あるいは、アプリケーションで翻訳された問合せを共有します。プロファイルは様々なデータベース間でエクスポートできます。

1. SQL翻訳プロファイル名の構成

   SQL翻訳フレームワークのデフォルトの翻訳プロファイル名は`app/web/machine` .NET構成ファイルを通じて構成できます。構成されている場合、接続は最初に作成されたときにデフォルトで自動的に指定したプロファイルに設定されます。

2. SQL翻訳プロファイル名の変更

   ODP.NETは、.NET構成ファイル、ログオン・トリガーまたはデータベース・サービスを介してプロファイル名の設定をサポートします。ODP.NETは、プロファイル名を設定するためにアプリケーションからの`ALTER SESSION`の使用をサポートしません。

3. 翻訳の強制

   アプリケーションでは、データベース上のすべてのSQLの翻訳を強制する次のSQLの実行は厳重に禁止されています。

       ALTER SESSION SET events = '10601 trace name context forever, level 32'

4. 接続関連エラー・マッピング

   接続関連エラー・マッピングは、.NET構成ファイルを通じて構成できます。このエラー・マッピングは、接続が正常に確立される前にスローされる可能性があるエラーに厳格に適用されることに注意してください。データベース接続が正常に確立されると、これらのエラー・マッピングは完全に無視され、データベースで構成されるエラー・マッピングを通じてさらにエラー翻訳が提供されます。

   構成ファイルでエラー・マッピング・セクションを選択するルールは次のようになります。

   1. ODP.NETは、構成された`userId`、`dataSource`およびプロファイルと一致するエラー・マッピング・セクションを使用します。ここで、`userId`および`dataSource`は接続する文字列の対応する値と一致し、プロファイルは`defaultProfile`構成設定と一致します。

   2. エラー・マッピング・セクションが4.a)で見つからない場合、ODP.NETは`defaultErrorMappingProfile`構成設定と一致するプロファイルを使用して、`userId`、`dataSource`および4.a)と類似するプロファイルをマッチングするエラー・マッピング・セクションを使用します。

   3. エラー・マッピング・セクションがそれでも見つからない場合、ODP.NETはグローバル・マッピング(つまり`<ErrorMapping profile="*">`)を使用します(構成されている場合)。

5. ストアド・プロシージャ・マッピング。

   アプリケーションは、データベースの翻訳プロファイルで、ネイティブ・ストアド・プロシージャ名を対応するOracleストアド・プロシージャ名にマップする必要があります。データベースでマッピングを設定するには、次の手順を使用できます。

       DBMS_SQL_TRANSLATOR.REGISTER_SQL_TRANSLATION(
           PROFILE_NAME    VARCHAR2    IN
           SQL_TEXT        CLOB        IN
           TRANSLATED_TEXT CLOB        IN     DEFAULT
           ENABLE          BOOLEAN     IN     DEFAULT)

   ストアド・プロシージャ・マッピングの例:

       DBMS_SQL_TRANSLATOR.REGISTER_SQL_TRANSLATION('profile_name',
        'native_sp_name',
        'oracle_sp_name');

関連項目:

詳細は、『Oracle Database移行ガイド』の第2章「SQL翻訳フレームワークの概要とアーキテクチャ」を参照してください。