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キャッシュ・グループの使用の制限」を参照してください。