チェックポイント処理

チェックポイントは、データベースのスナップショットを保持するために使用されます。システム障害が発生した場合、TimesTenでは、トランザクション・ログ・ファイルとチェックポイント・ファイルを使用して、トランザクションの一貫性が保たれていた最後の状態にデータベースをリストアできます。

最後のチェックポイント処理以降に変更されたデータのみが、チェックポイント・ファイルに書き込まれます。チェックポイント処理では、最後のチェックポイント以降に変更されたブロックのデータベースをスキャンします。次に、それらの変更についてチェックポイント・ファイルを更新し、不要なトランザクション・ログ・ファイル(消去可能であると宣言されているファイル)を削除します。「トランザクション・ログ・ファイルが削除される状況」を参照してください。

TimesTenでは、次の2種類のチェックポイントが提供されます。

TimesTenでは、非ブロッキング・チェックポイントは自動的に作成されます。

チェックポイント処理の詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』チェックポイント操作を参照してください。

非ブロッキング・チェックポイント

TimesTenでは、非ブロッキング・チェックポイントはバックグラウンドで自動的に開始されます。非ブロッキング・チェックポイントはファジー・チェックポイントと呼ばれることもあります。

このチェックポイントの頻度はアプリケーションで調整できます。非ブロッキング・チェックポイントにはデータベースのロックが必要ないため、チェックポイント操作の進行中に、複数のアプリケーションで同じデータベースに対してトランザクションを非同期的にコミットまたはロールバックできます。『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』チェックポイントの設定および管理を参照してください。

ブロッキング・チェックポイント

TimesTen Classic使用時は、トランザクション一貫性チェックポイントを構成するために、アプリケーションでttCkptBlocking組込みプロシージャをコールして、ブロッキング・チェックポイントを開始できます。

ブロッキング・チェックポイントは、排他的データベース・ロックを取得します。ブロッキング・チェックポイントの処理中、他の新しいトランザクションはチェックポイント処理トランザクションの後のキューに入れられます。このため、トランザクションが長時間実行されている場合、他のトランザクションが中断される可能性があります。トランザクションが長時間実行されていることにより、ブロッキング・チェックポイントで排他データベース・ロックを取得できなくなる可能性があります。この場合には、長時間実行されているトランザクションがコミットまたはロールバックされる(またはチェックポイント・リクエストが取り消される)まで、チェックポイントおよび後続のすべてのトランザクションが待機することになる可能性があります。チェックポイントの記録にはリカバリに必要な情報が含まれているため、ブロッキング・チェックポイントからのリカバリにトランザクション・ログは必要ありません。

『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』チェックポイントの設定および管理を参照してください。

トランザクション・ログ・ファイルおよびチェックポイント・ファイルからのリカバリ

リカバリ中に、最新のチェックポイント・ファイルがメモリーに読み込まれます。最後のチェックポイント以降にコミットされ、ログ・レコードがファイル・システム上に存在するすべてのトランザクションが、適切なトランザクション・ログ・ファイルからロールフォワードされます。

ファイル・システム上のトランザクションには、永続的にコミットされたすべてのトランザクションのみでなく、ログ・レコードがインメモリー・トランザクション・ログ・バッファからエージ・アウトされたすべてのトランザクションも含まれることに注意してください。コミットされていないトランザクション、またはロールバックされたトランザクションはリカバリされません。

  • TimesTen Scaleout使用時には、チェックポイント・ファイルおよびトランザクション・ログ・ファイルからのデータの自動リカバリを容易にするためのプロセスがあります。『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』障害からのリカバリを参照してください。

  • TimesTen Classic使用時は、システム障害やプロセス障害によってデータベースが無効になるか破損すると、データベースへのすべての接続が無効になります。アプリケーションが障害のあったデータベースに再接続すると、サブデーモンがデータベースに新しいメモリー・リージョンを割り当て、チェックポイント・ファイルおよびトランザクション・ログ・ファイルからそのデータをリカバリします。

障害発生時も絶えずTimesTen Classicデータにアクセスする必要があるアプリケーションの場合は、「TimesTen Classic内のデータ・レプリケーション」を参照してください。