データ分散エラーからのリカバリ
ttGridAdmin dbDistribute -apply
コマンドを使用して分散マップに変更を適用すると、既存のデータが再分散されます。データ分散の進行中にデータ分散またはリセットをリクエストすると、エラーが発生します。
「データベース内のデータの再分散」を参照してください。
TimesTenでは、データ分散を実行するために複数のプロセスが生成されます。また、アクティブ管理インスタンスは、データ分散を促進するためにデータ・インスタンスと通信します。アクティブ管理インスタンスは、各データ分散の進行状況を追跡するためにメタデータを格納します。そのため、クリティカル・プロセスが失敗した場合や、インスタンスが失敗した場合や、アクティブ管理インスタンスとデータ・インスタンスとの通信が失敗した場合は、データ分散が失敗する可能性があります。
データ分散中にdbDistribute -apply
コマンドが失敗した場合は、次のエラー・メッセージが表示されます。
% ttGridAdmin dbDistribute database1 -apply
Error : Distribution failed, error message lost due to process failure
アクティブ管理インスタンスでデータ分散操作の成功や失敗を認識できない場合や、メタデータが中間状態のままになっている場合は、いくつかの障害が発生する可能性があります。これは、(dbDistribute -apply
を実行した)プロセスが異常終了したか強制終了された場合に発生します。
データ分散が失敗したか完了しない場合は、別のdbDistribute -apply
コマンドを再度開始しないでください。かわりに、dbDistribute -resync
コマンドを実行します。dbDistribute -resync
コマンドは、アクティブ管理インスタンス内のメタデータを調べて、dbDistribute -apply
操作が進行中であったが完了しなかった(変更のコミットもロールバックも行われていない)かどうかを判断します。そのような場合、dbDistribute -resync
コマンドは、データベース内のメタデータをアクティブ管理インスタンス内のメタデータと再同期します(一致する状態がない場合)。
-
dbDistribute -resync
コマンドが成功した場合は、再同期により、前のdbDistribute -apply
操作のメタデータ変更がコミットまたはロールバックされる可能性があります。 -
dbDistribute -resync
コマンドが失敗した場合は、次のいずれかを実行できます。-
dbDistribute -apply
コマンドを実行して同じ分散を試行します。 -
dbDistribute -reset
コマンドを実行して、まだ適用されていないすべての分散設定を破棄し、dbDistribute -apply
コマンドを使用して新しいデータ分散を試行します。
-
次の例は、dbDistribute -resync
コマンドでデータ分散操作が正常に完了した場合の出力を示しています。
% ttGridAdmin dbDistribute -resync
Distribution map updated
次の例は、dbDistribute -resync
コマンドでデータ分散操作をロールバックした場合の出力を示しています。
% ttGridAdmin dbDistribute database1 -resync
Distribution map Rolled Back
次の例は、dbDistribute -resync
コマンドで進行中のデータ分散がないことが検出された場合の出力を示しています。
% ttGridAdmin dbDistribute database1 -resync
No DbDistribute is currently in progress
次の例は、dbDistribute -resync
コマンドでデータ分散がまだ進行中であることが検出された場合の出力を示しています。
% ttGridAdmin dbDistribute database1 -resync
Distribute is still in progress. Wait for dbDistribute to complete, then call resync
再同期に失敗した場合は、エラーが表示されます。たとえば、アクティブなデータ・インスタンスがないときにデータ分散を再同期しようとしたとします。このような場合は、次のエラーが表示されます。
% ttGridAdmin dbDistribute database1 -resync
Error : Could not connect to data instance to retrieve partition table version
『Oracle TimesTen In-Memory Databaseリファレンス』のデータベースの分散スキームの設定または変更(dbDistribute)を参照してください。