コンバージョン ワークスペースのアクション

コンバージョン ワークスペースでは、コンバージョンの問題を修正したり、インタラクティブ エディタでオブジェクトを変更したり、変換されたスキーマを移行先データベースに適用したりできます。このページでは、コンバージョン ワークスペースで実行できるすべてのアクションの概要について説明します。

Gemini を活用した自動変換のためにワークスペースをアップグレードする

アップグレードされたコンバージョン ワークスペースでは、 Gemini を活用した自動変換 コンバージョンの概要の機能を利用できます。

コンバージョン ワークスペースをアップグレードする手順は次のとおりです。

  1. Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。

    コンバージョン ワークスペースに移動する

  2. [アップグレードする機能を確認] をクリックし、ダイアログで提案を承諾します。

    コンバージョン ワークスペースのインターフェースにコンバージョン ワークスペースのアップグレード オファーが表示されているダイアログ。
    図 1. コンバージョン ワークスペースのアップグレード特典。(クリックして拡大)
    コンバージョン ワークスペースのインターフェースにコンバージョン ワークスペースのアップグレード オファーが表示されているダイアログ。

コンバージョン ステータスを確認する

コンバージョン ワークスペースの画面。[コンバージョンの概要] タブには、変換されたオブジェクトの数、変換の問題、Gemini による変換の拡張機能が表示されます。
図 2. コンバージョン ワークスペースの概要画面。(クリックして拡大)
コンバージョン ワークスペースの画面。[コンバージョンの概要] タブには、変換されたオブジェクトの数、変換の問題、Gemini による変換の拡張機能が表示されます。

[変換の概要] セクションでは、スキーマ変換に関するすべての情報(変換されたオブジェクトの数とタイプ、変換ステータス(未解決の問題や解決済みの問題を含む)、 Gemini による自動変換によって提供される拡張機能のリストなど)を確認できます。

各カテゴリのフィルタを使用して、タイプ、問題の重大度、未解決の問題、解決済みの問題でツリービューに表示されるオブジェクトの数を絞り込むこともできます。コンバージョンの概要は、 アップグレードされたコンバージョン ワークスペースでのみ使用できます。

コードとスキーマの変換の進行状況に関する詳細情報を表示するには、次の操作を行います。

  1. Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。

    コンバージョン ワークスペースに移動する

  2. [Oracle] タブで、スキーマ ツリービューを使用して次のいずれかを行います。
    • Oracle を選択すると、ワークスペース内の変換されたすべてのスキーマにあるすべてのオブジェクトの情報が表示されます。
    • 特定のスキーマまたはオブジェクトを選択して、オブジェクトのサブセットの変換の詳細を表示します。
  3. [コンバージョンの概要] タブで、[変換されたオブジェクトの概要] セクションの情報を確認します。[オブジェクトを表示] ボタンを使用して、[Oracle] タブのツリービューにフィルタを適用します。
  4. [変換に関する問題] タブを使用して、変換に関する問題の解決を開始します。詳しくは、 変換に関する問題を解決するをご覧ください。

ソーススキーマからオブジェクトを削除する

ソーススキーマからオブジェクトを削除して、変換から除外します。必要に応じて、後で 削除したオブジェクトを追加できます。

  1. Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。

    コンバージョン ワークスペースに移動する

  2. [Oracle] タブで、削除するオブジェクトの横にある その他> [削除] を選択します。
  3. [オブジェクトの削除] 確認ダイアログで、[削除] をクリックします。
  4. 変換したスキーマを更新します。 [ソースを変換] をクリックします。Database Migration Service が変更を分析し、更新された PostgreSQL スキーマを生成するようになりました。

    変換されたスキーマは、[Cloud SQL for PostgreSQL ドラフト] タブで確認できます。

ソーススキーマにオブジェクトを追加する

ソーススキーマから以前に削除したオブジェクトを追加して、変換に追加できます。

  1. Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。

    コンバージョン ワークスペースに移動する

  2. [Oracle] タブで、[オブジェクトを追加] をクリックします。
  3. [オブジェクトを追加] セクションで、ソースリストを使用して、ソーススキーマに追加するすべてのエンティティを選択します。

    [オブジェクトをフィルタ] ボタンを使用すると、表示されるオブジェクトの数を減らすことができます。 ソース スキーマ ビューでオブジェクトをフィルタするをご覧ください。

  4. [オブジェクトを追加] をクリックします。
  5. 変換したスキーマを更新します。 [ソースを変換] をクリックします。Database Migration Service が変更を分析し、更新された PostgreSQL スキーマを生成するようになりました。

    変換されたスキーマは、[Cloud SQL for PostgreSQL ドラフト] タブで確認できます。

ソーススキーマとコードのスナップショットを pull する

移行元のデータベースからコンバージョン ワークスペースにスキーマとコードをいつでも pull できます。ソースをプルすると、コンバージョンで新しいオブジェクトを追加したり、既存のオブジェクトを更新したりできます。

更新されたデータベース スキーマとコードを pull しても、変換ワークスペースに存在するカスタム マッピングはリセットされません。カスタム マッピングを削除するように明示的に選択した場合を除きます。

また、ソースを pull しても、コード オブジェクトの SQL 変更はオーバーライドされません。これらの変更は、オブジェクト レベルで直接リセットできます。

  1. Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。

    コンバージョン ワークスペースに移動する

  2. [構成を編集] > [ソーススキーマのスナップショットを再度 pull する] をクリックします。
  3. ダイアログ ボックスで次の操作を行います。
    1. 省略可: 既存のカスタム マッピングと DDL の変更を削除するには、[カスタム マッピングをリセット] を選択します。
    2. [スキーマのスナップショットを pull する] をクリックします。

      Database Migration Service は、移行元データベースから新しいスナップショットを取得します。

  4. 変換したスキーマを更新します。 [ソースを変換] をクリックします。Database Migration Service が変更を分析し、更新された PostgreSQL スキーマを生成するようになりました。

    変換されたスキーマは、[Cloud SQL for PostgreSQL ドラフト] タブで確認できます。

カスタム コンバージョン マッピングを使用する

変換マッピング ファイルを使用して、変換ロジックをカスタマイズできます。変換マッピング ファイルは、Oracle オブジェクトを PostgreSQL オブジェクトに変換する方法に関する正確な手順(変換ディレクティブ)を含むテキスト ファイルです。

カスタム マッピング ファイルを作成する

カスタム マッピング ファイルを作成するには:

  1. サポートされている変換ディレクティブのリストを確認します

  2. 構成ファイルの例を参考にしてください。

  3. テキスト エディタでカスタム コンバージョン マッピングを作成し、コンバージョン ワークスペースにアップロードします。

カスタム マッピング ファイルを追加する

カスタム変換マッピング ファイルをワークスペースに追加する手順は次のとおりです。

  1. Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。

    コンバージョン ワークスペースに移動する

  2. コンバージョン エディタのページで、 [構成を編集] > [構成ファイルを使用してマッピングをカスタマイズ] を選択します。
  3. [構成ファイル] ボックスで [参照] をクリックし、システム ファイル選択ツールを使用して構成ファイルを選択します。
  4. [ファイルを追加] > [マッピングを作成] をクリックします。

カスタム マッピング ファイルを削除する

ワークスペースからカスタム コンバージョン マッピング ファイルを削除する手順は次のとおりです。

  1. Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。

    コンバージョン ワークスペースに移動する

  2. コンバージョン エディタのページで、 [構成を編集] > [カスタム マッピングを削除] を選択します。

変換の結果を確認する

ソース変換を実行すると、ワークスペース エディタ領域で、変換された各オブジェクトの変換結果と発生する可能性のある問題を確認できます。Google Cloud CLI を使用して、すべての結果と問題をテキスト ファイルに一括で保存することもできます。

コンソール

  1. Google Cloud コンソールで、[変換ワークスペース] に移動します。

    コンバージョン ワークスペースに移動

  2. 操作するコンバージョン ワークスペースの表示名をクリックします。

    コンバージョン ワークスペース エディタが開きます。

  3. [Oracle] タブを選択し、ツリービュー テーブルで変換結果を確認するオブジェクトを見つけます。

  4. オブジェクトを選択します。[SQL] タブと [変換の問題] タブを使用して、変換を確認します。

  5. 問題が警告であり、対応が必要ないと判断した場合は、 解決済みとしてマークできます。それ以外の場合は、さらに調査して コンバージョン エディタで修正できます。

gcloud

Google Cloud CLI を使用すると、すべての変換結果または問題をターミナルに出力できます。出力をファイルにリダイレクトすると、オブジェクトの一括レビューがより便利になります。

変換結果のリストを取得する

gcloud CLI は、変換結果をターミナルにデータ定義言語(DDL)ステートメントの形式で表示します。変換結果をファイルに保存するには、次のコマンドを実行します。

  gcloud database-migration conversion-workspaces describe-ddls \
  CONVERSION_WORKSPACE_ID \
  --region=REGION_ID \
  > OUTPUT_FILE_PATH

次のように置き換えます。

  • CONVERSION_WORKSPACE_ID: コンバージョン ワークスペースの識別子。コンバージョン ワークスペースの ID を取得する方法については、 コンバージョン ワークスペースの詳細を表示するをご覧ください。
  • REGION_ID は、変換ワークスペースが配置されているリージョンの名前に置き換えます。
  • OUTPUT_FILE_PATH は、出力を保存するテキスト ファイルのパスに置き換えます。

    例:

    gcloud database-migration conversion-workspaces describe-issues \
    my-conversion-workspace \
    --region=us-central1 \
    > ./my-conversion-issues.txt
    

    結果:

    スキーマ変換の結果はテキスト形式で保存されます。最初の行は DDLs で、以降の行は SQL ステートメントで構成されます。

    DDLs
    CREATE SCHEMA IF NOT EXISTS "SCHEMA1";
    ALTER TABLE "SCHEMA1"."EMPLOYEES" ADD CONSTRAINT PK_ID PRIMARY KEY ("ID");
    CREATE OR REPLACE FUNCTION mockschema.func_test_datatype(str1 VARCHAR(65000))
      RETURNS DECIMAL
      LANGUAGE plpgsql
      AS $$
        DECLARE
          str2 VARCHAR(100);
        BEGIN
          SELECT
              employees.first_name
            INTO STRICT
              STR2
            FROM
              mockschema.employees
            WHERE employees.employee_id = CAST(FUNC_TEST_DATATYPE.str1 as DECIMAL)
          ;
          RAISE NOTICE '%', concat('Input : ', FUNC_TEST_DATATYPE.str1, ' Output : ', str2);
          RETURN 0;
        END;
      $$;
    CREATE OR REPLACE PROCEDURE greetings AS BEGIN dbms_output.put_line('Hello World!'); END;
    CREATE SYNONYM TABLE "SCHEMA1"."SYNONYM1" ON "SCHEMA1"."EMPLOYEES";
    CREATE OR REPLACE VIEW "SCHEMA1"."VIEW1" AS SELECT * FROM JOBS;
    

変換に関する問題のリストを取得する

変換の問題をファイルに保存するには、次のコマンドを実行します。

  gcloud database-migration conversion-workspaces describe-issues \
  CONVERSION_WORKSPACE_ID \
  --region=REGION_ID \
  > OUTPUT_FILE_PATH

次のように置き換えます。

  • CONVERSION_WORKSPACE_ID: コンバージョン ワークスペースの識別子。コンバージョン ワークスペースの識別子を取得する方法については、 コンバージョン ワークスペースの詳細を表示するをご覧ください。
  • REGION_ID は、変換ワークスペースが配置されているリージョンの名前に置き換えます。
  • OUTPUT_FILE_PATH は、出力を保存するテキスト ファイルのパスに置き換えます。

例:

  gcloud database-migration conversion-workspaces describe-issues \
  my-conversion-workspace \
  --region=us-central1 \
  > ./my-conversion-issues.txt

結果:

ワークスペースに含まれるすべての変換の問題は、テキスト形式で保存されます。最初の行には列ヘッダーが含まれ、後続の各行には個別の変換の問題が含まれます。

  PARENT   NAME               ENTITY_TYPE       ISSUE_TYPE  ISSUE_SEVERITY  ISSUE_CODE  ISSUE_MESSAGE
  SCHEMA1  EMPLOYEES          TABLE             DDL         ERROR           500         unable to parse DDL.
  SCHEMA1  EMPLOYEES          TABLE             CONVERT     WARNING         206         no conversion done.
  SCHEMA1  STORED_PROCEDURE1  STORED_PROCEDURE  DDL         ERROR           500         invalid DDL.
  SCHEMA1  SYNONYM1           SYNONYM           CONVERT     WARNING         206         synonym warning message.

変換に関する問題を解決する

Database Migration Service では、移行元全体を自動的に変換できない場合があります。ほとんどの Oracle オブジェクトでは、Database Migration Service で変換エディタを直接使用して、生成された SQL を調整できます。他のオブジェクトについては、ソース データベースでオブジェクトを直接変更してから、ソース スナップショットを再度 pull する必要があります。

Database Migration Service が変換ワークスペースで直接編集できるオブジェクトの一覧については、 編集可能な Oracle オブジェクトをご覧ください。

スキーマで見つかった変換の問題を解決するには、次の操作を行います。

  1. Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。

    コンバージョン ワークスペースに移動する

  2. 変換結果を確認し、考えられる問題を特定します。

    個々のオブジェクトを確認するには Google Cloud コンソールを使用し、すべてのオブジェクトを一括で確認するには gcloud CLI を使用します。

  3. 問題の種類に応じて、ワークスペース エディタで直接修正するか、カスタマイズされた変換マッピング ファイルを指定する必要があります。詳しくは、以下のセクションを開いてください。

    どのような問題が発生した場合でも、Gemini を活用した変換アシスタントを使用して解決策を見つけることができます。詳細については、 Gemini 変換アシスタントを使用するをご覧ください。問題が警告であり、対応が必要ないと判断した場合は、 解決済みとしてマークできます。

    組み込みエディタでサポートされているオブジェクトに関する問題を修正する

    ワークスペース エディタでサポートされているオブジェクトで発生した問題を解決するには、次の操作を行います。

    1. Oracle ツリービューで問題を見つけて、[コード] タブを選択します。
    2. SQL エディタを使用して、生成されたコードを更新します。Database Migration Service は、エディタに追加した SQL コードの正確性を検証しません。

    組み込みエディタでサポートされていないオブジェクトに関する問題を修正する

    ワークスペース エディタでサポートされていないオブジェクトで発生した問題を解決するには、次のいずれかを行います。

    ソース内の障害のあるオブジェクトを更新する
    一部の問題では、ソース データベースで Oracle ステートメントを直接変更する必要があります。次の操作を行います。
    1. ソース データベースでスキーマとコードを直接更新します。
    2. 更新されたソースを Database Migration Service に pull します。
    3. ソースを再度変換して、問題が解決したかどうかを確認します。
    変換マッピング ファイルで追加のマッピングを指定する

    変換マッピング ファイルを使用すると、Database Migration Service が特定の PostgreSQL オブジェクトを変換する方法を正確に定義できます。変換マッピング ファイルを使用する手順は次のとおりです。

    1. 変換マッピング ファイルを作成します
    2. 構成ファイルをワークスペースに追加します
    3. ソースを再度変換して、問題が解決したかどうかを確認します。
    ソースタブからオブジェクトを削除してみる
    Database Migration Service を使用すると、変換プロセスをブロック解除するには、後で障害のあるオブジェクトを詳しく調べることにします。 ソースタブからオブジェクトを削除します
  4. スキーマをテストする。Database Migration Service がコードを移行先データベースに正しく適用できることを確認します。
  5. テストが成功した場合は、[コンバージョンの問題] タブで問題を [解決済み] に設定することをおすすめします。これにより、コンバージョンの概要からこれらの問題を除外して、後で中断したところから再開できます。

問題を解決済みにする

変換の問題を確認して修正する際に、すでに修正した問題(または移行に影響しないと判断して対応を必要としない問題)を把握しておくと便利です。[解決済みにする] 機能を使用すると、このような問題をフィルタして、問題リストを簡単に確認できます。

問題を解決済みとしてマークする手順は次のとおりです。

  1. Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。

    コンバージョン ワークスペースに移動する

  2. [ソースツリー] ビューを使用して、変換の問題があるオブジェクトを選択します。
  3. [Conversion issues] タブで、問題の横にある [Mark as resolved] をクリックします。 コンバージョンの概要からこれらの問題をフィルタで除外できるようになりました。

    コンバージョンに関する問題を解決済みとしてマークし、コンバージョンの概要画面でフィルタリングできる問題解決画面。
    図 3. 問題を解決済みにできる変換の問題画面。(クリックして拡大)
    コンバージョンに関する問題を解決済みとしてマークし、コンバージョンの概要画面でフィルタリングできる問題解決画面。

移行先でスキーマをテストする

スキーマを宛先データベースに適用する前に、テスト実行を行って、発生する可能性のある問題を事前に確認できます。テストを実行するために、Database Migration Service は一時データベースを作成します。テスト実行は、移行先の Cloud SQL インスタンスに影響しません。

  1. 専用の移行ユーザーに CREATEDB 権限があることを確認します。詳細については、 移行先の Cloud SQL インスタンスを作成して構成するをご覧ください。

  2. Google Cloud コンソールで、[変換ワークスペース] に移動します。

    コンバージョン ワークスペースに移動

  3. 操作するコンバージョン ワークスペースの表示名をクリックします。

    コンバージョン ワークスペース エディタが開きます。

  4. [Apply to destination] > [Test (recommended)] をクリックします。

    スキーマを移行先データベースに適用するウィザードが表示されます。

  5. [宛先の定義] セクションで、宛先データベースを指す接続プロファイルを選択します。

  6. [定義して続行] をクリックします。

  7. [オブジェクトを選択してアプリケーションをテストする] セクションで、移行先データベースでテストするデータベース エンティティのスキーマを選択します。

    [オブジェクトをフィルタ] ボタンを使用すると、表示されるオブジェクトの数を減らすことができます。 ソース スキーマ ビューでオブジェクトをフィルタするをご覧ください。

  8. [アプリケーションをテスト] をクリックします。

    アプリケーションのステータスは、[Cloud SQL for PostgreSQL] タブで確認できます。

移行先にスキーマを適用する

宛先データベースで使用するスキーマが要件とマッピングに従って変換されたら、その結果を宛先データベースに適用できます。移行先でスキーマを適用しても、移行元データベースのデータは変更されません。

  1. Google Cloud コンソールで、[変換ワークスペース] に移動します。

    コンバージョン ワークスペースに移動

  2. 操作するコンバージョン ワークスペースの表示名をクリックします。

    コンバージョン ワークスペース エディタが開きます。

  3. [宛先に適用] > [適用] をクリックします。

    スキーマを移行先データベースに適用するウィザードが表示されます。

  4. [宛先の定義] セクションで、宛先データベースを指す接続プロファイルを選択します。

  5. [定義して続行] をクリックします。

  6. [オブジェクトを確認して変換を宛先に適用] セクションで、移行先データベースに作成するデータベース エンティティのスキーマを選択します。

    [オブジェクトをフィルタ] ボタンを使用すると、表示されるオブジェクトの数を減らすことができます。 ソース スキーマ ビューでオブジェクトをフィルタするをご覧ください。

  7. [移行先に適用] をクリックします。

    アプリケーションのステータスは、[Cloud SQL for PostgreSQL] タブで確認できます。

コンバージョン エディタで移行ジョブを作成する

コンバージョン エディタ インターフェースから、コンバージョン ワークスペースを直接使用する移行ジョブを作成できます。

  1. Google Cloud コンソールで、[変換ワークスペース] に移動します。

    コンバージョン ワークスペースに移動

  2. 操作するコンバージョン ワークスペースの表示名をクリックします。

    コンバージョン ワークスペース エディタが開きます。

  3. [移行ジョブを作成] をクリックします。

  4. 移行ジョブを作成するで説明されている標準の移行ジョブの手順に進みます。

ソース スキーマ ビューでオブジェクトをフィルタする

データベース スキーマには数千ものオブジェクトが含まれていることが多く、変換作業の分割が困難です。スキーマ スナップショットからソーススキーマ ビューにオブジェクトを追加するときに、フィルタを使用して表示されるオブジェクトの数を制限できます。フィルタを使用すると、オブジェクトをより細かく追加し、スキーマの選択したサブセットの変換に集中できます。

ソーススキーマ ビューにオブジェクトを追加するときに、フィルタされたビューを使用します。

  1. [フィルタ] フィールドで、次のいずれかのフィルタリング方法を使用します。
  2. [プロパティ] リストから、次のいずれかの自動候補オプションを選択します。
    1. オブジェクト名: オブジェクトを名前でフィルタします(例: ADMIN)。
    2. オブジェクト タイプ: 関数テーブルなど、複数のタイプでオブジェクトをフィルタします。
    3. 変換ステータス: 対応が必要問題なしなどの変換ステータスでオブジェクトをフィルタします。
    4. Gemini によって拡張: Gemini 自動変換で変換されたオブジェクトをフィルタします。

    フィルタ プロパティは論理演算子と組み合わせることができます。

  3. クエリを入力します。たとえば、type=table となります。

    フィルタリング構文の詳細については、 サポートされているフィルタリング構文をご覧ください。

  4. ソーススキーマ ビューに追加するオブジェクトを選択します。

サポートされているテキスト フィルタリングの構文

基本的なフリーテキスト検索で名前でオブジェクトをフィルタするか、専用の type プロパティを使用できます。どちらのアプローチも フィルタリング用の Google API の正式な仕様をサポートしています。つまり、ワイルドカードを含むリテラルと、論理演算子および比較演算子を使用できます。

フリーテキストを使用して、名前でオブジェクトをフィルタします。このアプローチでは大文字と小文字が区別され、ワイルドカードがサポートされます。

:

*JOB* クエリは、ワイルドカードを使用して JOB サブストリングを含むエンティティを検索します。フィルタされたビューは、いくつかのテーブルと 1 つのストアド プロシージャを返します。

名前でオブジェクトをフィルタリングした結果の例のスクリーンショット。
type プロパティを使用してフィルタする

Database Migration Service でサポートされているすべての標準タイプでオブジェクトをフィルタできます。

type プロパティは、等式(=)と不等式(!=)の演算子を使用して、次のリテラルをサポートしています。databaseschematablecolumnindexsequencestored_procedurefunctionviewsynonymmaterialized_viewudtconstraintdatabase_packagetriggerevent_trigger

:

type=table フィルタは、スキーマに存在するテーブルのみを返します。

型プロパティでオブジェクトをフィルタリングした結果の例のスクリーンショット。

テキスト フィルタリング条件を組み合わせる

複数の条件を論理演算子で組み合わせて指定できます。

たとえば、名前に JOB または EMPLOYEE の部分文字列が含まれるテーブルのみを検索するには、次のクエリを使用します。

  type=table AND (*JOB* OR *EMPLOYEE*)

その結果、フィルタには一致するすべてのテーブルが表示されます。

タイプと名前のプロパティの組み合わせでオブジェクトをフィルタリングした結果の例のスクリーンショット。