コンバージョン ワークスペースを使用する

このドキュメントでは、Database Migration Service でさまざまなコンバージョン ワークスペースを使用する方法について説明します。

組み込みエディタでコンバージョン ワークスペースを使用する

コンバージョン ワークスペースでは、移行元のデータベースのスキーマとオブジェクトを、移行先のデータベースと互換性のある形式に変換できます。ワークスペースでは、全体的なコンバージョン構成を確認、変更、適用できますが、移行元のデータベースのデータは変更されません。

ソーススキーマとコードを変換する

ワークスペースを設定するときに、Database Migration Service は移行元データベースのスキーマとコード オブジェクトの初期プルを実行します。その後、変換するオブジェクトを選択します(後でオブジェクトを追加できます)。これらのオブジェクトが [Oracle] タブに表示されます。[AlloyDB for PostgreSQL ドラフト] パネルには、Database Migration Service によって生成された PostgreSQL スキーマとコードが表示されます。

この時点で、Database Migration Service には、移行後の予想されるオブジェクトが表示されます。移行先インスタンスの実際のオブジェクトは表示されません。

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

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

  2. 使用可能なコンバージョン ワークスペースのリストから、使用するコンバージョン ワークスペースを選択します。

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

  3. 省略可: Ora2Pg 構成ファイルをアップロードして、生成された SQL に追加のマッピングを指定します。

    1. [構成を編集] > [構成ファイルを使用してマッピングをカスタマイズ] をクリックします。

    2. [Ora2Pg 構成ファイル] ボックスで [参照] をクリックし、システム ファイル選択ツールを使用して構成ファイルを選択します。

    3. [ファイルを追加] > [生成] をクリックします。

  4. 省略可: 変換済みのスキーマとコードがすでに存在する場合は、変換を再度実行する前に生成された SQL を手動で調整する場合は、次の操作を行います。

    1. [Oracle] パネルで、生成された SQL を調整するオブジェクトを選択します。

    2. [SQL] タブに移動し、ステートメントを調べます。

    3. シナリオに応じてスクリプトを調整し、[保存] をクリックします。

  5. すべての調整が完了したら、[ソースを変換] をクリックします。

  6. 確認のダイアログ ボックスで [変換] をクリックします。

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

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

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

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

  2. 利用可能なコンバージョン ワークスペースのリストから、使用するコンバージョン ワークスペースを選択します。

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

  3. [Oracle] タブで、削除するオブジェクトの横にある その他アイコン > [削除] を選択します。

  4. [オブジェクトを削除] 確認ダイアログで、[削除] をクリックします。

  5. AlloyDB for PostgreSQL のドラフトタブで更新内容を反映するように、再度ソースを変換します。

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

ソーススキーマから削除したオブジェクトを追加して、変換に含めることができます。

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

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

  2. 利用可能なコンバージョン ワークスペースのリストから、使用するコンバージョン ワークスペースを選択します。

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

  3. [Oracle] タブで、 [オブジェクトを追加] をクリックします。

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

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

  5. [オブジェクトを追加] をクリックします。

  6. ソースを変換して、[AlloyDB for PostgreSQL ドラフト] タブに更新を反映します。

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

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

更新されたデータベース スキーマとコードを取得しても、カスタム マッピングを明示的に削除しない限り、変換ワークスペースに存在する追加のマッピングが Ora2Pg 構成ファイルからリセットされることはありません。

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

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

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

  2. [構成を編集] > [ソーススキーマのスナップショットを再度 pull する] をクリックします。

  3. ダイアログ ボックスで次の操作を行います。

    1. (省略可)[カスタム マッピングをリセット] を選択して、既存のカスタム マッピングと DDL の変更を削除します。
    2. [スキーマのスナップショットを pull する] をクリックします。

    Database Migration Service は、移行元のデータベースから新しいスナップショットを取得します。オペレーションが完了したら、もう一度ソースを変換します。

変換の結果を確認する

ソース変換を実行した後、ワークスペースの編集領域で、変換結果と、変換された個々のオブジェクトに関する考えられる問題を確認できます。Google Cloud CLI を使用して、すべての結果と問題を一括でテキスト ファイルに保存することもできます。

コンソール

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

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

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

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

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

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

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 に置き換えます。コンバージョン ワークスペース 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. [AlloyDB for PostgreSQL ドラフト] タブで、SQL エディタを使用して生成されたコードを更新します。

  3. アプリケーションをテストして、Database Migration Service が移行先データベースにコードを正しく適用できることを確認します。

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

  • ソースを更新します。

    1. ソース データベースでスキーマとコードを直接更新します。
    2. 更新されたソースを Database Migration Service にpull します。
    3. ソースを再度変換して、問題が解決したかどうかを確認します。
  • Ora2Pg 構成ツールを使用して、追加のマッピングを指定します。

    1. Ora2Pg を構成し、不良オブジェクトのマッピング ファイルを作成します。
    2. 構成ファイルをワークスペースに追加します。コンバージョン ワークスペースを変更するをご覧ください。
  • [ソース] タブからオブジェクトを削除して、スキーマを再度変換してみてください。

  • 宛先インスタンスでコードを直接変更します。マッピングに影響するオブジェクトを更新しないようにしてください。

移行先へのアプリケーションをテストする

スキーマを宛先データベースに適用する前に、宛先の Cloud SQL インスタンスに影響しないテスト アプリケーションを実行できます。スキーマの適用をテストすると、潜在的な問題を事前に確認できます。

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

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

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

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

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

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

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

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

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

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

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

    アプリケーションのステータスは、[AlloyDB for PostgreSQL ドラフト] タブで確認できます。

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

宛先データベースで使用するスキーマが要件とマッピングに従って変換されたら、結果を宛先データベースに適用できます。

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

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

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

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

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

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

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

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

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

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

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

    アプリケーションのステータスは、[AlloyDB for PostgreSQL ドラフト] タブで確認できます。

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

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

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

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

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

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

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

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

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

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

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

  1. [フィルタ] フィールドで、次のいずれかのフィルタ方法を使用します。

    • [プロパティ] リストから、次のいずれかの自動生成されたオプションを選択します。

      • オブジェクト名: 名前(ADMIN など)でオブジェクトをフィルタします。
      • オブジェクト タイプ: 関数テーブルなど、複数のタイプでオブジェクトをフィルタします。
      • コンバージョン ステータス: コンバージョン ステータス(対応が必要問題なしなど)でオブジェクトをフィルタします。

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

    • クエリを入力します。例: type=table

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

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

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

基本的な自由形式テキスト検索でオブジェクトを名前でフィルタできます。また、専用の 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*)

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

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

以前のコンバージョン ワークスペースを使用する

以前のコンバージョン ワークスペースは、Ora2Pg 構成ファイルを接続プロファイルとペア設定するために使用される読み取り専用ワークスペースです。

ソーススキーマを変換する

レガシー ワークスペースの場合は、移行元データベースで Ora2Pg 移行ツールを直接使用してスキーマを変換します。スキーマ変換は Database Migration Service の外部で管理されます。スキーマ変換の準備をご覧ください。

以前のコンバージョン ワークスペースを作成すると、Database Migration Service はソース スキーマ変換を実行します。マッピングを更新する場合は、更新された構成ファイルを使用して以前のワークスペースを再作成します。

移行先に適用

Ora2Pg 構成ファイルを作成してワークスペースを作成したら、生成されたコードを宛先データベースに直接適用する必要があります。変換を変更する必要がある場合は、Ora2Pg 構成ファイルを調整し、新しい設定で以前のワークスペースを再作成します。