Oracle から Azure Database for PostgreSQL フレキシブル サーバーへのスキーマ変換とは何ですか。

Visual Studio Code PostgreSQL 拡張機能の Oracle から Azure Database for PostgreSQL へのスキーマ変換機能は、既存の Oracle データベース スキーマ オブジェクトを PostgreSQL と互換性のあるスキーマに変換するのに役立ちます。 この機能はリレーショナル スキーマ用に設計されており、フレキシブル サーバー用に変換されたスキーマAzure Database for PostgreSQL生成されます。

このツールは、スキーマ変換を自動化するためのプロジェクト ベースのユーザー インターフェイスを提供します。 変換レポートを確認し、変換オブジェクト エクスプローラーを使用して、オブジェクト定義と変換メモを調べます。 GitHub Copilotは、出力を説明し、手動で変更が必要なオブジェクトを編集するのに役立ちます。

Oracle から Azure Database for PostgreSQL へのスキーマ変換アーキテクチャの図。

アーキテクチャ

スキーマ変換プロセスには、複数のコンポーネントが連携する必要があります。

  • ソース Oracle データベース: 変換するスキーマを含む既存の Oracle データベース。
  • Visual Studio Code PostgreSQL 拡張機能: 変換プロセスを管理するためのプライマリ インターフェイス。
  • Azure Database for PostgreSQL フレキシブル サーバー: 検証とテストに使用されるスクラッチ スキーマをホストします。
  • Microsoft Foundry: AI 駆動型スキーマ変換を実行する言語モデルを提供します。
  • スキーマ変換エージェント: 自動化された変換プロセスを処理する AI を利用したエージェント。

どのように機能するのか

スキーマ変換プロセスでは、自動化された変換と人間の監視を組み合わせたインテリジェントなマルチステージ アプローチが使用されます。

  • 接続と検出: ツールは Oracle データベースに接続し、選択したスキーマ内のオブジェクトをインベントリします。 続行する前に、計画された抽出スコープ、除外、アクセス許可、依存関係を確認してください。
  • AI を利用した変換: スキーマ変換エージェントは、Microsoft Foundry でホストされている言語モデルを使用して、Oracle 固有のコンストラクトを PostgreSQL と互換性のある同等の構造に変換します。 AI では、コンテキスト、リレーションシップ、プラットフォームのベスト プラクティスが考慮されます。
  • スクラッチ データベースの検証: ツールは、選択したスクラッチ データベースで生成された定義のコンパイルを試み、使用可能な静的チェックを使用して変換の問題を特定します。 これらのチェックは、同等のアプリケーション動作を保証するものではません。
  • オブジェクト レビュー: HTML レポートと変換オブジェクト エクスプローラーには、変換結果、使用可能な定義、変換に関するメモが表示されます。 変換済みオブジェクトと未変換オブジェクトの両方を確認します。
  • ガイド付き修正: オブジェクトの変換を理解するには[質問する] を、Copilot の支援で編集するには [修正] を使用します。 変換されたスキーマがデプロイされているデータベースで、編集した定義群を手動でコンパイルします。
  • デプロイの準備: ツールによって PostgreSQL .sql ファイルとセットアップ手順が生成されます。 出力を確認し、セットアップ スクリプトを個別に実行してください。これらのファイルを生成しても、展開先にはデプロイされません。

拡張機能をインストールする

Oracle から PostgreSQL へのスキーマ変換機能は、Visual Studio Codeの PostgreSQL 拡張機能に組み込まれています。 別の拡張機能をインストールする必要はありません。

インストール手順

  1. 拡張機能 Marketplace を開く: Visual Studio Code で、左側のアクティビティ バーで [拡張機能] アイコンを選択するか、キーボード ショートカット Ctrl+Shift+X (Windows/Linux) または Cmd+Shift+X (macOS) を使用します。
  2. 拡張機能を検索する: 拡張機能 Marketplace の検索ボックスに、「 PostgreSQL (または拡張機能 ID ms-ossdata.vscode-pgsql)」と入力して拡張機能を検索します。
  3. 拡張機能のインストール: 検索結果で、Microsoft によって発行されたPostgreSQLを見つけて、Install を選択します。 Marketplace ではいくつかの PostgreSQL 拡張機能を使用できるため、インストールする前にパブリッシャーがMicrosoftであることを確認します。
  4. Access Schema Conversion: 拡張機能をインストールすると、Visual Studio Code アクティビティ バーに象アイコンが表示されます。 アイコンを選択して PostgreSQL 拡張機能を開き、スキーマ変換機能にアクセスします。

スキーマ変換ワークフロー

ワークフローは検出から始まり、抽出と変換が続きます。 このツールは、スクラッチ データベースで生成された PostgreSQL 定義を検証し、デプロイ ファイルを準備する前に Conversion オブジェクト エクスプローラー で結果を確認します。

発見

検出は、Oracle の接続とスキーマの選択の後、PostgreSQL スクラッチ データベース構成の前に行われます。 ソースのアクセス許可をチェックし、DDL を抽出せずにスキーマ オブジェクトをインベントリします。 カウントは、変換結果ではなく、ソース インベントリと計画された抽出を表します。

Result それがあなたに伝えるもの
発見済み 検出中に見つかったオブジェクト。
抽出される DDL抽出対象のオブジェクト。
除外 予定された抽出範囲から除外されたオブジェクト。
無効なオブジェクト 検出によって無効としてフラグが設定されたオブジェクト。

スコープを確認する前に、オブジェクトの種類のサポートと除外をスキーマの依存関係と共に確認してください。 依存スキーマには、選択されなかった参照先スキーマが一覧表示されます。 スキーマがこの一覧に表示されているからといって、それが変換スコープに含まれていることを意味するわけではありません。

詳細な手順については、 チュートリアルの探索結果の確認を参照してください。

抽出

抽出では、レビューされたソース スコープの Oracle DDL とメタデータが読み取られます。 抽出された定義は、変換への入力を提供します。抽出が成功しても、オブジェクトが変換されたわけではありません。

Conversion

スキーマ変換エージェントは、Microsoft Foundry のモデルを使用して、抽出された Oracle 定義を PostgreSQL DDL に変換し、スクラッチ データベースでのコンパイルを試みます。 Conversion オブジェクト エクスプローラー で変換されたオブジェクトと変換されていないオブジェクトの両方を確認し、デプロイ前に動作を個別に検証します。

スクラッチ データベース

変換の検証のために、Azure Database for PostgreSQL フレキシブル サーバー上の空のデータベースまたは使用されていない専用のデータベースを選択します。 このツールでは、選択した Oracle スキーマに対応するスキーマが使用されます。このツールによって、別のスクラッチ名プレフィックスを持つスキーマ内の既存のオブジェクトが分離されることはありません。

Warning

ツールは、DROP SCHEMA ... CASCADE に一致するスキーマを削除し、再作成します。 このアクションにより、それらの既存のオブジェクトとデータが削除され、他のスキーマ内の依存オブジェクトも削除される可能性があります。 保持する必要があるものが含まれているデータベースは選択しないでください。

接続ユーザーには、接続、スキーマと検証オブジェクトの作成、および一致するスキーマの削除を行うアクセス許可が必要です。 データベース レベルの CREATE だけでは、別のロールが所有するスキーマを削除する権限は付与されません。 必要な PostgreSQL 特権を参照してください。

コンパイルと静的チェックでは、この環境で構文、依存関係、型のエラーを特定できます。 彼らは、運用環境のデータ、アプリケーションの動作、またはすべてのランタイム パスをテストすることはありません。

変換オブジェクト エクスプローラー

Conversion オブジェクト エクスプローラーを使用して、ソースからターゲットへのマッピングを検査し、Oracle と PostgreSQL の定義を比較し、変換に関するメモを読み取ります。 オブジェクトの変換と依存関係の説明を求める場合は [質問する] を、その PostgreSQL ファイルに Copilot の支援を使用して変更を加えるには [修正] を選択します。 変換されたスキーマがデプロイされているターゲット データベースで、編集した定義を手動でコンパイルします。

詳細な手順については、「Conversion オブジェクト エクスプローラーで変換されたオブジェクトを確認する」を参照してください。

GitHub Copilot エージェントモード

GitHub Copilot エージェント モードは、変換されたオブジェクトを調整し、変換されたスキーマをアプリケーションの要件に合わせるために役立つガイド付きプロンプトを提供する統合されたVisual Studio Code機能です。 エージェント モードのオファー:

  • スキーマの変更に関するコンテキスト対応の提案。
  • Azure Database for PostgreSQL フレキシブル サーバーのベスト プラクティスに関する推奨事項。
  • 複雑な変換のコード補完。
  • 既存の開発ワークフローとの統合。

Oracle の接続モード

スキーマ変換ツールでは、ソース Oracle データベースに接続するために 2 つの接続モード、シン・モード と シック・モード、がサポートされています。 違いを理解することは、環境に適したモードを選択するのに役立ちます。

シンクライアントモード (デフォルト)

シン モードは、追加の Oracle クライアント ライブラリなしで Oracle Database に直接接続します。 このモードは既定であり、追加のセットアップは必要ありません。

  • Oracle インスタント クライアントのインストールは必要ありません。
  • Oracle Database 12.1 以降をサポートします。
  • ほとんどのスキーマ変換シナリオに適しています。
  • 標準の TCP/IP ネットワークを使用して接続します。

リッチクライアントモード

シック モードでは、Oracle インスタント クライアント ライブラリを使用して Oracle Database に接続します。 スキーマ変換ツールは、Oracle ネットワーク構成に基づいてシック モードが必要な場合を検出し、それに自動的に切り替えます。

シック クライアント モードが必要な場合

ソース環境の Oracle ネットワーク構成ファイルを調べて、シック クライアント モードが必要かどうかを判断できます。 sqlnet.ora ファイル (通常は $ORACLE_HOME/network/admin/ にあります) で、次のパラメーターを探します。

パラメーター 厚みモードが必要であることを示します
SQLNET.CRYPTO_CHECKSUM_CLIENT ネイティブ ネットワーク暗号化の REQUIRED または REQUESTED に設定する
SQLNET.ENCRYPTION_CLIENT ネイティブ ネットワーク暗号化の REQUIRED または REQUESTED に設定する

これらのパラメーターのいずれかがソース Oracle 環境で構成されている場合は、シック クライアント モードが必要です。 スキーマ変換ツールは、この構成を検出し、シック モードに自動的に切り替えます。 変換を開始する前に、Visual Studio Codeが実行されているコンピューターに Oracle インスタント クライアントがインストールされていることを確認します。

Oracle インスタント クライアントのインストール

シック クライアント モードを使用するには、Visual Studio Codeとスキーマ変換ツールが実行されているコンピューターに Oracle インスタント クライアントをインストールします。 サポートされているオペレーティング システムについては、チュートリアルのオペレーティング システム要件を参照してください。

  1. Oracle Instant Client のダウンロードから、お使いのオペレーティング システム用の Oracle Instant Client Basic または Basic Light パッケージをダウンロードします。 お使いのオペレーティング システムに対応し、変換環境のアーキテクチャに適合するパッケージを選択します。
  2. プラットフォーム固有のダウンロード ページに記載のインストール手順に従って、パッケージ、必要な依存関係、ライブラリの検索パス構成をインストールします。
  3. Visual Studio Code再起動して、更新された環境変数を取得します。

Microsoft Foundry の認証

スキーマ変換ツールでは、Microsoft Foundry の言語モデルに接続するための 2 つの認証方法がサポートされています。

API キー認証

API キー認証では、デプロイ固有のキーを使用して要求を承認します。 この方法は簡単で、開発とテストのシナリオに適しています。

Microsoft Entra ID 認証

Microsoft Entra ID認証を使用すると、API キーを管理することなく、トークンベースの ID ドリブンアクセスMicrosoft Foundry にアクセスできます。 この方法は、一元化された ID 管理を使用する運用環境および組織に推奨されます。

Microsoft Entra ID 認証を使用するには:

  1. 必要なロールの割り当て: サインインしているユーザーまたはサービス プリンシパルに、デプロイ モデルをホストする Microsoft Foundry リソースの Foundry User ロール (旧称 Azure AI User) があることを確認します。 Azure portal の [アクセス制御 (IAM)] でロールを割り当てます。 詳細については、Microsoft Foundry の ロールベースのアクセス制御 を参照してください。
  2. Visual Studio Code で Azure にサインインする: コマンド パレット () から Ctrl+Shift+P コマンドを使用して、Microsoft Entra ID アカウントを使用して認証します。
  3. Entra ID認証の選択: Migration ウィザード言語モデルの構成手順で、認証方法として API キー ではなく Microsoft Entra ID を選択します。
  4. エンドポイントの作成: Microsoft Foundry エンドポイントの URL を入力します。 このツールは、サインインしたセッションから認証トークンを自動的に取得します。

Microsoft Entra ID認証には、Visual Studio Codeの Azure Account 拡張機能が必要です。 拡張機能は、Microsoft Foundry リソースに適切なロールの割り当てを持つ ID でサインインする必要があります。

セキュリティとネットワーク

スキーマ変換機能を使用する場合は、Visual Studio Code 環境がソース Oracle データベースと、スクラッチ データベースとして使用する Azure Database for PostgreSQL フレキシブル サーバー インスタンスの両方に安全に接続できることを確認します。

Microsoftでは、プライベート エンドポイントを使用して Microsoft Foundry リソースに接続することをお勧めします。 詳細については、Microsoft Foundry のプライベート リンクを構成するを参照してください。

Microsoft Foundry 接続のセキュリティ保護の詳細については、「Microsoft Foundry の Azure Direct Models のデータ、プライバシー、セキュリティ」 を参照してください。

Visual Studio Codeがプライベート エンドポイントに接続する方法の図。

Important

顧客の検証責任: スキーマ変換に使用されるのと同じ AI エンジンが、検証とレビューにも役立ちます。 AI システムは、独自のミスを確認することがあります。 データ損失、機能回帰、またはセキュリティの問題を防ぐために、運用環境にデプロイする前に、生成されたオブジェクトと手動修正を個別に検証します。 コントロールの一部として、Foundry コンテンツ フィルターを有効にして、有害な出力や望ましくない出力を減らすことを検討してください。 ガイダンスについては、 Foundry でのコンテンツ フィルター処理に関するページを参照してください。

スキーマ変換機能を使用する理由

スキーマ変換では、PostgreSQL 定義を生成し、スクラッチ データベースで確認し、オブジェクト レベルの結果と AI 支援レビューを提供することで、手動での作業を減らすことができます。 デプロイ前に、生成されたスキーマをアプリケーションの要件に照らして検証する必要があります。

  • 自動変換: 互換性のあるスキーマ オブジェクトを自動的に変換することで、手動での作業を減らします。
  • AI を利用した変換: コンテキストに対応した変換の決定にMicrosoft Foundry でホストされている言語モデルを使用します。
  • スクラッチ データベース チェック: コンパイルと使用可能な静的チェックを使用して、変換の問題を特定します。
  • Integrated workflow: Visual Studio Code開発環境内で動作します。
  • 柔軟な Oracle 接続: Oracle データベースに接続するためのシン クライアント モードとシック クライアント モードの両方をサポートします。
  • 複数の認証オプション: Microsoft Foundry での API キー認証と Microsoft Entra ID 認証をサポートします。
  • レビューと改善: 変換ノート、ソースとターゲットの比較、およびCopilot支援された編集を組み合わせます。
  • Azure 向けに最適化: Azure Database for PostgreSQL フレキシブル サーバー用に設計されています。

サポートされているスキーマ オブジェクト

変換ツールは、データ定義要素、スキーマ レベルのコンポーネント、手続き型コードなど、さまざまな Oracle スキーマおよびコード オブジェクトをサポートしています。 多くの一般的なオブジェクトを自動的に変換できますが、Oracle 固有の特定の機能または独自の拡張機能のマッピングを手動で確認またはカスタマイズすることが必要になる場合があります。 サポートされているオブジェクトと既知の制限事項の詳細な一覧については、この記事のセクションを参照してください。

変換の生成方法

Microsoft Foundry モデルは、抽出された Oracle DDL を PostgreSQL 定義に変換します。 このツールでは、スクラッチ データベースのコンパイルと使用可能な静的チェックを使用して、問題を特定し、修正を支援します。

PL/pgSQL ルーチンの場合、 plpgsql_check はルーチン本体の追加の静的チェックを提供します。 これらのチェックでは、通常の作成作業だけではキャッチされない問題を特定できます。 詳細については、plpgsql_check を使用して変換後の PL/pgSQL を検証を参照してください。

変換された状態は、コンパイルの成功、完全な実装、または同等のランタイム動作を保証するものではありません。 手動による注意が必要なプレースホルダーや依存関係など、HTML レポートと変換オブジェクト エクスプローラーのオブジェクト定義と変換に関するメモを確認します。 Oracle 固有のギャップについては、「 スキーマ変換の制限事項」を参照してください。

データベース スキーマ オブジェクト

変換ツールでは、次の Oracle データベース オブジェクトがサポートされています。

  • テーブル: テーブル定義、列の仕様、およびテーブル レベルの制約。
  • 制約: 主キー、外部キー、一意制約、および check 制約。
  • インデックス: B ツリー インデックス、一意のインデックス、複合インデックス。
  • シーケンス: 値を自動作成するための Oracle シーケンス オブジェクト。
  • トリガー: 行レベルおよびステートメント レベルのトリガー。
  • ビュー: 標準データベース ビュー。
  • 具体化されたビュー: Oracle の具体化されたビューと更新ロジック。
  • スキーマ: スキーマ レベルのオブジェクトと組織。
  • シノニム: パブリックシノニムとプライベートシノニム (制限あり)。

Oracle コード オブジェクト

変換ツールでは、次の Oracle コードコンストラクトがサポートされています。

  • トリガー: 複雑なトリガー ロジックとイベント処理。
  • パッケージ: Oracle パッケージの仕様と本体。
  • 関数: 複雑なロジックを持つユーザー定義関数。
  • ストアド プロシージャ: Oracle ストアド プロシージャとパラメーターの処理。
  • 型とコレクション: Oracle オブジェクト型、 TYPE BODY メンバー メソッド、 VARRAY、入れ子になったテーブル、および SUBTYPE 宣言。

パッケージ変換

Oracle パッケージには、直接 PostgreSQL に相当するものはありません。 生成されるマッピングはソース定義に依存します。パッケージ メンバーとその呼び出し元を確認する必要があります。

  • 定数: 生成されたゲッター関数には、正しい値、型、およびボラティリティが必要です。
  • コレクションとカーソル: マッピングでは、配列、ドメイン、 jsonb、または refcursorを使用できます。 境界、インデックス作成、呼び出し元の想定値を確認します。
  • パッケージの状態: 生成されたヘルパーとセッション設定では、呼び出し、トランザクション、およびセッション間での初期化と状態の検証が必要です。
  • 例外: PostgreSQL SQLSTATE の値および例外ハンドラーへの、Oracle の例外とエラー コードのマッピングを確認します。
  • 仕様専用パッケージ: 出力には、未実装の本体を実装するのではなく、エラーを発生させるプレースホルダー ルーチンを含めることができます。

階層型クエリ

Oracle 階層クエリは、PostgreSQL WITH RECURSIVE 共通テーブル式で表すことができます。 ルート、親子結合、深さ、パス、兄弟の順序、およびサイクルについての生成された処理結果を確認します。 コンパイルする再帰クエリであっても、その結果が元の Oracle クエリと一致するとは限りません。

トランザクション制御

PRAGMA AUTONOMOUS_TRANSACTIONを使用するルーチンの変換は、dblinkを介した別の接続に依存する場合があります。 生成された関数またはプロシージャ、必要な拡張機能、および呼び出し元で必要な変更を確認します。 トランザクション境界、接続とセッション コンテキスト、コミット、ロールバック、エラー処理をテストします。 コンパイルで元のトランザクションの動作または呼び出し規則が保持されるとは想定しないでください。

変換された PL/pgSQL をplpgsql_checkで検証する

PL/pgSQL ルーチンを作成しても、実行できるすべてのステートメントが検証されるわけではありません。 一部の無効な参照または型の不一致は、関連する実行パスが実行されている場合にのみ表示されます。 plpgsql_check拡張機能は、ルーチン本体の静的分析によって追加の問題を検出できます。

これらのチェックは、同等のビジネス ロジックや本番運用の準備完了の証明としてではなく、コンパイルに加えて使用します。 生成された定義を確認し、機能とデータの検証を個別に完了させます。

チェックの実行場所

このチェックは、変換用に選択したスクラッチ データベースで実行されます。 本番データやアプリケーション トラフィックではなく、その環境内の変換されたルーチンを調べます。 plpgsql_check は検証支援です。変換されたコードに必要なランタイム拡張機能を個別に準備してください。

拡張機能が使用できない場合の動作

plpgsql_check がない場合、追加の本体チェックは利用できません。 コンパイルの成功または 変換済み ステータスは、これらのチェックが実行されたことを意味するものではありません。 変換前に拡張機能の可用性を確認し、拡張機能がインストールされている場合でも、ルーチンを個別に確認し、テストしてください。

チェックを有効にする

PostgreSQL のバージョンの拡張機能の一覧を確認し、サーバーの許可リストに plpgsql_check を追加し、必要なプリロード ライブラリを設定します。 shared_preload_librariesを変更した後、サーバーを再起動し、選択したスクラッチ データベースに拡張機能がインストールされていることを確認します。 完全な手順については、「 必要な拡張機能を許可してインストールする」を参照してください。

サポートされている Oracle のバージョン

このセクションでは、スキーマ変換の自動化をサポートするデータベース エンジンのバージョンの概要と、互換性に関する考慮事項について説明します。 最良の結果を得るには、サポートされている Oracle リリースと PostgreSQL リリースを使用してください。 非運用環境のテスト環境で変換を検証し、サポートされている各メジャー リリースの最新のマイナー パッチを使用します。 お使いの環境でサポートされていないバージョンを使用している場合、または Oracle 独自の機能が含まれている場合は、デプロイ前に追加の手動マッピングまたはレビューを実行することが必要になる場合があります。

次の Oracle データベース バージョンでは、スキーマ変換がサポートされています。

  • Oracle 21c
  • Oracle 19c
  • Oracle 18c
  • Oracle 12.2
  • Oracle 12.1

フィードバックとサポート

スキーマ変換機能または PostgreSQL 拡張機能に関連するバグ、機能要求、および問題については、Visual Studio Codeの組み込みのフィードバック ツールを使用してください。 このツールには、次の 2 つの方法でアクセスできます。

[ヘルプ] メニュー

ヘルプ>レポートの問題に移動します。

コマンド パレット

  1. Ctrl+Shift+P (Windows/Linux) または Cmd+Shift+P (macOS) を使用してコマンド パレットを開きます。
  2. コマンド PGSQL: Report Issue を実行します。

問題を作成したり、フィードバックを提供したりするときは、タイトルにプレフィックスとして Schema Conversion: を含めます。 このプレフィックスは、開発チームがスキーマ変換関連のフィードバックをすばやく特定し、優先順位を付けるのに役立ちます。 このフィードバック メカニズムは、開発チームがスキーマ変換機能を継続的に改善し、Oracle から Azure Database for PostgreSQL への移行プロジェクト中に発生する問題に対処するのに役立ちます。