Consultor Eletrônico



Kbase P71887: Unable to switch to new ai extent after adding a new ai extent to the database
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   03/12/2007
Status: Verified

SYMPTOM(s):

Unable to switch to new ai extent after adding a new ai extent to the database

Can't switch to after-image extent dbname.a4 it is full. (3773)

New After-image extents have been added

rfutil list shows that the LAST ai extent is not the BUSY extent

the last ai extent is a FULL (unavailable) ai file

the last ai extent is a LOCKED (unavailable) ai file

rfutil aimage new returns error 3784

Failed to switch to next after-image extent. (3784)

CAUSE:

In versions prior to Progress 9.1E or OpenEdge 10.0B, inserting a new ai extent between existing ones may fail to switch when the BUSY extent becomes filled.

In other words, when adding a new ai extent, if the extents BETWEEN the (current) BUSY ai extent and the (newly added) Empty extent has (UN-available) FULL or LOCKED extents in-between before restarting the database and re-summing operations, we will fail to roll-over because we don't 'jump' the unavailable extent into the newly-added EMPTY extent.


This is because the ai extent switches have to be sequential from the busy extent, a rfutil dbname -C aimage list of 5 after-image extents, where the 5th ai extent is the newly added extent, will show:

EXTENT: 3 -> 4 -> 5 -> 1 -> 2
STATUS: BUSY > FULL > EMPTY > LOCKED > LOCKED
SEQNO: 7 -> 4 -> 0 -> 5 -> 6

When we resume operations, extent 3 will eventually fill up or be switched by a cron job and we cannot skip over extent 4 to the newly added extent 5. Extent 4 needs to be an EMPTY extent.

CAUSE:

Enhancement Request# 20040312-004

FIX:

Upgrade to Progress 9.1E or Open Edge 10.0B (and later), where the new "prostrct reorder ai <dbname>" utilitiy has been added. This is a enhancement to prostrct utility that can be used to overcome this situation. The prostrct reorder ai utility moves empty ai extents in front of the existing FULL/LOCKED extents so that an ai switch can suceed.

If unable to upgrade, adding additional AI areas should ideally only be added at a time when either the current BUSY AI area is the last physical AI Area (extent 4 in the above example is the BUSY exent when new ai extents are added), or the ai extents between the current BUSY and the last ai extent are all EMPTY (extent 4 in the above example is an EMPTY exent when new ai extents are added). Alternatively, the FULL extents need to be backed up then emptied with rfutil -C aimage empty.

If the database has been enabled for Fathom/OpenEdge replication, and the extents are LOCKED:

Before resuming operations, it is strongly advisable to copy off all FULL extents between the existing BUSY and newly added EMPTY extent, then mark these as EMPTY with:
$ rfutil dbname -C aimage empty
NOTE: Emptying extents will not suceed if the extents are marked "LOCKED" as may be the case with Fathom/OpenEdge Replication enabled source database.

Continuing the example from above, a "rfutil dbname -C aimage list" would produce the following result that would ensure normal roll-over ai switch, after "prostrct reorder ai <dbname>" has been run. Note the ai SEQUENCE numbers have been re-ordered to ensure that the new EMPTY extent is immediately after the current BUSY extent.
EXTENT: 3 -> 4 -> 5 -> 1 -> 2

STATUS: BUSY > EMPTY > FULL > LOCKED > LOCKED

SEQNO: 7 -> 0 -> 4 -> 5 -> 6