AWTキャッシュ・グループによって保証されることおよび保証されないこと
AWTキャッシュ・グループには、いくつかの保証があります。
AWTキャッシュ・グループでは、次のことが保証されます。
-
TimesTenデータベースとOracle Databaseの間の通信障害が原因でトランザクションが失われないこと。
-
レプリケーション・エージェントが実行されていない場合またはOracle Databaseへの接続を失った場合は、エージェントの再起動後またはOracle Databaseに再接続後に、TimesTenキャッシュ表に対してコミットされた変更を、キャッシュされたOracle Database表に自動伝播する処理が再開されること。
-
トランザクションが、TimesTenデータベースでコミットされた順序と同じ順序で、Oracle Databaseでもコミットされること。
AWTキャッシュ・グループでは、次のことが保証されません。
-
TimesTenデータベースでコミットが成功したすべてのトランザクションが、Oracle Databaseに正しく伝播され、コミットされること。Oracle Databaseで実行エラーが発生すると、Oracle Databaseのトランザクションがロールバックされます。たとえば、一意制約違反のためにOracle Databaseでの更新が失敗する可能性があります。実行エラーが発生したトランザクションは再試行されません。
実行エラーは永続エラーであるとみなされ、TimesTenデータベースのチェックポイント・ファイルと同じディレクトリに存在する
TimesTenDatabaseFileName
.awterrs
ファイルにレポートされます。「AWTキャッシュ・グループでのOracle Database永続エラーのレポート」を参照してください。 -
Oracle Database更新の絶対順序が保存されること(TimesTenは更新競合を解決しないため)。次に例を示します。
-
2つの異なるTimesTenデータベース(
DB1
およびDB2
)で、異なるAWTキャッシュ・グループが同じOracle Database表をキャッシュしています。DB1
内のキャッシュ表で、更新がコミットされます。次に、DB2
内のキャッシュ表で、更新がコミットされます。2つのキャッシュ表は異なるTimesTenデータベースに存在し、同じOracle Database表をキャッシュしています。ライトスルー操作は非同期であるため、DB2
の更新がOracle Databaseに伝播されてから、DB1
の更新が伝播される場合があり、この結果、DB1
の更新によって、DB2
の更新が上書きされます。 -
AWTキャッシュ・グループ内のキャッシュ表で更新がコミットされます。この同じ更新が、パススルー処理を使用して、キャッシュされたOracle Database表でコミットされます。キャッシュ表の更新は、Oracle Databaseに自動的に非同期で伝播されますが、伝播された更新とパススルーされた更新をOracle Databaseで処理するタイミングによっては、キャッシュされたOracle Database表で直接処理される、パススルーされた更新を上書きする場合があります。この状態と他にエラーが発生する可能性がある状態に備えて、TimesTenでは、AWTキャッシュ・グループにキャッシュされているOracle Database表に対して、直接DML文を実行しないことをお薦めします。詳細は、「AWTキャッシュ・グループの使用の制限」を参照してください。
-