Kbase P88219: Will after-image extents with a variable fixed size switch when the fixed size is reached ?
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  3/25/2008 |
|
Status: Verified
GOAL:
Will after-image extents with a variable fixed size switch when the fixed size is reached ?
GOAL:
If a variable length ai file reaches 2GB will it switch to the next variable ai file ?
GOAL:
Fixed length ai extents are taking up too much space permanently
GOAL:
Having variable length ai extents may cause a runaway 2GB filesize
GOAL:
How to switch to the next available variable extent without scripting?
FIX:
This Solution assumes familiarity with the "rfutil" commands necessary to manage after-imaging (AI). Please refer to the "Database Administration Guide and Reference" Section "After-Imaging" otherwise.
While there is no limit to the number of variable-length AI extents that may be defined on a Progress database, if the current "BUSY" variable ai extent reaches the 2GB limit (in an environment where large files have
ot/ been enabled), the extent will not switch to the next EMPTY variable ai extent and the database will crash with:
SYSTEM ERROR: Attempted to exceed maximum size on file <current variable ai extent>. (9452)
Can't extend ai extent <current variable ai extent> (3779)
Database Server shutting down as a result of after-image extent switch failure. (5350)
Were largefiles enabled, this variable extent would have grown to OS filesystem limits in size and then the same crash would have resulted. In other words, even if there were an available "EMPTY" ai extent after this extent, there would have been no switching to this extent (which if on the same filesystem, would not have had any space left to grow into anyway).
The database crash can be avoided by adding -aistall to the database startup parameters, at which time, a quiet point will be issued instead of bringing the database down until manual intervention from the database manager who switches to the next ai-extent:
SYSTEM ERROR: Attempted to exceed maximum size on file <current variable ai extent>. (9452)
Can't extend ai extent <current variable ai extent> (3779)
Backup ai extent and mark it as empty. (3776)
# The -aistall kicks in, database activity is suspended, Database Administrator:
- archives all full ai extents then,
- marks these as empty (RFUTIL -C aimage empty) then,
- forces an ai switch (RFUTIL -C aimage new), allowing for database activity to resume.
If, however, instead of indicating a variable-length ai extent by /leaving out/ the extent size in the dbname.st file entry line, the maximum size to which the extent can grow is specified by indicating the "v" extent type and a size in kilobytes when the ai files are added to the database structure:
Example of ai extents
# a fixed ai extent of 512MB
a . f 512000
# a fixed-variable ai extent that will only grow to 512MB
a . v 512000
# another fixed-variable ai extent in an environment with largefiles supported/enabled
a . v 8000000
# a variable ai extent that will grow to the system | filesize | ulimit limits .
The difference between a "variable" and a "fixed-variable" ai extent, is that the latter WILL automatically switch to the next variable ai extent when it's maximum variable size specified is reached, until such time as there are no EMPTY ai extents left in the ai sequence chain to switch to. Again, the -aistall startup parameter will prevent the database from crashing at this point.
Example:
With the database started with the -aistall parameter, the following ai extents defined and their statuses at the start of the run:
#v_ai.st
a . v 512000 # current status BUSY <current variable ai extent 1>.
a . v 512000 # current status EMPTY <next variable ai extent 2>.
a . v 512000 # current status FULL <following variable ai extent 3>.
The following actions would result:
This is after-image file number 1 since the last AIMAGE BEGIN (3778)
SYSTEM ERROR: Attempted to exceed maximum size on file <current variable ai extent 1>. (9452)
Can't extend ai extent <current variable ai extent 1> (3779)
# maximum size to which this extent can grow has been reached ..
Switched to ai extent <next variable ai extent 2>. (3777)
This is af.ter-image file number 2 since the last AIMAGE BEGIN (3778)
# database manager automatically switches to next EMPTY variable maximum size ai extent, until ..
SYSTEM ERROR: Attempted to exceed maximum size on file <next variable ai extent 2>. (9452)
Can't extend ai extent <next variable ai extent 2> (3779)
# maximum size to which the next extent can grow has been reached
Can't switch to after-image extent <following variable ai extent 3> it is FULL (3775)
# no more available EMPTY ai extents to switch to.
Backup ai extent and mark it as empty. (3776)
# The -aistall kicks in as noted above.
Please note, the initial allocation for a variable-length extent is 128K. There will be a performance hit in growing a variable length ai extent to it's specified maximum size (KB). Furthermore, there needs to be sufficient disk space available to extend every variable length ai extent to it's maximum size.
.