次の方法で共有


Oracle スキーマの変換 (OracleToSQL)

Oracle に接続し、SQL Server に接続し、プロジェクトとデータ マッピングのオプションを設定したら、Oracle データベース オブジェクトを SQL Server データベース オブジェクトに変換できます。

変換プロセス

データベース オブジェクトの変換では、MySQL からオブジェクト定義を取得し、類似の SQL Server オブジェクトに変換後、この情報を SSMA メタデータに読み込みます。 情報は、SQL Server のインスタンスには読み込まれません。 その後、SQL Server メタデータ エクスプローラーを使用して、オブジェクトとそのプロパティを表示できます。

変換中に SSMA によって、出力メッセージは出力ペイン、エラー メッセージはエラー一覧ペインに出力されます。 出力とエラー情報を使用して、目的の変換結果を取得するために MySQL データベースまたは変換プロセスを変更する必要があるかどうかを判断します。

変換と移行のオプションの設定

オブジェクトを変換する前に、[プロジェクト設定] ダイアログ ボックスのプロジェクト変換オプションを確認します。 このダイアログ ボックスを使用すると、SSMA が関数とグローバル変数を変換する方法を設定できます。 詳細については、「プロジェクト設定 (変換) (OracleToSQL)」を参照してください。

変換結果

次の表は、変換される Oracle オブジェクトと、結果の SQL Server オブジェクトを示しています。

Oracle オブジェクト 結果の SQL Server オブジェクト
関数 関数を Transact-SQL に直接変換できる場合は、SSMA によって関数が作成されます。

場合によっては、関数をストアド プロシージャに変換する必要があります。 この場合、SSMA によってストアド プロシージャが作成され、ストアド プロシージャを呼び出す関数が作成されます。
手順 プロシージャを Transact-SQL に直接変換できる場合は、SSMA によってストアド プロシージャが作成されます。

場合によっては、自律的なトランザクション内でストアド プロシージャを呼び出す必要があります。 この場合は、SSMA によって 2 つのストアド プロシージャが作成されます。1 つはプロシージャを実装するストアド プロシージャで、もう 1 つは実装ストアド プロシージャを呼び出すために使用されるものです。
パッケージ SSMA により、類似したオブジェクト名で統合される一連のストアド プロシージャと関数が作成されます。
シーケンス SSMA により、シーケンス オブジェクト (SQL Server 2012 または SQL Server 2014) が作成されるか、Oracle シーケンスがエミュレートされます。
インデックスやトリガーなどの依存オブジェクトを含むテーブル SSMA によって、依存オブジェクトを含むテーブルが作成されます。
トリガーなどの依存オブジェクトを含むビュー SSMA によって、依存オブジェクトを含むビューが作成されます。
具体化されたビュー SSMA によって、いくつかの例外を除き、SQL サーバー上にインデックス付きビューが作成されます。 具体化されたビューに以下の構成要素が 1 つ以上含まれている場合、変換は失敗します。

ユーザー定義関数

SELECT、WHERE、または GROUP BY 句での非決定的フィールド、関数、式

SELECT*、WHERE、または GROUP BY 句での Float 型列の使用 (以前の問題の特殊なケース)

カスタム データ型 (入れ子になったテーブルを含む)

COUNT(distinct <フィールド>)

FETCH

外部結合 (LEFT、RIGHT、または FULL)

サブクエリ、その他のビュー

OVER、RANK、LEAD、LOG

MIN、MAX

UNION、MINUS、INTERSECT

HAVING
トリガー SSMA では、以下のルールに基づいて、トリガーが作成されます

BEFORE トリガーは INSTEAD OF トリガーに変換されます。

AFTER トリガーは AFTER トリガーに変換されます。

INSTEAD OF トリガーは INSTEAD OF トリガーに変換されます。 同じ操作で複数の INSTEAD OF トリガーが定義されている場合は、1 つのトリガーに結合されます。

行レベルのトリガーはカーソルを使用してエミュレートされます。

BEFORE トリガーは INSTEAD OF トリガーに変換されます。 複数の複合トリガーが 1 つのトリガーに結合される

カスケード トリガーは複数の個別のトリガーに変換されます。
シノニム 以下の種類のオブジェクトに対して、シノニムが作成されます

テーブルとオブジェクト テーブル

ビューとオブジェクト ビュー

ストアド プロシージャ

関数

以下のオブジェクトのシノニムは解決され、直接オブジェクト参照に置き換えられます

シーケンス

パッケージ

Java クラス スキーマ オブジェクト

ユーザー定義オブジェクト型

別のシノニムのシノニムは移行できず、エラーとしてマークされます。

具体化されたビューに対して、シノニムは作成されません。
ユーザー定義型 SSMA では、ユーザー定義型の変換はサポートされていません。 PL/SQL プログラムでの使用を含め、ユーザー定義型は、以下の規則に従って、特殊な変換エラーとしてマークされます。

ユーザー定義型のテーブル列は、VARCHAR (8000) に変換されます。

ストアド プロシージャまたは関数に対するユーザー定義型の引数は、VARCHAR (8000) に変換されます。

PL/SQL ブロック内のユーザー定義型の変数は、VARCHAR (8000) に変換されます。

オブジェクト テーブルは、標準テーブルに変換されます。

オブジェクト ビューは、標準ビューに変換されます。

Oracle データベース オブジェクトを変換する

Oracle データベース オブジェクトを変換するには、最初に変換するオブジェクトを選択してから、SSMA で変換を実行します。 変換中に出力メッセージを表示するには、[表示] メニューの [出力] を選択します。

Oracle オブジェクトを SQL Server 構文に変換するには

  1. Oracle メタデータ エクスプローラーで、Oracle サーバーを展開し、[スキーマ] を展開します。

  2. 変換するオブジェクトを選択します。

    • すべてのスキーマを変換するには、[スキーマ] の横にあるチェック ボックスをオンにします。

    • データベースを変換または省略するには、スキーマ名の横にあるチェック ボックスをオンにします。

    • オブジェクトのカテゴリを変換または省略するには、スキーマを展開し、カテゴリの横にあるチェック ボックスをオンまたはオフにします。

    • 個々のオブジェクトを変換または省略するには、カテゴリ フォルダーを展開し、オブジェクトの横にあるチェック ボックスをオンまたはオフにします。

  3. 選択したすべてのオブジェクトを変換するには、[スキーマ] を右クリックし、[スキーマの変換] を選択します。

    オブジェクトまたはそのフォルダーを右クリックし、[スキーマの変換] を選択して、個々のオブジェクトまたはオブジェクトのカテゴリを変換することもできます。

変換の問題の表示

一部の Oracle オブジェクトは変換されない場合があります。 コンバージョンの成功率を確認するには、サマリー変換レポートを表示します。

要約レポートを表示するには

  1. Oracle メタデータ エクスプローラーで、[スキーマ を選択します。

  2. 右側のペインで [レポート] タブを選択します。

    このレポートには、評価または変換されたすべてのデータベース オブジェクトの概要評価レポートが表示されます。 個々のオブジェクトの概要レポートを表示することもできます。

    • 個々のスキーマのレポートを表示するには、Oracle メタデータ エクスプローラーでスキーマを選択します。

    • 個々のオブジェクトのレポートを表示するには、Oracle メタデータ エクスプローラーでオブジェクトを選択します。 変換に問題があるオブジェクトには、赤いエラー アイコンがあります。

変換に失敗したオブジェクトの場合は、変換エラーの原因になった構文を表示できます。

個々の変換の問題を表示するには

  1. Oracle メタデータ エクスプローラーで、[スキーマ を展開します。

  2. 赤いエラー アイコンを示すスキーマを展開します。

  3. スキーマの下で、赤いエラー アイコンがあるフォルダーを展開します。

  4. 赤いエラー アイコンが表示されているオブジェクトを選択します。

  5. 右ペインで、 [レポート] をクリックします。

  6. [レポート] タブの上部にはドロップダウン リストがあります。 一覧に [統計] が表示されている場合は、選択内容を [ソース] に変更します。

    SSMA では、ソース コードと、コードのすぐ上に複数のボタンが表示されます。

  7. [次の問題] ボタンをクリックします。 これは、右を指す矢印が付いた赤いエラー アイコンです。

    SSMA では、現在のオブジェクトで見つかる最初の問題のあるソース コードが強調表示されます。

変換できなかった項目ごとに、そのオブジェクトで何を行うかを決定する必要があります。

  • プロシージャのソース コードは、[SQL] タブで編集できます。

  • Oracle データベース内のオブジェクトを変更して、問題のあるコードを削除または修正できます。 更新されたコードを SSMA に読み込むには、メタデータを更新する必要があります。 詳細については、「Oracle データベースへ接続 (OracleToSQL)」を参照ください。

  • 移行からオブジェクトを除外できます。 SQL Server メタデータ エクスプローラーと Oracle メタデータ エクスプローラーで、その項目の隣にあるチェックボックスをクリアにしてから、SQL Server にオブジェクトを読み込んで Oracle からデータを移行します。

次の手順

移行プロセスの次の手順は、SQL Server へ変換されたテーブルを読み込むです。

参照

SQL Server への Oracle データベースの移行 (OracleToSQL)