次の方法で共有


Oracle スキーマの変換 (OracleToSQL)

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

変換プロセス

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

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

変換オプションを設定する

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

変換結果

次の表は、変換される 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 Server 上にインデックス付きビューが作成されます。 具体化されたビューに次のコンストラクトが 1 つ以上含まれている場合、変換は失敗します。

ユーザー定義関数。

SELECTWHERE、またはGROUP BY句の非決定的なフィールド、関数、または式。

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

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

COUNT (個別の <フィールド>)。

FETCH

OUTER 結合 (LEFTRIGHT、または FULL)。

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

OVERRANKLEAD、または LOG

MINMAX

UNIONMINUSINTERSECT

HAVING
トリガー SSMA は、次の規則に基づいてトリガーを作成します。

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

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

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

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

複合トリガーは、 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 Database への接続」を参照してください。
  • 移行からオブジェクトを除外できます。 SQL Server メタデータ エクスプローラーと Oracle メタデータ エクスプローラーで、項目の横にあるチェック ボックスをオフにします。 次に、オブジェクトを SQL Server に読み込み、Oracle からデータを移行します。