データ分散エラーからのリカバリ

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)を参照してください。