Oracle から PostgreSQL への移行に関する問題を診断する

移行ジョブ プロセスで、ランタイム中にエラーが発生することがあります。

  • エラーには、ソース データベースの不正なパスワードなど、回復可能なものもあります。これらのエラーが修正されると、移行ジョブは自動的に再開されます。
  • データ レプリケーションのエラーなど、一部のエラーは復元できません。これらのエラーを修正したら、移行ジョブを再起動する必要があります。

エラーが発生すると、移行ジョブのステータスは Failed に変わり、サブステータスは障害発生前の最後のステータスを反映します。エラーのトラブルシューティングを行うには、失敗した移行ジョブに移動してエラーを確認し、エラー メッセージに記載されている手順に沿って操作します。エラーの詳細を表示するには、移行ジョブのリンクを使用して Cloud Monitoring に移動します。ログは特定の移行ジョブにフィルタされます。

次の表に、問題の例とその解決方法を示します。

症状 考えられる原因 次の方法をお試しください
エラー メッセージ: Cloud DMS can't set up a tunnel to be connected to the bastion host Database Migration Service が踏み台インスタンスにアクセスできなかったか、踏み台インスタンスが接続を受け入れていません。 接続プロファイルの転送 SSH トンネルの設定と踏み台インスタンスの構成を確認してから、もう一度お試しください。
エラー メッセージ: Cloud DMS can't connect to the database または Cloud DMS private connectivity error, cannot connect to the database Database Migration Service は、移行元の Oracle データベースへの接続を確立できませんでした。

プロジェクトから移行元 Oracle データベースにアクセスできることを確認し、移行元の接続プロファイルで接続設定が正しく構成されていることを確認します。

ORA-12170: TNS:Connect timeout occurred などの特定の Oracle エラーコードが含まれている場合は、Oracle のドキュメントで詳細を確認してください。

エラー メッセージ: Archiving mode is not ARCHIVELOG ソースが正しく設定されていない。 ソースを正しく構成します。詳細については、移行元 Oracle データベースの構成をご覧ください。
エラー メッセージ: Supplemental logging ("ALL COLUMN LOGGING") isn't turned on for the tables listed below ソースが正しく設定されていない。 ソースを正しく構成します。詳細については、移行元 Oracle データベースの構成をご覧ください。
エラー メッセージ: No Archive Log Files were found in the source Database Migration Service は、閉じられたアーカイブ ログのみを読み取りますが、移行元データベースにログは見つかりませんでした。
  1. 移行元データベースで次のコマンド ALTER SYSTEM SWITCH LOGFILE を実行して、現在のログファイルを閉じます。
  2. ログをもう一度探します。

データベースにアクティブな書き込みオペレーションがない場合は、ログの作成をトリガーするために INSERT オペレーションを 1 つ以上実行する必要があります。

エラー メッセージ: We're missing the necessary permissions to read from the source ソースが正しく設定されていない。 ソースを正しく構成します。詳細については、移行元 Oracle データベースの構成をご覧ください。
エラー メッセージ: Unable to connect to the destination database 宛先データベースへの接続中に問題が発生しました。 移行先の PostgreSQL 接続プロファイルの設定を確認します。プライベート接続については、Private Service Connect エラーのトラブルシューティングをご覧ください。
エラー メッセージ: database {database_name} does not exist Database Migration Service では、移行先データベース名とユーザー名が一致することが想定されています。 宛先接続プロファイルに指定されているユーザー名と宛先データベース名が一致していることを確認します。移行先データベースを再作成するか、移行先データベースと一致する別のユーザー名を作成します。詳細については、移行先の Cloud SQL for PostgreSQL データベースを構成するをご覧ください。

Ora2pg を実行して、宛先データベースにスキーマを作成していることを確認します。

エラー メッセージ: The following tables don't exist in the destination database: {table_names} 移行しようとしているテーブルが、宛先データベースに存在しません。 Ora2pg を実行して移行先データベースにスキーマを作成するか、移行ジョブの設定を変更していることを確認します。
エラー メッセージ: password authentication failed for user {username} 宛先データベースのユーザー名またはパスワードが正しく構成されていません。 移行先の PostgreSQL 接続プロファイルが、正しいユーザー名とパスワードで正しく構成されていることを確認します。
エラー メッセージ: The following tables in the destination database don't have primary keys: {table_names} リストに表示されるテーブルは宛先データベースに存在しますが、主キーがありません。 Ora2pg を実行して、宛先データベースにスキーマを作成していることを確認します。ソーステーブルに主キーがない場合は、宛先データベースでキーを手動で作成します。
警告: The following tables have foreign keys: {table_names} リストされているテーブルは宛先データベースに存在しますが、外部キーがあります。 Database Migration Service はトランザクション モードでデータを複製しないため、テーブルが順序どおりに移行されない可能性があります。外部キーが存在し、外部キーを使用する子テーブルが親テーブルの前に移行された場合、レプリケーション エラーが発生する可能性があります。

このようなデータの整合性の問題を回避するには、移行ユーザーの REPLICATION オプションを使用して外部キーをスキップします。詳細については、 宛先を構成するをご覧ください。

エラー メッセージ: Unable to resume replication as log position is lost このエラーは、レプリケーション プロセスが長時間一時停止され、ログの位置が失われた場合に発生することがあります。 移行ジョブは、ログの保持期間に近づく期間は一時停止しないでください。エラーが発生した場合は、移行ジョブを再作成します。
エラー メッセージ: ORA-00942: table or view does not exist このエラーは、Oracle サーバーでのキャッシュ保存が原因で発生することがあります。 データベース ユーザーを再作成して、キャッシングの問題を解決します。
移行ジョブは完全なダンプ フェーズのままで、変更データ キャプチャ(CDC)フェーズに進みません。 Database Migration Service が一部テーブルのフルダンプを引き続き実行している、または 1 つ以上のテーブルでエラーが発生してフルダンプが完了できない。
  • 移行ジョブのエラーを確認し、テーブルに適用されるエラーを修正するか、関連するテーブルをジョブから削除します。
  • Database Migration Service のログで、進行中の完全ダンプ アクティビティを確認し、完了するまで待ちます。