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

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

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

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

  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 しても、コードオブジェクトの 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 を使用して、すべての結果と問題を一括でテキスト ファイルに保存することもできます。

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

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

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

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

  3. [Oracle] タブを選択し、ツリービューの表でコンバージョン結果を確認するオブジェクトを見つけます。

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

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 に置き換えます。コンバージョン ワークスペース 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 は、コンバージョン ワークスペース ID に置き換えます。コンバージョン ワークスペース 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 コンソールを使用し、すべてのオブジェクトを一括で確認するには gcloud CLI を使用します。

  2. [Cloud SQL for PostgreSQL] タブで、SQL エディタを使用して生成されたコードを更新します。
  3. スキーマをテストして、Database Migration Service が移行先データベースにコードを正しく適用できることを確認します。

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

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

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

  1. 変換マッピング ファイルを作成します
  2. 構成ファイルをワークスペースに追加します
ソースタブからオブジェクトを削除してみてください
Database Migration Service では、コンバージョン プロセスのブロックを解除するには、後で問題のあるオブジェクトを詳しく調べることができます。 ソースタブからオブジェクトを削除します

宛先でスキーマをテストする

スキーマを宛先データベースに適用する前に、まずテスト実行を実行して、考えられる問題を事前に確認できます。テストを実行するために、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. コンバージョン ステータス: コンバージョン ステータス(対応が必要問題なしなど)でオブジェクトをフィルタします。

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

  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*)

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

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