コンバージョン ワークスペースを使用すると、コンバージョンの問題を修正したり、インタラクティブ エディタでオブジェクトを変更したり、変換されたスキーマを移行先データベースに適用したりできます。このページでは、コンバージョン ワークスペースで実行できるすべてのアクションの概要について説明します。
Gemini による自動変換に対応するようワークスペースをアップグレードする
アップグレードされたコンバージョン ワークスペースでは、 Gemini を活用した自動変換と コンバージョンの概要の機能にアクセスできます。
コンバージョン ワークスペースをアップグレードする手順は次のとおりです。
- Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。
-
[アップグレードする機能を確認] をクリックし、ダイアログで特典を承諾します。
図 1. コンバージョン ワークスペースのアップグレード特典。(クリックして拡大)
コンバージョンのステータスを確認する
![コンバージョン ワークスペースの画面。[コンバージョンの概要] タブには、変換されたオブジェクトの数、コンバージョンに関する問題、Gemini による拡張コンバージョンが表示されます。](https://cloud-dot-devsite-v2-prod.appspot.com/static/database-migration/docs/images/htm/conversion_workspace_overview.png?hl=ja)
![コンバージョン ワークスペースの画面。[コンバージョンの概要] タブには、変換されたオブジェクトの数、コンバージョンに関する問題、Gemini による拡張コンバージョンが表示されます。](https://cloud-dot-devsite-v2-prod.appspot.com/static/database-migration/docs/images/htm/conversion_workspace_overview.png?hl=ja)
[変換の概要] セクションには、スキーマ変換に関するすべての情報(変換されたオブジェクトの数とタイプ、変換ステータス(未解決の問題や解決済みの問題を含む)、 Gemini による自動変換によって提供された機能強化のリスト)が表示されます。
また、各カテゴリのフィルタを使用して、タイプ、問題の重大度、未解決の問題、解決済みの問題で、ツリービューに表示されるオブジェクトの数を絞り込むこともできます。[コンバージョンの概要] は、 アップグレードされたコンバージョン ワークスペースでのみ利用できます。
コードとスキーマの変換の進行状況の詳細を表示するには、次の操作を行います。
- Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。
- [Oracle] タブで、スキーマ ツリービューを使用して次のいずれかを行います。
- [Oracle] を選択して、ワークスペース内のすべての変換済みスキーマ内のすべてのオブジェクトの情報を表示します。
- 特定のスキーマまたはオブジェクトを選択して、オブジェクトのサブセットのコンバージョンの詳細を表示します。
- [コンバージョンの概要] タブの [変換されたオブジェクトの概要] セクションで情報を確認します。[オブジェクトを表示] ボタンを使用して、[Oracle] タブのツリービューにフィルタを適用します。
- [コンバージョンに関する問題] タブを使用して、コンバージョンに関する問題の解決を開始します。詳しくは、 コンバージョンの問題を解決するをご覧ください。
ソース スキーマからオブジェクトを削除する
ソーススキーマからオブジェクトを削除して、変換から除外します。必要に応じて、後で 削除したオブジェクトを追加できます。
- Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。
- [Oracle] タブで、削除するオブジェクトの横にある > [削除] を選択します。 [その他]
- [オブジェクトを削除] 確認ダイアログで、[削除] をクリックします。
- 変換したスキーマを更新します。
変換されたスキーマは、[AlloyDB for PostgreSQL ドラフト] タブで確認できます。
[ソースを変換] をクリックします。
Database Migration Service が変更を分析し、更新された PostgreSQL スキーマを生成します。
ソーススキーマにオブジェクトを追加する
ソーススキーマから削除したオブジェクトを追加して、コンバージョンに含めることができます。
- Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。
- [Oracle] タブで、[ オブジェクトを追加] をクリックします。
- [オブジェクトを追加] セクションで、ソースリストを使用して、ソーススキーマに追加するすべてのエンティティを選択します。
[オブジェクトをフィルタ] ボタンを使用して、表示されるオブジェクトの数を減らすことができます。 ソース スキーマ ビューでオブジェクトをフィルタするをご覧ください。
- [オブジェクトを追加] をクリックします。
- 変換したスキーマを更新します。
変換されたスキーマは、[AlloyDB for PostgreSQL ドラフト] タブで確認できます。
[ソースを変換] をクリックします。
Database Migration Service は変更を分析し、更新された PostgreSQL スキーマを生成します。
ソーススキーマとコードのスナップショットを pull する
スキーマとコードは、移行元データベースからコンバージョン ワークスペースにいつでも pull できます。ソースを取得すると、コンバージョンに新しいオブジェクトを追加したり、既存のオブジェクトを更新したりできます。
更新されたデータベース スキーマとコードを取得しても、カスタム マッピングを明示的に削除しない限り、コンバージョン ワークスペースに存在するカスタム マッピングはリセットされません。
また、ソースを pull しても、コードオブジェクトの SQL 変更はオーバーライドされません。これらの変更は、オブジェクト レベルで直接リセットできます。
- Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。
- > [ソーススキーマのスナップショットを再度 pull する] をクリックします。 [構成を編集]
- ダイアログで次の操作を行います。
- 省略可: [カスタム マッピングをリセット] を選択して、既存のカスタム マッピングと DDL の変更を削除します。
- [スキーマのスナップショットを pull する] をクリックします。
Database Migration Service は、移行元データベースから新しいスナップショットを取得します。
- 変換したスキーマを更新します。
変換されたスキーマは、[AlloyDB for PostgreSQL ドラフト] タブで確認できます。
[ソースを変換] をクリックします。
Database Migration Service が変更を分析し、更新された PostgreSQL スキーマを生成します。
カスタム コンバージョン マッピングを使用する
コンバージョン ロジックは、コンバージョン マッピング ファイルでカスタマイズできます。変換マッピング ファイルは、Oracle オブジェクトを PostgreSQL オブジェクトに変換する方法に関する正確な指示(変換ディレクティブ)を含むテキスト ファイルです。
カスタム マッピング ファイルを作成する
カスタム マッピング ファイルを作成するには:
構成ファイルの例を参照してください。
カスタム コンバージョンのマッピングをテキスト エディタで作成し、コンバージョン ワークスペースにアップロードします。
カスタム マッピング ファイルを追加する
カスタム コンバージョン マッピング ファイルをワークスペースに追加するには、次の操作を行います。
- Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。
- コンバージョン エディタ ページで、> [構成ファイルを使用してマッピングをカスタマイズ] を選択します。 [構成を編集]
- [設定ファイル] ボックスで [参照] をクリックし、システム ファイル選択ツールを使用して設定ファイルを選択します。
- > [マッピングを作成] をクリックします。 [ファイルを追加]
カスタム マッピング ファイルを削除する
ワークスペースからカスタム コンバージョン マッピング ファイルを削除する手順は次のとおりです。
- Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。
- コンバージョン エディタ ページで、> [カスタム マッピングを削除] を選択します。 [設定を編集]
変換の結果を確認する
ソースの変換が完了したら、ワークスペースの編集領域で、変換結果と、変換された個々のオブジェクトに関する考えられる問題を確認できます。Google Cloud CLI を使用して、すべての結果と問題を一括でテキスト ファイルに保存することもできます。
コンソール
Google Cloud コンソールで [コンバージョン ワークスペース] に移動します。
操作するコンバージョン ワークスペースの表示名をクリックします。
コンバージョン ワークスペース エディタが開きます。
[Oracle] タブを選択し、ツリービューの表でコンバージョン結果を確認するオブジェクトを見つけます。
オブジェクトを選択します。[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 オブジェクトをご覧ください。
スキーマで見つかったコンバージョンの問題を修正する手順は次のとおりです。
- Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。
-
コンバージョンの結果を確認し、考えられる問題を特定します。
個々のオブジェクトを確認するには Google Cloud コンソールを使用し、すべてのオブジェクトを一括で確認するには gcloud CLI を使用します。
-
問題の種類によっては、ワークスペース エディタで直接修正できます。また、カスタマイズしたコンバージョン マッピング ファイルを指定しなければならない場合もあります。詳しくは、以下のセクションを展開してください。
どのような問題に取り組んでいるかにかかわらず、Gemini を活用した変換アシスタントを使って解決策を見つけることができます。詳細については、 Gemini コンバージョン アシスタントを使用するをご覧ください。問題が警告であり、対応を必要としないと判断した場合は、 解決済みとしてマークできます。
組み込みエディタでサポートされているオブジェクトに関する問題を修正
ワークスペース エディタでサポートされているオブジェクトで発生した問題を解決するには、次の操作を行います。
- [Oracle] ツリービューで問題を見つけて、[コード] タブを選択します。
- SQL エディタを使用して、生成されたコードを更新します。Database Migration Service は、エディタで追加した SQL コードの正確性を検証しません。
組み込みエディタでサポートされていないオブジェクトに関する問題を修正
ワークスペース エディタでサポートされていないオブジェクトで発生した問題を解決するには、次のいずれかを行います。
- ソース内の不具合のあるオブジェクトを更新する
- 問題によっては、移行元データベースで Oracle ステートメントを直接変更する必要がある場合があります。次の操作を行います。
- コンバージョン マッピング ファイルで追加のマッピングを指定
-
変換マッピング ファイルを使用すると、Database Migration Service が特定の PostgreSQL オブジェクトを変換する方法について正確に定義できます。コンバージョン マッピング ファイルを使用する手順は次のとおりです。
- コンバージョン マッピング ファイルを作成します。
- 構成ファイルをワークスペースに追加します。
- ソースを再度変換し、問題が解決したかどうかを確認します。
- ソースタブからオブジェクトを削除してみてください
- Database Migration Service では、コンバージョン プロセスのブロックを解除するには、後で問題のあるオブジェクトを詳しく調べることができます。 ソースタブからオブジェクトを削除します。
- スキーマをテストして、Database Migration Service が移行先データベースにコードを正しく適用できることを確認します。
-
テストが成功した場合は、[コンバージョンに関する問題] タブで問題を [解決済み] に設定することをおすすめします。これにより、コンバージョンの概要からこれらの問題を除外し、後で中断したところから再開できます。
問題を解決済みにする
コンバージョンの問題を確認して修正する際は、すでに修正した問題(または移行に影響せず、対応が不要と判断した問題)を記録しておくことをおすすめします。[解決済みとしてマーク] 機能を使用すると、このような問題を除外して、問題リストを簡単に移動できます。
問題を解決済みとしてマークする手順は次のとおりです。
- Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。
- [ソースツリー] ビューを使用して、コンバージョンに関する問題があるオブジェクトを選択します。
-
[コンバージョンに関する問題] タブで、問題の横にある [解決済みにする] をクリックします。 これらの問題は、コンバージョンの概要から除外できるようになりました。
図 3. 問題を解決済みとしてマークできる [変換に関する問題] 画面。(クリックして拡大)
宛先でスキーマをテストする
スキーマを宛先データベースに適用する前に、まずテスト実行を行い、発生する可能性のある問題を事前に確認できます。テストを実行するために、Database Migration Service は一時データベースを作成します。テスト実行は、移行先の AlloyDB for PostgreSQL クラスタに影響しません。
専用の移行ユーザーに
CREATEDB
権限があることを確認します。詳細については、 移行先の AlloyDB for PostgreSQL クラスタを作成して構成するをご覧ください。Google Cloud コンソールで [コンバージョン ワークスペース] に移動します。
操作するコンバージョン ワークスペースの表示名をクリックします。
コンバージョン ワークスペース エディタが開きます。
[Apply to destination] > [Test (recommended)] をクリックします。
移行先データベースにスキーマを適用するウィザードが表示されます。
[宛先の定義] セクションで、宛先データベースを指す接続プロファイルを選択します。
[定義して続行] をクリックします。
[オブジェクトの選択とアプリケーションのテスト] セクションで、宛先データベースでテストするデータベース エンティティのスキーマを選択します。
[オブジェクトをフィルタ] ボタンを使用して、表示するオブジェクトの数を減らすことができます。 ソース スキーマ ビューでオブジェクトをフィルタするをご覧ください。
[アプリケーションをテスト] をクリックします。
アプリケーションのステータスは [AlloyDB for PostgreSQL] タブで確認できます。
スキーマを移行先に適用する
宛先データベースで使用するスキーマが要件とマッピングに従って変換されたら、結果を宛先データベースに適用できます。移行先でスキーマを適用しても、移行元データベースのデータは変更されません。
Google Cloud コンソールで [コンバージョン ワークスペース] に移動します。
操作するコンバージョン ワークスペースの表示名をクリックします。
コンバージョン ワークスペース エディタが開きます。
[宛先に適用] > [適用] をクリックします。
移行先データベースにスキーマを適用するウィザードが表示されます。
[宛先の定義] セクションで、宛先データベースを指す接続プロファイルを選択します。
[定義して続行] をクリックします。
[オブジェクトを確認して移行先に変換を適用する] セクションで、移行先データベースに作成するデータベース エンティティのスキーマを選択します。
[オブジェクトをフィルタ] ボタンを使用して、表示するオブジェクトの数を減らすことができます。 ソース スキーマ ビューでオブジェクトをフィルタするをご覧ください。
[移行先に適用] をクリックします。
アプリケーションのステータスは [AlloyDB for PostgreSQL] タブで確認できます。
コンバージョン エディタから移行ジョブを作成する
コンバージョン ワークスペースを使用する移行ジョブは、コンバージョン エディタのインターフェースから直接作成できます。
Google Cloud コンソールで [コンバージョン ワークスペース] に移動します。
操作するコンバージョン ワークスペースの表示名をクリックします。
コンバージョン ワークスペース エディタが開きます。
[移行ジョブを作成] をクリックします。
移行ジョブを作成するで説明されている標準の移行ジョブの手順に進みます。
ソース スキーマ ビューでオブジェクトをフィルタする
データベース スキーマには通常、数千のオブジェクトが含まれているため、変換作業を分割することは困難です。スキーマ スナップショットからソーススキーマ ビューにオブジェクトを追加する場合は、フィルタを使用して表示されるオブジェクトの数を制限できます。フィルタを使用すると、よりきめ細かくオブジェクトを追加し、スキーマの選択したサブセットの変換に集中できます。
フィルタされたビューは、ソーススキーマビューにオブジェクトを追加するときに使用します。
- [フィルタ] フィールドで、次のいずれかのフィルタ方法を使用します。
- [プロパティ] リストから、次の自動生成されたオプションのいずれかを選択します。
- オブジェクト名: オブジェクトを名前でフィルタします(
ADMIN
など)。 - オブジェクト タイプ: 関数やテーブルなど、複数のタイプでオブジェクトをフィルタします。
- コンバージョン ステータス: コンバージョン ステータス(対応が必要、問題なしなど)でオブジェクトをフィルタします。
- Gemini によって拡張: Gemini 自動変換で変換されたオブジェクトをフィルタします。
フィルタ プロパティは論理演算子と組み合わせることができます。
- オブジェクト名: オブジェクトを名前でフィルタします(
- クエリを入力します。たとえば、
type=table
となります。フィルタリング構文の詳細については、 サポートされているフィルタリング構文をご覧ください。
- ソーススキーマビューに追加するオブジェクトを選択します。
サポートされているテキスト フィルタの構文
基本的な自由形式テキスト検索でオブジェクトを名前でフィルタできます。また、専用の type
プロパティを使用することもできます。どちらのアプローチも、
Google API のフィルタリングに関する正式な仕様をサポートしています。つまり、ワイルドカードを含むリテラルや、論理演算子と比較演算子を使用できます。
- 自由形式のテキストのフィルタリング
-
自由形式のテキストを使用して、オブジェクトを名前でフィルタリングします。この方法では大文字と小文字が区別され、ワイルドカードがサポートされます。
例:
*JOB*
クエリはワイルドカードを使用して、JOB
サブ文字列を含むエンティティを検索します。フィルタされたビューは、いくつかのテーブルと 1 つのストアド プロシージャを返します。 type
プロパティを使用してフィルタする-
オブジェクトは、Database Migration Service でサポートされているすべての標準タイプでフィルタできます。
type
プロパティは、等式(=
)演算子と不等式(!=
)演算子を使用して、次のリテラルをサポートしています。database
、schema
、table
、column
、index
、sequence
、stored_procedure
、function
、view
、synonym
、materialized_view
、udt
、constraint
、database_package
、trigger
、event_trigger
。例:
type=table
フィルタは、スキーマに存在するテーブルのみを返します。
テキスト フィルタ条件を組み合わせる
論理演算子を使用して複数の条件を組み合わせて指定できます。
たとえば、名前に JOB
または EMPLOYEE
の部分文字列が含まれるテーブルのみを検索するには、次のクエリを使用します。
type=table AND (*JOB* OR *EMPLOYEE*)
結果として、一致するすべてのテーブルがフィルタに表示されます。
