When will the BI file need to be truncated?
Bi recovery will always take place when the database is opened single-user (pro, prowin -1, _progres -1) or multi-user (_mprosrv / dbman).
Some Progress utilities need to be run on a database only once it is in an up-to-date state (i.e.
with no outstanding transactions pending in the database). If this is not the case OpenEdge will warn that the BI file(s) need to be truncated or truncate the BI file(s) automatically before running the utility.
Some messages you may encounter when running a Progress utility which require a BI file to first be truncated before proceeding:
The BI file is being automatically truncated. (1526)
Use proutil to truncate bi file before analyze. (4691)
You must use the proutil truncate bi command before doing a remove. (6953)
** You should run TRUNCATE BI utility before backing up your database (851)
To allow bi recovery to complete, truncate the BI file. This needs to be run
offline, which assures transaction recovery:
$ proutil <database name> -C truncate bi
- Ensure sufficient bi space is available; typically twice the current bi size on disk is needed.
- If After-imaging is enabled, sufficient AI space will also be needed to record redo undo notes.
- When facing an unexpected bi growth condition, consider disabling After Imaging beforehand (rfutil -C aimage end) as this adds additional i/o overhead. For further information refer to Article Database recovery after runaway transactions
- Result: All open transactions will be rolled back, leaving the database in a state as though the uncommitted transaction(s) didn't run.
Prior to OpenEdge 11.6.1, one cannot predict how long it will take to finalise the REDO and UNDO phases. Refer to Article:
When the truncate BI command is issued, the following will occur:
1. Transaction note information in the before-image (BI) files is used to bring the database and after-image (AI) files up to date,
2. Waits to verify that the information has been successfully written to the disk,
3. Then truncates the before-image file to its original length.
- If the bi files are of a fixed length, then the size of these files will not be reduced, they will remain their fixed size on disk. The number of active clusters however will be returned to the original 4 bi-clusters of whatever size has been identified as the default or current bi cluster size when the database is next opened. The number of initial clusters can be pre-grown before starting the database with 'bigrow'. Refer to Article How to tune BI I/O performance
4. Sets the current BI cluster size or new size only when the Before-image Cluster Size (-bi) parameter is specified, otherwise the current biclustersize persists. Refer to Article
How to determine an optimum before-image (BI) file cluster size
5. Sets the current BI block size or new size only when the Before-image Block Size (-biblocksize) parameter is specified, otherwise the current biblocksize persists. Refer to Article
How to change or set a new value for the BI block and BI cluster size? For further detailed discussion, refer to Article
How the primary recovery (.bi) file works
Additional Considerations before truncating the bi file
Since
OpenEdge 11.6.1 two new parameters
-crStatus and
-crTXDisplay were added to provide more detail on the process. For further information refer to Article:
When the
-F option is used, crash recovery is skipped which should only ever be used as a resource of last resort. For further information refer to Article:
When the database is used for roll-forward operations, truncating the bi is inadvisable. For further discussion refer to Article: