コンバージョン ワークスペースでは、コンバージョンの問題を修正し、インタラクティブ エディタでオブジェクトを変更して、変換されたスキーマを移行先データベースに適用できます。このページでは、コンバージョン ワークスペースで実行できるすべての操作の概要について説明します。
コンバージョンのステータスを確認する
[変換の概要] セクションでは、スキーマ変換に関するすべての情報(変換されたオブジェクトの数とタイプ、変換ステータス(未解決または解決済みの問題を含む)、 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 しても、カスタム マッピングを明示的に削除しない限り、変換ワークスペースに存在するカスタム マッピングはリセットされません。また、ソースを pull しても、コード オブジェクトの SQL の変更はオーバーライドされません。これらの変更は、オブジェクト レベルで直接リセットできます。
Cloud Storage にアップロードされた JSON メタデータ ファイルを使用してコンバージョン ワークスペースを初期化した場合、ファイルはデータベース オブジェクトの静的な表現であるため、新しいオブジェクトを自動的に検出することはできません。ソーススキーマを更新し、既存のカスタム マッピングと SQL の変更を保持するには、抽出を再度実行し、更新されたスキーマ ファイルを Cloud Storage バケットの同じフォルダにアップロードします(以前のファイルを上書きします)。その後、スナップショットを再度 pull します。詳細については、 Python スクリプトを使用してスキーマ メタデータを抽出するをご覧ください。代わりに、[ソース構成を編集] を使用してワークスペースを別の Cloud Storage フォルダまたはソース接続プロファイルに切り替えると、Database Migration Service はワークスペースをリセットし、選択したすべてのオブジェクト、ドラフト スキーマ、カスタム マッピング、DDL の変更を削除します。
- Google Cloud コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。
- [ 構成を編集] > [ソーススキーマのスナップショットを再度 pull する] をクリックします。
- ダイアログで次の操作を行います。
- 省略可: 既存のカスタム マッピングを削除するには、[カスタム マッピングをすべて削除] を選択します。ソーススキーマを pull しても、オブジェクトの SQL コードの変更はリセットされません。
- [スキーマのスナップショットを pull] をクリックします。
Database Migration Service は、構成済みのソースから新しいスナップショットを pull します。
- 変換されたスキーマを更新します。[ ソースを変換] をクリックします。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: コンバージョン ワークスペースの識別子。コンバージョン ワークスペースの識別子を取得する方法については、 コンバージョン ワークスペースの詳細を表示するをご覧ください。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 オブジェクトをご覧ください。
スキーマで見つかった変換の問題を解決するには、次の操作を行います。
- 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 コンソールで [コンバージョン ワークスペース] に移動し、ワークスペースを選択します。
- [ソースツリー] ビューを使用して、変換の問題があるオブジェクトを選択します。
-
[変換に関する問題] タブで、問題の横にある [解決済みにする] をクリックします。 コンバージョンの概要から、これらの問題を除外できるようになりました。
図 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*)
その結果、フィルタに一致するすべてのテーブルが表示されます。
Python スクリプトを使用してスキーマ メタデータを抽出する
コンバージョン ワークスペースを作成するときに、Database Migration Service を使用して初期スキーマ スナップショットを作成するか、Google 提供の Python 抽出スクリプトを使用して手動で作成するかを選択できます。ソース スキーマが変更された場合や、追加のオブジェクトを含める場合は、抽出を再度実行してコンバージョン ワークスペースを更新する必要があります。手順は次のとおりです。
- Google Cloud コンソールで [コンバージョン ワークスペース] に移動します。
- [ワークスペースを設定] をクリックします。
- [コンバージョン ワークスペースの作成] ページで、次の操作を行います。
- ワークスペースの名前、識別子、リージョンを入力します。
- [移行元データベース エンジン] プルダウン メニューから [Oracle] を選択します。
- [移行先データベース エンジン] プルダウン メニューから [Cloud SQL for PostgreSQL] を選択します。
- 省略可: ワークスペースの Gemini 設定を有効にして、[続行] をクリックします。このワークスペースを変換に使用せず、Python 抽出スクリプトのみを取得する場合は、これらの設定をスキップできます。
- [ソースの定義とスキーマ スナップショットの pull] ページの [ソース接続方法] セクションで、[Cloud Storage] を選択します。
- [フォルダを選択する前に] セクションで、[Oracle メタデータ エクストラクタ] の見出しの横にある [開く] をクリックします。
- サイドパネルの手順に沿って、抽出ユーティリティをダウンロードしてソース データベースに対して実行し、スキーマ メタデータの JSON ファイルを生成します。このユーティリティを使用するには、ソース データベースとのネットワーク接続を確立できる必要があります。
- 抽出したメタデータ JSON ファイルを専用の Cloud Storage バケットの同じフォルダにアップロードし、以前のファイルを上書きします。
新しいソーススキーマのスナップショットを使用して、コンバージョン ワークスペースを更新できるようになりました。 ソーススキーマとコードのスナップショットを pull するをご覧ください。