コンバージョン ワークスペースを使用すると、コンバージョンの問題を修正したり、インタラクティブ エディタでオブジェクトを変更したり、変換されたスキーマを移行先データベースに適用したりできます。 このページでは、コンバージョン ワークスペースで実行できるすべてのアクションの概要について説明します。
変換ステータスを確認する
[コンバージョンの概要] セクションでは、スキーマ変換に関するすべての情報(変換されたオブジェクトの数とタイプ、変換ステータス(未解決の問題や解決済みの問題など)、 Gemini アシストによる自動変換で提供される拡張機能のリストなど)を確認できます。
また、各カテゴリのフィルタを使用して、ツリービューに表示されるオブジェクトの数を、タイプ、問題の重大度、未解決の問題、解決済みの問題で絞り込むこともできます。 [**コンバージョンの概要**] は、アップグレードされたコンバージョン ワークスペースでのみ使用できます。
コードとスキーマの変換の進捗状況に関する詳細情報を表示する手順は次のとおりです。
- コンソールで [Conversion workspaces] に移動し、ワークスペースを選択します。 Google Cloud
- [Oracle] タブで、スキーマ ツリービューを使用して次のいずれかを行います。
- [Oracle] を選択すると、ワークスペース内の変換されたすべてのスキーマのすべてのオブジェクトの情報が表示されます。
- 特定のスキーマまたはオブジェクトを選択すると、オブジェクトのサブセットの変換の詳細が表示されます。
- [**コンバージョンの概要**] タブで、 [**変換されたオブジェクトの概要**] セクションの情報を確認します。Use the [Show objects] button to apply any filter to the tree view in the [Oracle] tab.
- [変換の問題] タブを使用して、変換の問題の解決を開始します。詳細については、 変換に関する問題を解決するをご覧ください。
ソース スキーマからオブジェクトを削除する
ソース スキーマからオブジェクトを削除して、変換から除外します。 削除したオブジェクトは、必要に応じて後で 追加できます。
- コンソールで [Conversion workspaces] に移動し、ワークスペースを選択します。 Google Cloud
- [Oracle] タブで、削除するオブジェクトの横にある [その他] > [削除] を選択します。
- [オブジェクトの削除] 確認ダイアログで、[削除] をクリックします。
- 変換されたスキーマを更新します。
[Convert source].
Database Migration Service が変更を分析し、更新された
PostgreSQL スキーマを生成します。
変換されたスキーマは、 [Cloud SQL for PostgreSQL のドラフト] タブで確認できます。
ソース スキーマにオブジェクトを追加する
ソース スキーマから以前に削除したオブジェクトを追加して、変換に追加できます。
- コンソールで [Conversion workspaces] に移動し、ワークスペースを選択します。 Google Cloud
- [Oracle] タブで、 [オブジェクトを追加] をクリックします。
- [オブジェクトを追加] セクションで、ソースリストを使用して、ソース スキーマに追加するすべてのエンティティを選択します。
[オブジェクトをフィルタ] ボタンを使用すると、表示されるオブジェクトの数を減らすことができます。 ソース スキーマ ビューでオブジェクトをフィルタするをご覧ください。
- [オブジェクトを追加] をクリックします。
- 変換されたスキーマを更新します。
[Convert source].
Database Migration Service が変更を分析し、更新された
PostgreSQL スキーマを生成します。
変換されたスキーマは、 [Cloud SQL for PostgreSQL のドラフト] タブで確認できます。
ソース スキーマとコード スナップショットを pull する
ソース データベースからスキーマとコードをコンバージョン ワークスペースにいつでも pull できます。ソースを pull すると、変換で新しいオブジェクトを追加したり、既存のオブジェクトを更新したりできます。
更新されたデータベース スキーマとコードを pull しても、カスタム マッピングを明示的に削除しない限り、コンバージョン ワークスペースに存在するカスタム マッピングはリセットされません。
また、ソースを pull しても、コード オブジェクトの SQL の変更はオーバーライドされません。これらの変更は、オブジェクト レベルで直接リセットできます。
- コンソールで [Conversion workspaces] に移動し、ワークスペースを選択します。 Google Cloud
- [ 構成を編集 > ソース スキーマのスナップショットを再度 pull する] をクリックします。
- ダイアログ ボックスで次の操作を行います。
- 省略可: [カスタム マッピングをリセット] を選択して、既存の カスタム マッピングと DDL の変更を削除します。
- [スキーマのスナップショットを pull] をクリックします。
Database Migration Service がソース データベースから新しいスナップショットを pull します。
- 変換されたスキーマを更新します。
[Convert source].
Database Migration Service が変更を分析し、更新された
PostgreSQL スキーマを生成します。
変換されたスキーマは、 [Cloud SQL for PostgreSQL のドラフト] タブで確認できます。
カスタム変換マッピングを使用する
変換ロジックは、変換マッピング ファイル でカスタマイズできます。 変換マッピング ファイルは、Oracle オブジェクトを PostgreSQL オブジェクトに変換する方法に関する正確な手順(変換ディレクティブ )を含むテキスト ファイルです。
カスタム マッピング ファイルを作成する
カスタム マッピング ファイルを作成する手順は次のとおりです。
例の 構成ファイルを参照してください。
テキスト エディタでカスタム変換マッピングを作成し、コンバージョン ワークスペースにアップロードします。
カスタム マッピング ファイルを追加する
カスタム変換マッピング ファイルをワークスペースに追加する手順は次のとおりです。
- コンソールで [Conversion workspaces] に移動し、ワークスペースを選択します。 Google Cloud
- 変換エディタ ページで、 [構成を編集] [>] [構成ファイルを使用してマッピングをカスタマイズ] を選択します。
- [**構成ファイル**] ボックスで [**参照**] をクリックし、 システムのファイル選択ツールを使用して構成ファイルを選択します。
- [Add file] > [Create mapping] をクリックします。
カスタム マッピング ファイルを削除する
カスタム変換マッピング ファイルをワークスペースから削除する手順は次のとおりです。
- コンソールで [Conversion workspaces] に移動し、ワークスペースを選択します。 Google Cloud
- 変換エディタ ページで、 [構成を編集] > [カスタム マッピングを削除] を選択します。
変換の結果を確認する
ソースのコンバージョンを実行したら、ワークスペース エディタ領域で、変換された個々のオブジェクトの変換結果と考えられる問題を確認できます。また、Google Cloud CLI を使用して、すべての結果と問題をテキスト ファイルに一括で保存することもできます。
コンソール
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は、コンバージョン ワークスペースの識別子に置き換えます。 コンバージョン ワークスペースの識別子を取得する方法については、 コンバージョン ワークスペースの詳細を表示するをご覧ください。REGION_IDは、コンバージョン ワークスペースがあるリージョンの名前に置き換えます。OUTPUT_FILE_PATHは、出力の保存先となるテキスト ファイルのパスに置き換えます。例:
gcloud database-migration conversion-workspaces describe-ddls \ my-conversion-workspace \ --region=us-central1 \ > ./my-ddls-list.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.
変換されたオブジェクトに対して Gemini 品質評価レポートを実行することをおすすめします。 これらの評価では、変換されたコードが分析され、ソースコードと比較して正確性と動作に関するフィードバックが提供されます。 詳細については、 Gemini 品質評価をご覧ください。
変換に関する問題を解決する
Database Migration Service では、ソース全体を自動的に変換できない場合があります。 ほとんどの Oracle オブジェクトでは、Database Migration Service の変換エディタで直接、生成された SQL を調整できます。それ以外の場合は、ソース データベースでオブジェクトを直接変更してから、 ソース スナップショットを再度 pull する必要があります。
Database Migration Service のコンバージョン ワークスペースで直接編集できるオブジェクトの完全なリストについては、 編集可能な Oracle オブジェクトをご覧ください。
スキーマで見つかった変換の問題を解決する手順は次のとおりです。
- コンソールで [Conversion workspaces] に移動し、ワークスペースを選択します。 Google Cloud
-
変換結果を確認し、考えられる問題を特定します。
個々のオブジェクトを確認するには Google Cloud コンソールを使用し、すべてのオブジェクトを一括で確認するには gcloud CLI を使用します。
-
問題のタイプに応じて、ワークスペース エディタで直接修正するか、カスタマイズされた変換マッピング ファイルを指定する必要があります。詳細については、次のセクションを開いてください。
どのようなタイプの問題に取り組んでいる場合でも、 Gemini を搭載した変換アシスタントを使用して解決策を見つけることができます。詳細については、 Gemini 変換アシスタントを使用するをご覧ください。 問題が警告であり、対応が必要ない場合は、 解決済みとして マークできます。
組み込みエディタでサポートされているオブジェクトに関する問題を解決する
ワークスペース エディタでサポートされているオブジェクトで発生した問題を解決する手順は次のとおりです。
- [Oracle] ツリービューで問題を見つけて、 [コード] タブを選択します。
- SQL エディタを使用して、生成されたコードを更新します。Database Migration Service は、エディタで追加した SQL コードの正確性を検証しません。
組み込みエディタでサポートされていないオブジェクトに関する問題を解決する
ワークスペース エディタでサポートされていないオブジェクトで発生した問題を解決するには、次のいずれかを行います。
- ソースで欠陥のあるオブジェクトを更新する
- 問題によっては、ソース データベースで Oracle ステートメントを直接変更する必要があります。次の操作を行います。
- ソース データベースでスキーマとコードを直接更新します。
- 更新されたソースを Database Migration Service に pull します。
- ソースを再度変換し、問題が解決しないかどうかを確認します。
- 変換マッピング ファイルを使用してマッピングを追加する
-
変換マッピング ファイルを使用すると、Database Migration Service が特定の PostgreSQL オブジェクトを変換する方法を正確に定義できます。変換マッピング ファイルを使用する手順は次のとおりです。
- 変換マッピング ファイルを作成します。
- 構成ファイルをワークスペースに追加します。
- ソースを再度変換し、問題が解決しないかどうかを確認します。
- ソースタブからオブジェクトを削除してみる
- Database Migration Service では、 を変換できます。 変換プロセスをブロック解除するには、後で欠陥のあるオブジェクトを詳しく調べることにします。 ソースタブからオブジェクトを削除します。
- スキーマをテストして、Database Migration Service がコードを移行先データベースに正しく 適用できることを確認します。
-
テストが成功した場合は、 [変換の問題] タブを使用して、問題を [解決済み] としてマークすることをおすすめします。 これにより、これらの問題をコンバージョンの概要から除外して、後で中断したところから再開できます。
問題を解決済みにする
変換の問題を確認して修正する際に、すでに修正した問題(または移行に影響しないと判断し、対応が必要ない問題)を追跡できます。[解決済みにする] 機能を使用すると、このような問題をフィルタして、問題リストを簡単に移動できます。
問題を解決済みとしてマークする手順は次のとおりです。
- コンソールで [Conversion workspaces] に移動し、ワークスペースを選択します。 Google Cloud
- [ソースツリー] ビューを使用して、変換の問題があるオブジェクトを選択します。
-
[変換の問題] タブで、問題の横にある [解決済みにする] をクリックします。 これで、これらの問題をコンバージョンの概要から除外できます。
図 2.問題を解決済みとしてマークできる [変換の問題] 画面。(クリックして拡大)
移行先でスキーマをテストする
スキーマを移行先データベースに適用する前に、テスト実行を行って、考えられる問題を事前に確認できます。 テストを実行するために、Database Migration Service は一時データベースを作成します。テスト実行は、移行先の Cloud SQL インスタンスに影響しません。
専用の移行ユーザーに
CREATEDB権限があることを確認します。詳細については、 移行先 Cloud SQL インスタンスを作成して構成するをご覧ください。コンソールで [**コンバージョン ワークスペース**] に移動します。 Google Cloud
操作するコンバージョン ワークスペースの表示名をクリックします。
コンバージョン ワークスペース エディタが開きます。
[移行先に適用] [>] [テスト(推奨)] をクリックします。
移行先データベースにスキーマを適用するウィザードが表示されます。
[移行先を定義] セクションで、移行先データベースを指す接続プロファイルを選択します。
[定義して続行] をクリックします。
[オブジェクトを選択してアプリケーションをテスト] セクションで、移行先データベースでテストするデータベース エンティティのスキーマを選択します。
[オブジェクトをフィルタ] ボタンを使用すると、表示されるオブジェクトの数を減らすことができます。 ソース スキーマ ビューでオブジェクトをフィルタするをご覧ください。
[アプリケーションをテスト] をクリックします。
[Cloud SQL for PostgreSQL] タブでアプリケーションのステータスを確認できます。
移行先にスキーマを適用する
移行先データベースで使用するスキーマが要件とマッピングに従って変換されたら、その結果を移行先データベースに適用できます。移行先にスキーマを適用しても、ソース データベースのデータは変更されません。
コンソールで [**コンバージョン ワークスペース**] に移動します。 Google Cloud
操作するコンバージョン ワークスペースの表示名をクリックします。
コンバージョン ワークスペース エディタが開きます。
[移行先に適用] >[適用] をクリックします。
移行先データベースにスキーマを適用するウィザードが表示されます。
[移行先を定義] セクションで、移行先データベースを指す接続プロファイルを選択します。
[定義して続行] をクリックします。
[オブジェクトを確認して変換を移行先に適用] セクションで、移行先データベースに作成するデータベース エンティティのスキーマを選択します。
[オブジェクトをフィルタ] ボタンを使用すると、表示されるオブジェクトの数を減らすことができます。 ソース スキーマ ビューでオブジェクトをフィルタするをご覧ください。
[移行先に適用] をクリックします。
[Cloud SQL 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*)
その結果、フィルタには一致するすべてのテーブルが表示されます。