ヘッダーをスキップ
Oracle® Database移行ガイド
12cリリース1 (12.1)
B71352-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

3 SQL翻訳フレームワークの構成

この章では、次の項目について説明します。

Oracle SQL DeveloperによるSQL翻訳フレームワークのインストールと構成

Oracle SQL Developer 3.2のDBAナビゲータを使用して、トランスレータと翻訳プロファイルをインストールおよび管理できます。

この項の内容は次のとおりです。

Oracle SQL Developer移行サポートの概要

SQL翻訳フレームワークは、Oracle Databaseインストールの一部としてインストールされます。ただし、アプリケーションのOracle以外のSQL言語を認識するよう構成する必要があります。フレームワークを完全に機能させるには、1つ以上のトランスレータをインストールする必要があります。

SQL翻訳機能を使用する前に、データ、スキーマ、ストアド・プロシージャ、トリガーおよびビューを移行しておく必要があります。Oracleは、Oracle SQL Developer機能によって、データベースのスキーマとデータの移行を実装します。Oracle SQL Developerでは、移行ウィザードを使用することで、Oracle以外のデータベースからOracle Databaseへの移行プロセスが簡単になります。移行ウィザードによって、データベースの移行に関連する全フェーズに利便性と包括的なガイダンスが提供されます。

Oracle SQL Developerは、Oracle以外のソース・データベースから情報を取得し、その情報を取得モデルに表します。取得モデルは、ソース・データベースの構造表現です。この表現は移行リポジトリに格納されます。移行リポジトリは、Oracle SQL Developerが移行情報の格納に使用するスキーマ・オブジェクトの集合です。

リポジトリに格納されている情報を使用して、変換モデルが生成されます。変換モデルは、Oracleデータベースで実装される移行先データベースの構造表現です。この後、取得モデルおよび変換モデルの情報を使用して、データベース・オブジェクトの比較、Oracle予約語との競合の確認および移行の進捗状況の管理を行うことができます。移行の準備が整ったら、Oracleスキーマ・オブジェクトを生成して、データを移行します。

この項では、自動ランタイム移行を可能にする後続タスクの実行方法について説明します。これらの例は、Sybaseデータベースに対して実行されるJDBCアプリケーションでSQLトランスレータを使用する場合のものですが、他のクライアント/データベース構成に対して簡単に適応できます。Oracle SQL Developerは、Sybaseトランスレータがインストールされた状態で出荷されることに注意してください。

詳細は、『Oracle SQL Developerユーザーズ・ガイド』を参照してください。

WindowsのOracle SQL Developer 3.2の設定

Oracle SQL Developer 3.2は、Oracle Database 11g JDBCドライバに付属し、このリリースではWindows用のクライアントはありません。Windowsシステムを使用している場合、Oracle Database 12c JDBCドライバを使用するようにOracle SQL Developer 3.2を有効にする必要があります。これにより、現在のリリースの機能がすべて有効になります。それには、次の手順を実行します。

  • sqldeveloper\jdbc\libフォルダの名前をsqldeveloper\jdbc\lib_11gに変更します。

  • 新しい空のフォルダsqldeveloper\jdbc\libを作成します。

  • Oracle Database 12cリリース1 JDBC JARファイルを、新しいsqldeveloper\jdbc\libフォルダに解凍します。

    Oracle Database 12cリリース1 JDBCファイルの詳細は、『Oracle Database JDBC開発者ガイド』を参照してください。

Oracle SQL Developer 3.2の起動の設定

Oracle SQL Developerは、任意のORACLE_HOME\clientディレクトリにあるJDBCドライバを自動で使用します。この動作をオーバーライドしてOracle SQL Developerがsqldeveloper\jdbc\libディレクトリのJDBCドライバを使用するようにするには、次の内容の新しいsqldeveloper.batファイルをsqldeveloperディレクトリに作成します。

set ORACLE_HOME=%CD%
start sqldeveloper.exe

Oracle SQL Developerの起動

sqldeveloper.batファイルを実行して、Oracle SQL Developerを実行します。

JDBCドライバ構成を確認するには、次の手順を実行します。

  1. 「ヘルプ」メニューから、「概要」を選択します。

  2. 「プロパティ」を選択します。図3-1に示すように、構成が表示されます。

    図3-1 Oracle SQL DeveloperのJDBC構成の確認

    SQL DeveloperのJDBC構成の確認
    「図3-1 Oracle SQL DeveloperのJDBC構成の確認」の説明

Oracle Databaseへの接続の作成

図3-2に示すように、資格証明を使用してデータベースへの接続を作成します。

図3-2 Oracle Database接続の作成

図3-2の説明が続きます
「図3-2 Oracle Database接続の作成」の説明

次のコマンドを使用して、接続先のデータベースと、使用されるJDBCドライバを確認できます。

show jdbc

移行プリファレンスの設定

移行プリファレンスを次の方法で設定する必要があります。

  1. 「ツール」メニューから、「プリファレンス」を選択します。

  2. 図3-3に示すように、左パネルの「移行」オプションから「生成オプション」を選択します。

図3-3 Oracle SQL Developerでの移行プリファレンスの設定

図3-3の説明が続きます
「図3-3 Oracle SQL Developerでの移行プリファレンスの設定」の説明

SQL翻訳のテスト

次の手順を実行して、Sybase SQLトランスレータが適切にインストールされているかどうかを判断します。

  1. Oracle SQL Developerを開きます。

  2. 「ツール」メニューから、「移行」「翻訳スクラッチ・エディタ」の順に選択します。

    SQL翻訳のテスト
    図sql_dev_01.gifの説明

  3. 「スクラッチ・エディタ」ツールバーで、Sybase T_SQLからPL/SQLオプションを選択します。これは、Sybaseトランスレータです。

    SQL翻訳のテスト
    図sql_dev_02.gifの説明

  4. 「スクラッチ・エディタ」の左パネルで、次の問合せをSybase SQL言語で入力します。

    select top 10 * from dual
    
  5. 「翻訳」アイコンをクリックします。

    翻訳した問合せテキストが、エディタの右パネルに表示されます。

    SQL翻訳のテスト
    図sql_dev_03.gifの説明

翻訳プロファイルの作成とSQLトランスレータのインストール

Oracle SQL DeveloperはOracle Databaseリリース12cに付属しています。約15MBのSybaseトランスレータのJavaクラスをOracle Databaseにロードします。ロードされるJavaクラスのサイズと数の点から、トランスレータをWAN経由ではなく、ローカルでインストールすることをお薦めします。

移行リポジトリがすでにあるユーザー・プロファイルにトランスレータがインストールされる場合、トランスレータは、データベースのコンテキスト(名前変更など)を取り出します。そのため、次の指定内容で新しいユーザーを作成する必要があります。

  • CONNECTRESOURCEおよびCREATE VIEW権限

  • SYSTEMまたはUSER表領域(あるいはその両方)の記憶域へのアクセス

SQLトランスレータのインストール

SQLトランスレータをインストールするには、次の手順を実行します。

  1. ADMIN権限を使用して、データベースにログインします。

  2. コマンドラインで、次のコマンドを入力します。

    GRANT CONNECT, RESOURCE, CREATE VIEW TO TranslUser identified by TranslUser;
    ALTER USER TranslUser QUOTA UNLIMITED ON SYSTEM;
    
  3. 「ビュー」メニューで、「DBA」を選択します。

    SQL DBAナビゲータ
    図sql_dev_04.gifの説明

  4. 「DBAナビゲータ」で、「接続」を右クリックして、「接続の追加」を選択します。

    sql_dev_05.gifの説明が続きます。
    図sql_dev_05.gifの説明

  5. 「接続の選択」ボックスで、既存の接続を使用する場合は接続を選択します。新しい接続を作成する場合は、手順2で説明したtransluserの情報を追加します。

    sql_dev_06.gifの説明が続きます。
    図sql_dev_06.gifの説明

  6. 「接続」をクリックします。

  7. 「DBAナビゲータ」で、前の手順で作成した接続を右クリックして、「SQLトランスレータのインストール」を選択します。

    sql_dev_07.gifの説明が続きます。
    図sql_dev_07.gifの説明

    「SQLトランスレータのインストール」ダイアログ・ボックスが開きます。

    SQLトランスレータをインストールしてSQL翻訳プロファイルを作成するには、特定の権限が必要です。SYSパスワードの指定が求められます。これにより、これらの権限を付与できます。これらの権限の詳細は、「SQLトランスレータのインストールに必要な権限の付与」を参照してください。

  8. 「翻訳プロファイルの作成」に説明されている手順に従って、SQL翻訳プロファイルを作成します。

  9. ユーザーに、翻訳プロファイルを実行する十分な権限があることを確認します。

    追加の権限を付与するには、SYSユーザーとしてログインする必要があります。

    sql_dev_09.gifの説明が続きます。
    図sql_dev_09.gifの説明

  10. SQLトランスレータをインストールします。

    sql_dev_10.gifの説明が続きます。
    図sql_dev_10.gifの説明

  11. プロファイルとトランスレータがどちらも適切にインストールされていることを確認するには、適切なパッケージとJavaクラス・ファイルが「接続」ペインにあるかどうかを検証します。

    sql_dev_11.gifの説明が続きます。
    図sql_dev_11.gifの説明

翻訳プロファイルの作成

翻訳プロファイルを作成するには、次の手順を実行します。

  1. 「SQLトランスレータ」ドロップダウン・ボックスで、「Sybase」または「SQLトランスレータ」を選択します。

  2. 「新規プロファイルの作成」を選択します。

  3. 「プロファイル名」フィールドに、SYBASE_PROFILEと入力します。

  4. 「プロファイル・スキーマ」で、「翻訳プロファイルの作成とSQLトランスレータのインストール」の項で作成したユーザーの名前を選択します。

  5. 「適用」をクリックします。

sql_dev_08.gifの説明が続きます。
図sql_dev_08.gifの説明

SQLトランスレータ・プロファイルの使用

SQL翻訳プロファイルをテストするには、次のようにSQLワークシートを使用します。

  1. SYBASE_PROFILEノードを右クリックします。

  2. 「プロファイルとともにSQLワークシートを開く」を選択します。

  3. 翻訳するT-SQL文を入力します。

    sql_dev_17.gifの説明が続きます。
    図sql_dev_17.gifの説明

  4. SYBASE_PROFILEをクリックし、「SQL翻訳」タブを選択してプロファイルを調べて、翻訳された文を表示します。

    sql_dev_14.gifの説明が続きます。
    図sql_dev_14.gifの説明

    プロファイルのSQLをダブルクリックすると、そのSQLを詳細に表示できます。次の図に示すように、フィンガープリントとテンプレートが「翻訳スクラッチ・エディタ」で開きます。

    sql_dev_15.gifの説明が続きます。
    図sql_dev_15.gifの説明

    sql_dev_16.gifの説明が続きます。
    図sql_dev_16.gifの説明

コマンドラインからのSQL翻訳フレームワークのインストールと構成

次の各項では、コマンドラインからのSQL翻訳フレームワークのインストールと構成の方法について説明します。

Oracle Sybaseトランスレータのインストール

Oracle Sybaseトランスレータをインストールするには、「Oracle SQL DeveloperによるSQL翻訳フレームワークのインストールと構成」の説明に従い、Oracle SQL Developerを使用します。

SQL翻訳プロファイルの設定

次の手順を実行して、コマンドライン・インタフェースからSQL翻訳プロファイルを設定します。

  1. systemユーザーとしてログインします。

    > sqlplus system/<password>
    
  2. 作成権限を標準ユーザーに付与します。

    これにより、標準ユーザーはSQL翻訳プロファイルを作成できます。

     SQL> grant create sql translation profile to <user>;
    
  3. 標準ユーザーとしてログインします。

    sqlplus <user>/<password>
    
  4. DBMS_SQL_TRANSLATOR PL/SQLパッケージのメソッドを呼び出して、翻訳プロファイルを作成および構成します。

    SQL> exec dbms_sql_translator.create_profile('sybase_profile')
    SQL> exec dbms_sql_translator.set_attribute('sybase_profile', 
         dbms_sql_translator.attr_translator, 
         'migration_repo.sybase_tsql_translator')
    
  5. SQL翻訳プロファイルのすべての権限を、Oracle Sybase翻訳スキーマに付与します。

    SQL> grant all on sql translation profile sybase_profile to migration_repo;
    

SQL翻訳プロファイルを使用するためのデータベース・サービスの設定

この項では、標準環境やOracle Real Application Clusters環境でのデータベース・サービスの追加方法について説明します。

標準環境でのデータベース・サービスの設定

標準環境でデータベース・サービスを設定するには、次の手順を実行します。

  1. DBAとしてログインします

  2. DBMS_SERVICE PL/SQLパッケージを使用してデータベース・サービスの作成および呼出しを行う次のコマンドを発行します。

    SQL> declare
      params dbms_service.svc_parameter_array;
    begin
      params('SQL_TRANSLATION_PROFILE') := 'user.sybase_profile';
      dbms_service.create_service('sybase_service', 'network_name', params);
      dbms_service.start_service('sybase_service');
    end;
    /
    

Oracle Real Application Clustersでのデータベース・サービスの設定

Oracle Real Application Clustersでデータベース・サービスを設定するには、次の手順を実行します。

  1. データベース・サービスを追加します。

    srvctl add service -db db_name -service sybase_service
    -sql_translation_profile user.sybase_profile
     
    
  2. データベース・サービスを起動します。

    srvctl start service -db db_name -service sybase_service
    

SQL翻訳プロファイルを使用したSybase SQL翻訳のテスト

次の手順を実行して、翻訳をテストします。

  1. 標準ユーザーとしてログインします。

    sqlplus user/password
    
  2. SQLプロンプトでSQL翻訳プロファイルを指定します。

    SQL> alter session set sql_translation_profile = sybase_profile;
    
  3. データベースに、SQL*Plusを外部SQLアプリケーションとして処理するように強制します。

    SQL> alter session set events = '10601 trace name context forever, level 32';
    
  4. Sybase SQL言語を使用するSQL問合せを実行します。たとえば、次のようになります。

    select top 3 * from emp;
    
  5. 問合せは、次の結果を戻します。

    EMPNO   ENAME    JOB        MGR   HIREDATE       SAL    COMM    DEPTNO
    ----------------------------------------------------------------------
    7369    SMITH     CLERK     7902  17-DEC-80      800                20
    7499    ALLEN     SALESMAN  7698  20-FEB-81     1600     300        30
    7521    WARD      SALESMAN  7698  22-FEB-81     1250     500        30
    

SQLトランスレータのインストールに必要な権限の付与

この項では、SQLトランスレータのインストールに必要な権限について説明します。ここで作成したSYBASE_PROFILEには、次の2人のユーザーが含まれます。

  • MIGREP、トランスレータがインストールされます

  • TARGET_USER、プロファイルがインストールされます

SQLトランスレータのインストールに必要な権限を付与するには、次の手順を実行します。

  1. SYSとして接続して、必要な権限を付与します。

    connect sys/oracle as sysdba
    
  2. MIGREPにビューの作成を許可し、無制限の割当てを付与します。

    GRANT connect, resource, create view to MIGREP;
    ALTER USER MIGREP QUOTA UNLIMITED ON USERS;
    
  3. TARGET_USERにビューの作成を許可し、無制限の割当てを付与します。

    GRANT connect, resource, create view to TARGET_USER;
    ALTER USER MIGREP QUOTA UNLIMITED ON TARGET_USER;
    
  4. MIGREPにSQLトランスレータのロードを許可します。

    BEGIN
      DBMS_JAVA.GRANT_PERMISSION(UPPER('MIGREP'), 'SYS:java.lang.RuntimePermission', 'getClassLoader', '');
    END;
    /
    
  5. TARGET_USERにプロファイルの作成を許可します。

    GRANT CREATE SQL TRANSLATION PROFILE TO TARGET_USER;
    
  6. TARGET_USERに、プロファイルを使用するためのセッションの明示的な変更を許可します。

    GRANT ALTER SESSION TO TARGET_USER;
    

    この権限はSQL Developerでデフォルトでは付与されません。

  7. トランスレータにプロファイルの参照を許可します。

    CONNECT TARGET_USER/TARGET_USER;
    GRANT ALL ON SQL TRANSLATION PROFILE SYBASE_PROFILE TO MIGREP;
    
  8. プロファイルにトランスレータの参照を許可します。

    CONNECT MIGREP/MIGREP;
    GRANT EXECUTE ON SYBASE_TSQL_TRANSLATOR TO TARGET_USER;