Oracle NoSQL Database Migratorのトラブルシューティング

使用中に直面する可能性のある一般的な課題とその解決方法について学習します。

移行に失敗しました。どうすれば解決できますか。

データ移行の失敗は、基礎となる複数の理由で発生する可能性があります。重要な原因を次に示します。

表1-5 移行失敗の原因

エラー・メッセージ 意味 解決方法
Failed to connect to Oracle NoSQL Database マイグレータはNoSQL Databaseとの接続を確立できませんでした。
  • 構成JSONファイルのstoreNameおよびhelperHosts属性の値が有効で、ホストにアクセスできることを確認します。
  • 保護されたストアの場合は、セキュリティ・ファイルが有効で、ユーザー名とパスワードの値が正しいかどうかを確認します。
Failed to connect to Oracle NoSQL Database Cloud Service マイグレータはOracle NoSQL Database Cloud Serviceとの接続を確立できませんでした。
  • 構成JSONファイルに指定されたエンドポイントURLまたはリージョン名が正しいかどうかを確認します。
  • OCI資格証明ファイルが、構成JSONファイルで指定されたパスで使用可能かどうかを確認します。
  • OCI資格証明で提供されているOCI資格証明が有効であることを確認します。
Table not found 移行用に指定された表がNoSQL Database Migratorで見つかりませんでした。

ソースの場合:

  • 表がソース・データベースに存在することを確認します。
  • 表がデフォルト以外のネームスペースに作成されている場合は、構成JSONファイルで表がそのネームスペースで修飾されていることを確認します。
  • 表へのアクセスに必要な読取り/書込み権限があるかどうかを確認します。
  • ソースがOracle NoSQL Database Cloud Serviceの場合は、構成JSONファイルで有効なコンパートメント名が指定されているかどうかを確認し、表へのアクセスに必要な権限があることを確認します。

シンクの場合:

  • 表がシンクに存在することを確認します。存在しない場合は、表を手動で作成するか、schemaInfo構成を使用して移行によって作成する必要があります。
DDL Execution failed 入力スキーマ定義ファイルに指定されたDDLコマンドが無効です。
  • schemaPathファイルのDDLコマンドの構文を確認します。
  • schemaPathファイルの行ごとにDDL文が1つのみであることを確認します。
failed to write record to the sink table with java.lang.IllegalArgumentException 入力レコードがシンクの表スキーマと一致しません。
  • ターゲット・シンク表に指定されているデータ型および列名がシンク表スキーマと一致するかどうかを確認します。
  • 変換を適用した場合は、変換されたレコードがシンク表スキーマと一致しているかどうかを確認します。
Request timeout ソースまたはシンクの操作が予想時間内に完了しませんでした。
  • ネットワークの接続を確認します。
  • NoSQL Databaseが稼働していることを確認します。
  • 構成JSONファイルのrequestTimeout値を増やします。

失敗した移行を再開する前に考慮する必要があることを教えてください。

データ移行タスクが失敗すると、シンクは実行中状態になり、障害が発生した時点までにインポートされたデータが含まれます。ログからエラーおよび障害の詳細を特定し、エラーの診断および修正後に移行を再開できます。移行を再開するともう一度やり直され、すべてのデータが最初から処理されます。移行をチェックポイント処理し、障害が発生した時点から再開する方法はありません。したがって、NoSQL Database Migratorは、シンクにすでに移行されているすべてのレコードを上書きします。

ベスト・プラクティス

データ移行にかかる時間は、移行するデータ量、ネットワーク速度、データベースの現在の負荷などの複数の要因に依存します。クラウド・サービスの場合、移行の速度は、読取りスループットおよびプロビジョニングされた書込みスループットにも依存します。したがって、移行速度を向上させるために、次のことができます。

  • データベースへのロードが少ない場合、オフ時間中に移行を実行することを検討してください。
  • NoSQL Database Migratorが実行されるVMの割当て、データ・ソースの定義、および同じOCIリージョンでのデータ・シンクの定義を検討して、ネットワーク・レイテンシが最小限になるようにします。
  • Oracle NoSQL Database Cloud Serviceの場合は、表に割り当てられた記憶域が十分かどうかを確認します。NoSQL Database Migratorが表を作成していない場合は、書込みスループットを向上できます。マイグレータが表を作成している場合は、シンク構成のschemaInfo.writeUnitsパラメータに大きい値を指定することを検討します。データ移行の完了後、この値を小さくできます。

    ノート:

    スループットまたはストレージの制限を増やすことができる回数に制限はありません。スループット制限またはストレージ制限は、24時間以内に最大4回まで減らすことができます。クラウド制限および「シンク構成テンプレート」を参照してください。
Migratorユーティリティは、複数のストリームを並行して処理することで、移行速度を向上させるように本質的に設計されています。この機能を様々な移行シナリオで利用する方法を次に示します:
  • Oracle NoSQL Database Cloud Service/オンプレミスの表からファイル・システム/オブジェクト・ストレージ・シンクへの移行:

    Migrator構成でuseMultiFilesおよびchunkSizeパラメータを設定します。useMultiFilesパラメータを指定すると、シンクに複数のファイル/オブジェクトが作成されます。chunkSizeパラメータは、データ・エクスポート中の各ファイルのサイズを決定します。

    たとえば、2 GBのデータをエクスポートするには、useMultiFilesパラメータをtrue、およびchunkSizeパラメータを40MBに設定すると、Migratorユーティリティはそれぞれ40 MBの50個のファイルを書き込みます。

    ノート:

    Migratorユーティリティは、現在100個のストリームを並行して処理できます。このため、データ・エクスポート中にMigratorユーティリティによって最大100個のファイルが作成されるように、chunkSizeパラメータを最適なファイル・サイズ値に設定します。
  • ファイル・システム/オブジェクト・ストレージからOracle NoSQL Database Cloud Service/オンプレミスのシンクへの移行:
    • ファイル・システム/オブジェクト・ストレージで、以前の移行からの複数のファイル/オブジェクトを含むデータをエクスポートした場合、Migratorユーティリティはファイルを自動的に並列で処理し、データのインポート中に移行速度を向上させます。
    • 他の外部ファイル・システム/オブジェクト・ストレージからデータを移行する場合は、データ・ソースで複数のファイル/オブジェクトにデータを分割することを検討してください。

    ノート:

    • Oracle NoSQL Database Cloud Serviceシンクの場合、移行操作中に最大100個のストリームを処理するために、十分な書込みスループットおよび表書込み単位率を構成する必要があります。
    • 100を超えるソース・ファイルがある場合、Migratorユーティリティは最大100個のストリームを作成し、データ・インポート時にそれらの間でファイルを分散します。各ストリームのファイルは順次移行されます。

大量のデータセットを含む長時間の移行があります。移行の進行状況を追跡するにはどうすればよいですか。

追加のロギングを有効にして、長時間実行される移行の進行状況を追跡できます。Oracle NoSQL Database Migratorのロギング動作を制御するには、logging.propertiesファイルで必要なロギング・レベルを設定する必要があります。このファイルはNoSQL Database Migratorパッケージに付属しており、Oracle NoSQL Database Migratorが解凍されたディレクトリで使用できます。ロギングの様々なレベルは、冗長性の低い方から順にOFF、SEVERE、WARNING、INFO、FINEおよびALLです。ログ・レベルをOFFに設定するとすべてのロギング情報が無効になる一方、ログ・レベルをALLに設定すると完全なログ情報が表示されます。デフォルトのログ・レベルはWARNINGです。すべてのロギング出力は、デフォルトでコンソールに出力されるように構成されます。各ログ・レベルに関するコメントは、logging.propertiesファイルに表示されます。