Oracle から PostgreSQL への移行

Visual Studio Code用 PostgreSQL 拡張機能は、Oracle スキーマとアプリケーション変換のガイド付きワークフローを提供します。 ウィザードでは、Oracle への接続、スキーマの選択、検出の確認、PostgreSQL スクラッチ データベースの選択、Microsoft Foundry の構成手順について説明します。 変換後、HTML レポートと変換オブジェクト エクスプローラーを確認し、セットアップ エクスペリエンスを使用して展開を準備します。 行データの移行は別途計画します。

Important

Oracle から PostgreSQL への移行ワークフローは、Visual Studio Codeでのみ使用できます。

スキーマ変換とアプリケーション変換の連携

この拡張機能は、Oracleワークロードを2段階で変換します。 スキーマ変換は最初に実行され、データベース オブジェクトの PostgreSQL データ定義言語 (DDL) が生成されます。 アプリケーション変換は後で実行され、それらのオブジェクトを呼び出すコードを更新します。

スキーマ変換

スキーマ変換は、選択したスキーマの Oracle データ ディクショナリを読み取り、お使いの Microsoft Foundry デプロイを使用して PostgreSQL DDL を生成します。 このツールはスクラッチ データベースでコンパイルを試み、使用可能な静的チェックを使用して問題を特定します。 これらのチェックでは、同等のランタイム動作や本番運用の準備性は確立されません。 実行すると、次のものが生成されます:

  • オブジェクト レベルの PostgreSQL .sql ファイル。Oracle スキーマとオブジェクトの種類別に整理されています。
  • 検出、抽出、変換結果、変換率、オブジェクト レベルのメモを含む HTML 変換レポート。
  • 変換オブジェクト エクスプローラーで検査できるオブジェクト マッピングとメモ (手動で変更する必要があるオブジェクトを含む)。
  • 別のデプロイ操作のセットアップ手順とスクリプト。
  • スキーマで見つかった Oracle パターンと PostgreSQL へのマッピング方法を説明するコーディング ノート。

アプリケーションの変換

アプリケーション変換は、データベースを囲む Oracle 固有のコード (SQL スクリプト、ストアド プロシージャ呼び出し、ローダー コントロール ファイル、シェル スクリプト、Java ファイル) を対象とします。 スキーマ変換からコーディングメモを入力として受け取るので、変換されたアプリケーション コードは、スキーマ変換によって実際に生成されたオブジェクト名、型、および呼び出し規則と整合します。

この拡張機能内でデータベース関連のアプリケーション コードを変換するか、全面的なモダナイゼーションのために GitHub Copilot アプリ モダナイゼーション拡張機能に作業を渡すことができます。

2 つのパスを順に実行する

最初にスキーマ変換を実行します。 アプリケーション変換では、スキーマ変換からのコーディング ノートと変換されたオブジェクト名が使用されます。 アプリケーション コードを変換する前に、スキーマを確認し、必要な変更に対応します。 後で PostgreSQL 定義を編集する場合は、アプリケーションの呼び出し元をもう一度確認してください。 完了したスキーマ変換の再実行はサポートされていません。

前提条件

始める前に、以下のことを確認してください:

  • Visual Studio Codeがインストールされています。
  • PostgreSQL 拡張機能がインストールされている。
  • スキーマ メタデータとディクショナリ ビューを読み取るアクセス許可を持つ Oracle ソース データベースへのアクセス。 行データ へのアクセスは必要ありません。
  • 保持する必要のない、空の、または専用で未使用のスクラッチ データベースを備えた Azure Database for PostgreSQL フレキシブル サーバー。 接続ユーザーは、一致するスキーマを削除して再作成し、検証オブジェクトを作成できる必要があります。 スキーマ変換では、スクラッチ データベースとして Azure HorizonDB はサポートされていません。
  • デプロイされたgpt-5.2 モデルと、1 分あたり 1,000,000 トークン (TPM) を超えるクォータを持つMicrosoft Foundry リソース。 エンドポイント URL と、アクセス権を持つ API キーまたはMicrosoft Entra ID アカウントが必要です。

オペレーティング システム、バージョン、アクセス許可、接続の要件については、 スキーマ変換のチュートリアルの前提条件を参照してください。

移行機能が有効になっていることを確認する

このpgsql.enableMigrations設定は、移行ビューとすべての移行コマンドを制御します。 既定では、この設定は有効になっています。

Migrations ビューがサイドバーに表示されない場合は、Visual Studio Code の設定(Windows/Linux では Ctrl+,、macOS では Cmd+,)を開き、pgsql.enableMigrationsがtrueに設定されていることを確認してください。

移行プロジェクトを作成する

移行プロジェクト ウィザードでは、プロジェクト ワークスペースを作成する前に、ソース、検出スコープ、スクラッチ データベース接続、および AI 構成を収集します。

手順 1: Projectセットアップ

  1. サイドバーでMigrationsビューを開きます。

  2. 次のいずれかの方法で新しいプロジェクトを開始します。

    • ワークスペースに移行projectがまだ含まれていない場合は、ビューで [+ 移行Projectの作成] を選択します。
    • ビュー ツール バーの [ + ] ボタンを選択します。
    • エクスプローラーでワークスペース フォルダーを右クリックし、[移行Projectを開く] を選択します。

    [New Oracle to Azure Database for PostgreSQL migration project]\(移行プロジェクトへの新しい Oracle\) ページが開き、必要なものが一覧表示されます。

    • ソース データベースの接続の詳細
    • 変換するスキーマの名前
    • Microsoft Foundry リソースのエンドポイント URL とキー
    • 既存のAzure Database for PostgreSQL インスタンスの接続名
  3. [Project名] フィールドに名前を入力します。

  4. [次へ: Oracle 接続] を選択します。

Project Name フィールドがある新しい移行プロジェクト ページのスクリーンショット。

手順 2: Oracle に接続する

[ Oracle への接続] ページでは、Oracle ソース データベースの資格情報が収集され、スキーマを読み込むことができます。

  1. Oracle接続フィールドに入力してください。

    フィールド 説明
    Oracle ホスト名 Oracle データベース サーバーのホスト名または IP アドレス。
    Oracle ポート リスナー ポート (既定値: 1521)。
    Oracle SID またはサービス名 データベース インスタンスの Oracle SID またはサービス名。
    Oracle ユーザー名 スキーマ メタデータとディクショナリ ビューにアクセスできるデータベース ユーザー。
    Oracle パスワード Oracle ユーザーのパスワード。
  2. [ スキーマの読み込み ] を選択して接続し、使用可能なスキーマの一覧を取得します。

  3. [ スキーマ ] ドロップダウン リストで、移行する 1 つ以上のスキーマを選択します。

  4. 次へ: Discovery を選択します。

手順 3: Discovery を確認する

検出では、DDL 抽出の前に、ソースのアクセス許可がチェックされ、選択したスキーマが一覧化されます。

  1. アクセス許可のチェックを確認し、不足しているソースへのアクセスを解消します。
  2. 検出済み、抽出対象、除外済み、無効なオブジェクトを、オブジェクトの種類の詳細と除外の理由と共に確認します。
  3. スキーマの依存関係を確認します。 依存スキーマには、選択しなかった参照先スキーマが一覧表示されます。依存項目を記載しても、そのスキーマは変換スコープに含まれません。
  4. ソースの範囲を確認してください。 選択内容を変更した場合は、先に進む前に検出を更新してください。
  5. 確認済みのスコープを承認し、次へ: PostgreSQL 接続 を選択します。

完全な Discovery 画面とガイダンスについては、チュートリアルで Discovery の結果を確認するを参照してください。

手順 4: Azure Database for PostgreSQLスクラッチ データベースを選択する

[Azure Database for PostgreSQLスクラッチ データベースの選択] ページでは、変換された DDL の検証に使用するデータベースが選択されます。

Warning

変換では、 DROP SCHEMA ... CASCADE を使用して選択した Oracle スキーマに対応するスキーマを削除し、再作成します。 このアクションにより、これらのスキーマ内の既存のオブジェクトとデータが削除され、他のスキーマの依存オブジェクトを削除できます。 空のスクラッチ データベース、または保持する必要があるオブジェクトやデータを含まない専用の未使用のスクラッチ データベースを使用します。

  1. [PostgreSQL 接続] ドロップダウン リストで、既存の接続プロファイルを選択します。 必要な接続が一覧にない場合は、[ プロファイルの更新 ] を選択して使用可能なプロファイルを再読み込みするか、最初に [接続と ID ] ビューで新しい接続を作成します。
  2. PostgreSQL データベースのドロップダウン リストで、ターゲット データベースを選択します。 一覧が空の場合は、[ データベースの読み込み ] を選択します。
  3. [ 拡張機能の確認 ] を選択して、推奨される拡張機能を確認します。 いずれかが不足している場合は、変換に必要な拡張機能をサーバーの許可リストに追加し、インストールします。 黄色の警告は継続をブロックしませんが、依存オブジェクトには手動による変更が必要な場合があります。
  4. 一致するスクラッチ スキーマが削除され、変換中に再作成されることを選択します。
  5. 次へ: Microsoft Foundry モデル構成 を選択します。

手順 5: Microsoft Foundry モデルを構成する

Microsoft Foundry モデルの選択ページでは、スキーマ変換とコード変換を支える Microsoft Foundryデプロイを設定します。

  1. 言語モデルの各フィールドに入力してください。

    フィールド 説明
    モデル名 gpt-5.2。
    Microsoft Foundry エンドポイント Microsoft Foundry リソース エンドポイント URL (たとえば、https://<resource>.openai.azure.com/)
    認証方法 [API キー] または [Microsoft Entra ID] を選択します。
    Microsoft Foundry API キー Microsoft Foundry リソースの API キー (認証方法が API キーの場合に表示されます)。
    Azure アカウント リソースへのアクセス権を持つMicrosoft アカウント (認証方法が Microsoft Entra ID の場合に表示されます)。
    テナント アカウントの Microsoft Entra テナント (認証方法が Microsoft Entra ID の場合に表示されます)。
    展開名 Microsoft Foundry リソースにデプロイされたモデルの名前。
  2. [Test Microsoft Foundry Connection]\(Foundry 接続のテスト\) を選択して接続を確認します。

  3. Create Migration Project を選択します。

1,000,000 TPM を超えるデプロイメント クォータを割り当てます。 Microsoft Foundry の容量を構成するを参照してください。

スキーマ移行を実行する

プロジェクトを作成したら、変換を実行し、移行プロジェクトで結果を確認します。

スキーマの抽出と変換

  1. 抽出と変換を開始するには、移行 を選択します。
  2. 抽出と変換の進行状況を監視します。
  3. プロジェクトに スキーマ変換が完了しました が表示されたら、変換の概要を確認 を選択します。

変換が完了すると、HTML レポートが自動的に開きます。 コンバージョンの概要でコンバージョン レポートを選択して、再度開きます。 検出、抽出、変換の合計値は、それぞれ個別に確認してください。これらは異なる段階を表しています。

変換されたオブジェクトを確認する

変換オブジェクト エクスプローラーを使用して、変換済みオブジェクトと未変換オブジェクトの両方を確認します:

  1. オブジェクトを開いて、Oracle と PostgreSQL の定義を比較し (使用可能な場合)、変換に関するメモを読みます。
  2. 説明を求めるには Ask を、その PostgreSQL ファイルを Copilot の支援で編集するには Fix を選択します。
  3. スキーマがすでに非本番データベースにデプロイされている場合は、アクティブなサーバーとデータベースを確認し、完全なステートメントを選択して、選択した部分のみを実行することで、そこで修正をコンパイルします。 そうでない場合は、まず次のセクションで説明されているデプロイを準備してください。
  4. デプロイ用SQLに、デプロイ予定の修正が含まれていることを確認してください。 オブジェクト ファイルを編集しても、そのデータベース オブジェクトまたは生成されたデプロイ スクリプトが変更されたことは確認されません。

フィルター、パッケージ メンバー、および詳細な手順については、「Conversion オブジェクト エクスプローラー」を参照してください。

デプロイを準備する

変換サマリーで、セットアップ手順を選択して、生成されたデプロイ手順を開き、セットアップ ディレクトリを表示します。 パッケージを確認し、検証専用のチェックを実行した後、生成されたデプロイスクリプトを別の非本番環境の移行先データベースに対して実行します。 セットアップ ファイルを生成しても、スキーマはデプロイされません。

本番環境での使用前に、デプロイメント レポートを確認し、データとアプリケーションの動作を別途検証してください。 前提条件、データベースモード、およびコマンドについては、セットアップ エクスペリエンスを使用した変換済みスキーマのデプロイを参照してください。

アプリケーション コードを移行する

スキーマの移行後、Oracle 固有のアプリケーション コード (SQL スクリプト、ストアド プロシージャ、ローダー コントロール ファイル、シェル スクリプト、またはJava ファイル) を PostgreSQL と互換性のある同等のコードに変換します。 アプリケーションの移行はプレビュー機能です。

移行方法を選択する

この拡張機能には、アプリケーション コード移行用の 2 つのパスが用意されています。

  • 完全なアプリ モダナイゼーション: GitHub Copilot のアプリ モダナイゼーション拡張機能をインストールしている場合は、アプリ モダナイゼーションを使用して移行 を選択して、スキーマ変換で生成されたコーディング ノートを使用しながら移行を続行します。 続行する前に、生成されたガイダンスを確認するには、[ コーディングノートの表示] を選択します。
  • データベース専用オプション: この拡張機能内でデータベース関連のアプリケーション コードのみを変換するには、[ PostgreSQL 拡張機能を使用して移行] を選択します。

拡張機能内のアプリケーション コードを変換する

  1. [アプリケーション移行] カードで、[データの移行] を選択します (アプリの最新化拡張機能が検出された場合は [方法の選択] を選択します)。
  2. [ アプリケーションの変換 ] ページで、[ 変換する Oracle アプリケーションの選択 ] を選択し、Oracle アプリケーション コードを含むフォルダーを選択します。
  3. 変換コンテキストとして PostgreSQL 接続 と PostgreSQL データベース を選択します。
  4. データベースの一覧が空の場合は、[データベースの 読み込み ] を選択します。
  5. [ アプリケーションの変換 ] を選択して変換を開始します。

アプリケーションの移行にCopilot ツールを使用する

拡張機能は、移行支援のために 2 つのCopilot言語モデル ツールを登録します。

  • Oracleクライアントコードアプリケーションコンバーター (pgsql_migration_oracle_app): プロンプトテンプレートとスキーマ移行分析のコーディングガイダンスを用いて、OracleクライアントアプリケーションコードをPostgreSQL対応のコードに変換します。 次のパラメーターを受け入れます。

    • アプリケーション コードベース フォルダー (必須): 変換対象のコードの場所。
    • コーディングノートのパス(任意): スキーマ移行時のコーディングノートへのパス。
    • Postgres DB 名 (省略可能): 変換コンテキスト用の PostgreSQL データベースの名前。
    • Postgres DB 接続 (省略可能): PostgreSQL データベースの接続名。
  • Oracle から Postgres への移行レポートを表示 (pgsql_migration_show_report): スキーマ変換によって生成された移行レポートを表示します。 レポート ファイルへのパス パラメーターが必要です。

Copilot ツールの使用方法の詳細については、Copilot統合を参照してください。

変換されたファイルを比較する

変換後は、組み込みの diff コマンドを使用して、変更を並べて確認します。

  1. エクスプローラーで、移行プロジェクトの oracle フォルダーまたは postgres フォルダーの下にある変換された SQL ファイルを右クリックし、[ DDL 移行ファイルペアの比較] を選択します。
  2. 変換されたアプリケーション コード ファイル (.sql、 .ctl、 .sh、 .load、または .java) の場合は、ファイルを右クリックし、[ アプリケーション移行ファイルペアの比較] を選択します。

サイド バイ サイドの差分ビューには、変換された PostgreSQL 出力と共に元の Oracle ソースが表示されるため、手動調整が必要な成果物を特定できます。

DDL 移行ファイルペアの比較コマンドでは、一致するペアを見つけるには構造folder/oracle|postgres/SCHEMA_NAME/DDL-TYPE/filename.sqlが必要です。 スキーマ変換の出力では、変換 オブジェクト エクスプローラー を使用して、ソースからターゲットへのマッピングを参照します。

移行プロジェクトを管理する

サイドバーの移行ビューを使用して、プロジェクトを管理します。

アクション 説明
移行Projectを開く ダッシュボードで既存の移行プロジェクトを開きます。
エクスプローラーで表示 エクスプローラー ビューにプロジェクト フォルダーを表示します。
削除 移行プロジェクトを削除します。 削除前に確認を求められます。
[更新] 現在のワークスペース内の移行プロジェクトの一覧を再読み込みします。