ヘッダーをスキップ

Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド リリース6.0 B25770-01 |
| 目次 | 索引

前へ | 次へ |

## Logging

ディスクへのロギングは、リカバリ中に、コミットされたトランザクションを再実行し、ロールバックされるトランザクションを取り消すために使用されます。ログの保守に必要な処理と、ログをディスクに書き込むことで発生する遅延の両方が原因で、ディスクへのロギングによってパフォーマンスが低下します。一方、ディスクレス・ロギングはログ・ファイルを生成しないため、リカバリ中には使用できません。したがって、ディスクレス・ロギングでは、チェックポイントを使用することが、トランザクションの永続性を保証する唯一の方法です。ディスクへのロギングおよびディスクレス・ロギングでは、アプリケーションで不要なトランザクションをロールバックできます。また、デッドロック時にTimesTenでのトランザクションのロールバックも可能にします。ロギングが無効な場合、永続的コミットは使用できません。ロギングが無効にされた場合、TimesTen Data Managerが失敗した処理の前の時点にデータ・ストアをリストアできないときは、原子的でない処理ではエラーまたは警告が戻されます。トランザクション管理の詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のトランザクション管理とリカバリに関する項を参照してください。

永続性と原子性をパフォーマンスのために無効にできるアプリケーションでは、ロギングを完全にオフにするか、ディスクレス・ロギングを使用できる可能性があります。

ディスクレス・ロギングが使用される場合、ログ・レコードを書き込むトランザクションでは定期的にコミットする必要があります。定期的にコミットしない場合、ログ・バッファが一杯になる可能性があります。ディスクレス・ロギングが有効な場合、ログ・バッファの領域はトランザクションがコミットされた段階で再利用可能になります。先に開始されたトランザクションがコミットされていない場合、トランザクションをコミットしてもバッファ領域が解放されないことがあります。コミットされていないトランザクションによって書き込まれたログ・レコードは、トランザクションがコミットされるかロールバックされるまでログ・バッファ内に残ります。ログ・バッファにそのようなレコードがある場合、そのログ・レコードの後に書き込まれたすべてのログ・レコードは、それらのトランザクションがコミットまたはロールバックされた場合にも、バッファ内に残ります。このため、ログ・バッファの領域が効率的に消費されます。長時間実行されるトランザクションでは、バッファがいっぱいになることがあります。

これにより、ログ・バッファがいっぱいで再利用する領域がない状況が発生する可能性があります。この場合、TimesTenは、ログ・バッファが一杯になったトランザクションを強制的に終了します。

ロギングを完全に無効にするには、Loggingパラメータを0に設定します。ディスクレス・ロギングを設定するには、Loggingパラメータを2に設定します。Oracle表をキャッシュするには、ディスクへのロギングまたはディスクレス・ロギングのいずれかを有効にする必要があります。

Loggingを無効に（Loggingを0に設定）すると、行レベル・ロックが無効になります。詳細は、「LockLevel」を参照してください。また、Logging属性を0または2に設定すると、DurableCommits（DurableCommits）およびLogPurge（Loggingの設定）が無効になります。このような競合を回避するには、MatchLogOpts属性（MatchLogOpts）を使用します。

アクセス制御

アクセス制御が有効な場合、この属性にはADMIN権限が必要です。

設定

Loggingは次のように設定します。

CまたはJavaプログラム 、あるいはUNIX ODBC.INIファイル | Logging | 0: データ・ストアへの変更を記録しません。 1: データ・ストアへの変更をディスクに記録します（デフォルト）。 2: データ・ストアへの変更を内部ログ・バッファにのみ記録します。
Windows ODBCデータソース・アドミニストレータ | 「Logging」フィールド | 0: データ・ストアへの変更を記録しません。 1: データ・ストアへの変更をディスクに記録します（デフォルト）。 2: データ・ストアへの変更を内部ログ・バッファにのみ記録します。