セットアップ エクスペリエンスを使用して変換されたスキーマを展開する

スキーマ変換セットアップ エクスペリエンスでは、変換ワークフローが完了すると、命令とスクリプトが自動的に生成されます。 これらのファイルを使用して、変換されたスキーマをAzure Database for PostgreSQLにデプロイします。 ファイルを生成しても、スキーマは変換先にデプロイされません。 それらを確認し、デプロイ環境で生成された PowerShell または Bash スクリプトを実行します。

完了した変換からセットアップ ファイルを開く手順については、チュートリアルの「セットアップ エクスペリエンスを使用してデプロイを準備する」を参照してください。

生成されたファイルを確認する

セットアップ ディレクトリは、変換用に選択した Oracle スキーマの数によって異なります。 ワークスペース のルートを基準とした適切なパスを使用してください。

Oracle スキーマの選択 セットアップ ディレクトリ
1 つのスキーマが選択されました .github\postgres-migrations\<migration-project>\artifacts\oracle\<schema-name>\setup
複数のスキーマが選択されている .github\postgres-migrations\<migration-project>\artifacts\oracle\_migration\setup

<migration-project> を移行プロジェクト フォルダー名 (Mig001 など) に置き換えます。 スキーマを 1 つ選択した場合は、 <schema-name> を選択した Oracle スキーマ フォルダー名 ( HR など) に置き換えます。 複数のスキーマを選択した場合、 _migration はプレースホルダーではなく、実際のフォルダー名になります。

この場所には、パッケージに含まれる PostgreSQL スキーマの数ではなく、選択した Oracle スキーマが反映されます。 パッケージのデプロイ範囲については、setup_instructions.md を確認してください。

ファイルまたはディレクトリ Purpose
setup_instructions.md デプロイ固有の前提条件、コマンド、省略可能なパラメーター、トラブルシューティング のガイダンス。
setup.ps1 Windows PowerShell のデプロイ ランナー。
setup.sh Bash on Linux または macOS のデプロイ ランナー。
sql ランナーによって使用される準備チェック、拡張スクリプト、検証クエリ、マニフェストのサポート。
reports と logs セットアップ スクリプトの実行時に書き込まれる出力。

完全な移行プロジェクト内にセットアップ ディレクトリを保持します。 ランナーは、兄弟ディレクトリ の convert 内の変換セッションの deploy.sql を参照します。セットアップ ディレクトリのみをコピーするだけでは不十分です。

生成された手順とデプロイ SQL を、実行前に確認してください。 デプロイしようとしているオブジェクト修正が SQL に含まれていることを確認します。 プロジェクトを別の環境に転送する場合は、そのディレクトリ構造を保持し、組織のデータ処理要件に従います。 共有するファイルから資格情報やその他のシークレットを削除します。

宛先の準備をする

別の変換で使用した要件をコピーするのではなく、生成された setup_instructions.mdの要件を使用します。

  • サーバーとクライアントのバージョン。 必要な PostgreSQL バージョンを使用して、Azure Database for PostgreSQLフレキシブル サーバーを準備します。 psql クライアントのメジャー バージョンは、生成されたセットアップ パッケージに記録されている変換サーバーのメジャー バージョンと一致している必要があります。 セットアップを実行するコンピューターにそのクライアントをインストールし、PATH 上で利用できるようにします。 セットアップではサーバー上にデータベースを作成できますが、Azure サーバーをプロビジョニングすることはできません。
  • シェルとファイルへのアクセス。 Windows では PowerShell 5.1 以降、Linux または macOS では Bash を使用します。 ランナーには、その logs と reports ディレクトリへの書き込みアクセスが必要です。
  • ネットワーク アクセス。 セットアップ コンピューターが Azure Database for PostgreSQL の宛先サーバーと PostgreSQL ポートに接続できるようにします。
  • 拡張機能 デプロイの前に、必要な拡張機能を確認し、サポートされている拡張機能を Azure Database for PostgreSQL の宛先サーバーの許可リストに追加します。 「Azure Database for PostgreSQLで拡張機能を許可する」を参照してください。
  • アクセス許可。 生成された手順で指定された、データベース、スキーマ、オブジェクトの作成、拡張機能のインストールの権限を持つアカウントを使用してください。 新規データベース モードでは、データベースを作成する権限も必要です。
  • 認証。 スクリプトの隠しパスワード プロンプト、PostgreSQL パスワード ファイル、または組織で承認済みのシークレット管理プロセスを使用します。 デプロイ スクリプトにパスワードを埋め込まないでください。

クライアントが利用可能であることを確認します。

psql --version

生成された命令には、PostgreSQL のバージョンや拡張機能の要件など、変換環境が反映されます。 デプロイの前に、デプロイ先の違いを確認します。

データベース モードを選択する

どちらのランナーも、次のモードをサポートしています。

Mode Behavior
新しいデータベース 既定のモード。 デプロイ時に、Azure Database for PostgreSQL の対象サーバー上にデータベースを作成します。 指定したデータベース名は、すでに存在していてはなりません。
既存のデータベース 指定したデータベースを使用します。 ターゲットスキーマにオブジェクトが含まれている場合、セットアップを続行するには、事前に明示的な確認が必要です。

対話型実行の場合、スクリプトは、不足しているホスト、ユーザー、およびデータベースの値を求めます。 確認する前に、表示された宛先、データベース モード、スキーマ、および操作を確認してください。

デプロイせずに準備状況を確認する

生成されたセットアップ用ディレクトリでターミナルを開いてください。 お使いのオペレーティング システムと使用するデータベース モードに対応するコマンドを選択してください。

データベースモード Windows PowerShell Linux または macOS
新しいデータベース .\setup.ps1 -ValidateOnly bash setup.sh --validate-only
既存のデータベース .\setup.ps1 -DatabaseMode existing -ValidateOnly bash setup.sh --database-mode existing --validate-only

検証専用モードは、サーバーに接続し、ローカルのレポートとログを書き込みます。 ターゲット データベースを作成せず、拡張機能をインストールせず、変換後のオブジェクトをデプロイしません。

準備チェックでは、接続、PostgreSQL のバージョン、データベースのエンコードとロケールの設定、アクセス許可、ターゲット スキーマの使用状況、拡張機能の可用性がカバーされます。 警告とブロックの要因となっているエラーを確認します。

新しいデータベース モードでは、移行先データベースがまだ存在しないため、検証ではメンテナンス データベースが使用されます。 コピー先データベースを必要とするチェックはスキップ済みとしてマークされます。 検証のみの実行が成功した場合でも、スキップされたチェックが成功したことを意味するものではありません。

検証が正常に完了したら、reports ディレクトリの validation_report_<timestamp>.md を確認します。 デプロイ前に報告された問題を解決します。 検証が早期に停止した場合は、最初にコンソール出力を確認してから、作成されたログまたはレポートを確認します。

変換されたスキーマをデプロイする

チェックしたものと同じ宛先とデータベース モードを使用します。 セットアップ ディレクトリから、-ValidateOnly (PowerShell) または --validate-only (Bash) を除いて、適切なコマンドを実行します。

データベース モード Windows PowerShell Linux または macOS
新しいデータベース .\setup.ps1 bash setup.sh
既存のデータベース .\setup.ps1 -DatabaseMode existing bash setup.sh --database-mode existing

ランナーは、データベースを準備し、準備完了状態を確認し、必要なサポート対象拡張機能をインストールし、変換後のデプロイ SQL を実行し、生成されたオブジェクトおよび拡張機能を検証します。

空でない宛先を承認する前に、既存のオブジェクトを変更できるため、デプロイ SQL を確認してください。

Important

どちらのデータベース モードでも、障害が発生した後に変更が残ってしまう可能性があります。 新規データベース モードでは、セットアップにより移行先の準備状況チェックの前にデータベースが作成されるため、チェックが失敗するとそのデータベースが残ったままになることがあります。 デプロイSQLでは、変更を別個のトランザクションで適用することもできます。 再試行する前にデプロイ先の状態を確認し、失敗したデプロイでそれ以前の変更がロールバックされたと思い込まないでください。

省略可能なポート、TLS、ロケール、およびオートメーション パラメーターには、 setup_instructions.md を使用します。 非対話型実行の場合は、ホスト、ユーザー、データベース、および認証の詳細を事前に指定します。 空でない既存のターゲットでは、Windows では --allow-nonempty-existing、Linux または macOS では -AllowNonEmptyExisting を介した明示的な確認も必要です。

デプロイの結果を確認する

データまたはアプリケーションの検証に進む前に、デプロイの結果を読み取ってください。 変換の状態だけでは、この宛先へのデプロイは確認されません。

ディレクトリ アウトプット 確認する内容
reports deployment_report_<timestamp>.md 展開済みおよび展開されていない合計、拡張結果、オブジェクトの種類別の結果、およびオブジェクトが展開されなかった理由。
reports verification_<timestamp>.csv オブジェクト検証の詳細な結果。
reports extensions_<timestamp>.csv 詳細な拡張結果。
reports preflight_<timestamp>.csv 準備チェックの結果。
logs setup_<timestamp>.log 実行メッセージとエラー。

検証のみの実行では、デプロイ レポートではなく検証レポートが生成されます。 ファイル アクセスやシェル バージョンの問題などの早期エラーでは、コンソール出力のみが残る可能性があります。

ランナーの終了コードを次の出力と共に使用します。

終了コード Meaning
0 要求された操作が成功しました。 検証のみの場合、準備完了の検証はデプロイなしで成功しました。
1 入力、クライアント、またはユーザーによる取り消しエラー。
2 セットアップ パッケージ/構成、接続、データベース、準備チェック、または拡張機能のインストールの失敗。
3 デプロイ、検証、報告、または予期しないランナーのエラー。
4 検証によって、デプロイされなかったオブジェクトまたは拡張機能が識別されました。

終了コード 0に対してのみ自動化を続行します。 その他のコードについては、使用可能な出力を確認し、報告された問題を解決してから続行してください。

デプロイされたスキーマを検証する

セットアップが成功しても、Oracle との動作上の同等性や本番環境の準備状態が確立されたことを意味するわけではありません。 移行先環境でデータ処理、依存関係、ビジネス ロジック、アプリケーションの動作を個別にテストします。

展開されていないオブジェクトまたは拡張機能を確認し、その対処を完了します。 個別に管理されたセキュリティ構成を適用し、必要なくなった場合は一時的なセットアップ特権を取り消します。