この章では、次の項目について説明します。
Oracle SQL Developer 3.2のDBAナビゲータを使用して、トランスレータと翻訳プロファイルをインストールおよび管理できます。
この項の内容は次のとおりです。
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ユーザーズ・ガイド』を参照してください。
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は、任意のORACLE_HOME\client
ディレクトリにあるJDBCドライバを自動で使用します。この動作をオーバーライドしてOracle SQL Developerがsqldeveloper\jdbc\lib
ディレクトリのJDBCドライバを使用するようにするには、次の内容の新しいsqldeveloper.bat
ファイルをsqldeveloper
ディレクトリに作成します。
set ORACLE_HOME=%CD% start sqldeveloper.exe
sqldeveloper.bat
ファイルを実行して、Oracle SQL Developerを実行します。
JDBCドライバ構成を確認するには、次の手順を実行します。
「ヘルプ」メニューから、「概要」を選択します。
「プロパティ」を選択します。図3-1に示すように、構成が表示されます。
図3-2に示すように、資格証明を使用してデータベースへの接続を作成します。
次のコマンドを使用して、接続先のデータベースと、使用されるJDBCドライバを確認できます。
show jdbc
移行プリファレンスの設定
移行プリファレンスを次の方法で設定する必要があります。
「ツール」メニューから、「プリファレンス」を選択します。
図3-3に示すように、左パネルの「移行」オプションから「生成オプション」を選択します。
次の手順を実行して、Sybase SQLトランスレータが適切にインストールされているかどうかを判断します。
Oracle SQL Developerを開きます。
「ツール」メニューから、「移行」、「翻訳スクラッチ・エディタ」の順に選択します。
「スクラッチ・エディタ」ツールバーで、Sybase T_SQLからPL/SQLオプションを選択します。これは、Sybaseトランスレータです。
「スクラッチ・エディタ」の左パネルで、次の問合せをSybase SQL言語で入力します。
select top 10 * from dual
「翻訳」アイコンをクリックします。
翻訳した問合せテキストが、エディタの右パネルに表示されます。
Oracle SQL DeveloperはOracle Databaseリリース12cに付属しています。約15MBのSybaseトランスレータのJavaクラスをOracle Databaseにロードします。ロードされるJavaクラスのサイズと数の点から、トランスレータをWAN経由ではなく、ローカルでインストールすることをお薦めします。
移行リポジトリがすでにあるユーザー・プロファイルにトランスレータがインストールされる場合、トランスレータは、データベースのコンテキスト(名前変更など)を取り出します。そのため、次の指定内容で新しいユーザーを作成する必要があります。
CONNECT
、RESOURCE
およびCREATE VIEW
権限
SYSTEM
またはUSER
表領域(あるいはその両方)の記憶域へのアクセス
SQLトランスレータをインストールするには、次の手順を実行します。
ADMIN
権限を使用して、データベースにログインします。
コマンドラインで、次のコマンドを入力します。
GRANT CONNECT, RESOURCE, CREATE VIEW TO TranslUser identified by TranslUser; ALTER USER TranslUser QUOTA UNLIMITED ON SYSTEM;
「ビュー」メニューで、「DBA」を選択します。
「DBAナビゲータ」で、「接続」を右クリックして、「接続の追加」を選択します。
「接続の選択」ボックスで、既存の接続を使用する場合は接続を選択します。新しい接続を作成する場合は、手順2で説明したtransluser
の情報を追加します。
「接続」をクリックします。
「DBAナビゲータ」で、前の手順で作成した接続を右クリックして、「SQLトランスレータのインストール」を選択します。
「SQLトランスレータのインストール」ダイアログ・ボックスが開きます。
SQLトランスレータをインストールしてSQL翻訳プロファイルを作成するには、特定の権限が必要です。SYS
パスワードの指定が求められます。これにより、これらの権限を付与できます。これらの権限の詳細は、「SQLトランスレータのインストールに必要な権限の付与」を参照してください。
「翻訳プロファイルの作成」に説明されている手順に従って、SQL翻訳プロファイルを作成します。
ユーザーに、翻訳プロファイルを実行する十分な権限があることを確認します。
追加の権限を付与するには、SYS
ユーザーとしてログインする必要があります。
SQLトランスレータをインストールします。
プロファイルとトランスレータがどちらも適切にインストールされていることを確認するには、適切なパッケージとJavaクラス・ファイルが「接続」ペインにあるかどうかを検証します。
翻訳プロファイルを作成するには、次の手順を実行します。
「SQLトランスレータ」ドロップダウン・ボックスで、「Sybase」または「SQLトランスレータ」を選択します。
「新規プロファイルの作成」を選択します。
「プロファイル名」フィールドに、SYBASE_PROFILE
と入力します。
「プロファイル・スキーマ」で、「翻訳プロファイルの作成とSQLトランスレータのインストール」の項で作成したユーザーの名前を選択します。
「適用」をクリックします。
SQL翻訳プロファイルをテストするには、次のようにSQLワークシートを使用します。
SYBASE_PROFILE
ノードを右クリックします。
「プロファイルとともにSQLワークシートを開く」を選択します。
翻訳するT-SQL文を入力します。
SYBASE_PROFILE
をクリックし、「SQL翻訳」タブを選択してプロファイルを調べて、翻訳された文を表示します。
プロファイルのSQLをダブルクリックすると、そのSQLを詳細に表示できます。次の図に示すように、フィンガープリントとテンプレートが「翻訳スクラッチ・エディタ」で開きます。
次の各項では、コマンドラインからのSQL翻訳フレームワークのインストールと構成の方法について説明します。
Oracle Sybaseトランスレータをインストールするには、「Oracle SQL DeveloperによるSQL翻訳フレームワークのインストールと構成」の説明に従い、Oracle SQL Developerを使用します。
次の手順を実行して、コマンドライン・インタフェースからSQL翻訳プロファイルを設定します。
system
ユーザーとしてログインします。
> sqlplus system/<password>
作成権限を標準ユーザーに付与します。
これにより、標準ユーザーはSQL翻訳プロファイルを作成できます。
SQL> grant create sql translation profile to <user>;
標準ユーザーとしてログインします。
sqlplus <user>/<password>
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')
SQL翻訳プロファイルのすべての権限を、Oracle Sybase翻訳スキーマに付与します。
SQL> grant all on sql translation profile sybase_profile to migration_repo;
この項では、標準環境やOracle Real Application Clusters環境でのデータベース・サービスの追加方法について説明します。
標準環境でのデータベース・サービスの設定
標準環境でデータベース・サービスを設定するには、次の手順を実行します。
DBAとしてログインします
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でデータベース・サービスを設定するには、次の手順を実行します。
データベース・サービスを追加します。
srvctl add service -db db_name -service sybase_service -sql_translation_profile user.sybase_profile
データベース・サービスを起動します。
srvctl start service -db db_name -service sybase_service
次の手順を実行して、翻訳をテストします。
標準ユーザーとしてログインします。
sqlplus user/password
SQLプロンプトでSQL翻訳プロファイルを指定します。
SQL> alter session set sql_translation_profile = sybase_profile;
データベースに、SQL*Plusを外部SQLアプリケーションとして処理するように強制します。
SQL> alter session set events = '10601 trace name context forever, level 32';
Sybase SQL言語を使用するSQL問合せを実行します。たとえば、次のようになります。
select top 3 * from emp;
問合せは、次の結果を戻します。
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トランスレータのインストールに必要な権限について説明します。ここで作成したSYBASE_PROFILE
には、次の2人のユーザーが含まれます。
MIGREP
、トランスレータがインストールされます
TARGET_USER
、プロファイルがインストールされます
SQLトランスレータのインストールに必要な権限を付与するには、次の手順を実行します。
SYS
として接続して、必要な権限を付与します。
connect sys/oracle as sysdba
MIGREP
にビューの作成を許可し、無制限の割当てを付与します。
GRANT connect, resource, create view to MIGREP; ALTER USER MIGREP QUOTA UNLIMITED ON USERS;
TARGET_USER
にビューの作成を許可し、無制限の割当てを付与します。
GRANT connect, resource, create view to TARGET_USER; ALTER USER MIGREP QUOTA UNLIMITED ON TARGET_USER;
MIGREP
にSQLトランスレータのロードを許可します。
BEGIN DBMS_JAVA.GRANT_PERMISSION(UPPER('MIGREP'), 'SYS:java.lang.RuntimePermission', 'getClassLoader', ''); END; /
TARGET_USER
にプロファイルの作成を許可します。
GRANT CREATE SQL TRANSLATION PROFILE TO TARGET_USER;
TARGET_USER
に、プロファイルを使用するためのセッションの明示的な変更を許可します。
GRANT ALTER SESSION TO TARGET_USER;
この権限はSQL Developerでデフォルトでは付与されません。
トランスレータにプロファイルの参照を許可します。
CONNECT TARGET_USER/TARGET_USER; GRANT ALL ON SQL TRANSLATION PROFILE SYBASE_PROFILE TO MIGREP;
プロファイルにトランスレータの参照を許可します。
CONNECT MIGREP/MIGREP; GRANT EXECUTE ON SYBASE_TSQL_TRANSLATOR TO TARGET_USER;