Subject Re: [ib-support] OAT and OIT
Author Ann Harrison
At 08:50 PM 2/13/2001 +0100, guido.klapperich@... wrote:
>Can somebody please explain to me the difference between OIT and OAT.
>OIT = is the first transaction in a state other than committed in the
>database's Transaction Inventory Pages (TIP)

The Transaction Inventory Pages record the state of every transaction
that has run since the database was created or restored from a backup.
The OIT is the oldest transaction that rolled-back. It can be reset
by sweeping the database. Thus if the third transaction run against
the database rolled back, the OIT would be 3, and would stay at 3
until you restored from a backup or ran sweep. Could be

>OAT = is the first transaction marked as active in the TIP pages
>Sorry, but for me, it sounds equal.

The TIPs keep four states: Active, Committed, Dead, and Limbo.
Committed and Dead are pretty obvious. Limbo is the state between
phases of a two-phase commit. If an Active transaction dies without
announcing its death, some one will trip over it eventually and
change its state to dead. Within the margins of experimental error,
the OAT is a running transaction.

So, the OIT is likely to be long dead. The OAT is not.

>The next point, that is not clear to me, is the sweep-interval. When
>OIT-OAT>sweep-interval, then the garbage collection starts. The
>default-value of the sweep-interval is 20000, but when you end the
>transactions as soon as possible (as it is supposed), then the
>difference between OIT and OAT will never become so large and so the
>garbage collection will never start.

Any rollback sets the OAT, regardless of transaction length.


We have answers.