コンバージョン ワークスペースでは、コンバージョンの問題を修正したり、インタラクティブ エディタでオブジェクトを変更したり、変換されたスキーマを移行先データベースに適用したりできます。このページでは、コンバージョン ワークスペースで実行できるすべてのアクションの概要について説明します。
変換ステータスを確認する
[変換の概要] セクションでは、スキーマ変換に関するすべての情報(変換されたオブジェクトの数とタイプ、変換ステータス(未解決の問題や解決済みの問題を含む)、 Gemini による自動変換によって提供される拡張機能のリストなど)を確認できます。
各カテゴリのフィルタを使用して、タイプ、問題の重大度、未解決の問題、解決済みの問題でツリービューに表示されるオブジェクトの数を絞り込むこともできます。コンバージョンの概要は、 アップグレードされたコンバージョン ワークスペースでのみ利用できます。
コードとスキーマの変換の進行状況に関する詳細情報を表示するには、次の操作を行います。
- Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。
- [Oracle] タブで、スキーマ ツリービューを使用して次のいずれかを行います。
- [Oracle] を選択して、ワークスペース内の変換されたすべてのスキーマにあるすべてのオブジェクトの情報を表示します。
- 特定のスキーマまたはオブジェクトを選択して、オブジェクトのサブセットの変換の詳細を表示します。
- [コンバージョンの概要] タブで、[変換されたオブジェクトの概要] セクションの情報を確認します。[オブジェクトを表示] ボタンを使用して、[Oracle] タブのツリービューにフィルタを適用します。
- [変換に関する問題] タブを使用して、変換に関する問題の解決を開始します。詳しくは、 変換に関する問題を解決するをご覧ください。
ソーススキーマからオブジェクトを削除する
ソーススキーマからオブジェクトを削除して、変換から除外します。必要に応じて、後で 削除したオブジェクトを追加できます。
- Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。
- [Oracle] タブで、削除するオブジェクトの横にある [その他] > [削除] を選択します。
- [オブジェクトの削除] 確認ダイアログで、[削除] をクリックします。
- 変換したスキーマを更新します。 [ソースを変換] をクリックします。Database Migration Service が変更を分析し、更新された PostgreSQL スキーマを生成するようになりました。
変換されたスキーマは、[Cloud SQL for PostgreSQL ドラフト] タブで確認できます。
ソーススキーマにオブジェクトを追加する
ソーススキーマから以前に削除したオブジェクトを追加して、変換に追加できます。
- Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。
- [Oracle] タブで、[オブジェクトを追加] をクリックします。
- [オブジェクトを追加] セクションで、ソースリストを使用して、ソーススキーマに追加するすべてのエンティティを選択します。
[オブジェクトをフィルタ] ボタンを使用すると、表示されるオブジェクトの数を減らすことができます。 ソース スキーマ ビューでオブジェクトをフィルタするをご覧ください。
- [オブジェクトを追加] をクリックします。
- 変換したスキーマを更新します。 [ソースを変換] をクリックします。Database Migration Service が変更を分析し、更新された PostgreSQL スキーマを生成するようになりました。
変換されたスキーマは、[Cloud SQL for PostgreSQL ドラフト] タブで確認できます。
ソーススキーマとコードのスナップショットを pull する
移行元のデータベースからコンバージョン ワークスペースにスキーマとコードをいつでも pull できます。ソースをプルすると、コンバージョンで新しいオブジェクトを追加したり、既存のオブジェクトを更新したりできます。
更新されたデータベース スキーマとコードを pull しても、変換ワークスペースに存在するカスタム マッピングはリセットされません。カスタム マッピングを削除することを明示的に選択した場合を除きます。
また、ソースを pull しても、コード オブジェクトの SQL 変更はオーバーライドされません。これらの変更は、オブジェクト レベルで直接リセットできます。
- Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。
- [構成を編集] > [ソーススキーマのスナップショットを再度 pull する] をクリックします。
- ダイアログ ボックスで次の操作を行います。
- 省略可: 既存のカスタム マッピングと DDL の変更を削除するには、[カスタム マッピングをリセット] を選択します。
- [スキーマのスナップショットを pull する] をクリックします。
Database Migration Service は、移行元のデータベースから新しいスナップショットを取得します。
- 変換したスキーマを更新します。 [ソースを変換] をクリックします。Database Migration Service が変更を分析し、更新された PostgreSQL スキーマを生成するようになりました。
変換されたスキーマは、[Cloud SQL for 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-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: コンバージョン ワークスペースの識別子。コンバージョン ワークスペースの 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 オブジェクトをご覧ください。
スキーマで見つかった変換の問題を解決するには、次の操作を行います。
- 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 がコードを移行先データベースに正しく適用できることを確認します。
-
テストが成功した場合は、[コンバージョンの問題] タブで問題を [解決済み] に設定することをおすすめします。これにより、コンバージョンの概要からこれらの問題を除外して、後で中断したところから再開できます。
問題を解決済みにする
変換の問題を確認して修正する際に、すでに修正した問題(または移行に影響しないと判断して対応を必要としない問題)を把握しておくと便利です。[解決済みにする] 機能を使用すると、このような問題をフィルタして、問題リストを簡単に確認できます。
問題を解決済みとしてマークする手順は次のとおりです。
- Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。
- [ソースツリー] ビューを使用して、変換の問題があるオブジェクトを選択します。
-
[変換に関する問題] タブで、問題の横にある [解決済みにする] をクリックします。 コンバージョンの概要からこれらの問題をフィルタで除外できるようになりました。
図 2. 問題を解決済みにできる変換の問題画面。(クリックして拡大)
移行先でスキーマをテストする
スキーマを宛先データベースに適用する前に、テスト実行を行って、発生する可能性のある問題を事前に確認できます。テストを実行するために、Database Migration Service は一時データベースを作成します。テスト実行は、移行先の Cloud SQL インスタンスに影響しません。
専用の移行ユーザーに
CREATEDB権限があることを確認します。詳細については、 移行先の Cloud SQL インスタンスを作成して構成するをご覧ください。Google Cloud コンソールで、[変換ワークスペース] に移動します。
操作するコンバージョン ワークスペースの表示名をクリックします。
コンバージョン ワークスペース エディタが開きます。
[Apply to destination] > [Test (recommended)] をクリックします。
スキーマを移行先データベースに適用するウィザードが表示されます。
[宛先の定義] セクションで、宛先データベースを指す接続プロファイルを選択します。
[定義して続行] をクリックします。
[オブジェクトを選択してアプリケーションをテストする] セクションで、移行先データベースでテストするデータベース エンティティのスキーマを選択します。
[オブジェクトをフィルタ] ボタンを使用すると、表示されるオブジェクトの数を減らすことができます。 ソース スキーマ ビューでオブジェクトをフィルタするをご覧ください。
[アプリケーションをテスト] をクリックします。
アプリケーションのステータスは、[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*)
その結果、フィルタには一致するすべてのテーブルが表示されます。