The following method is only valid for Progress 9.x and later where it is possible to have a total bi file size greater than 2 GB. In
Progress 8: The sum of bi extents cannot exceed 2GB, since the 2GB limit has already been reached, the required additional bi space will exceed 2GB and therefore cannot be used. The only recovery method left available is to revert to a backup prior to the long transaction which caused bi growth.1. Take a backup of the database as it is now in the event it needs to be reverted to.
$ probkup dbname dbname.backup -norecover Otherwise, an OS or system backup.
2. Create a structure file to add more bi extents to the database.
a. Find the total size of existing bi extents on disk with OS commands:
[UNIX]: ls -l dbname.b*
[WINDOWS]: dir dbname.b*b. Create a new .st file to add fixed extents that equal the current total size of bi extents rounded to 2GB and a variable extent.
Example: 3 Current bi extents total 3.5GB, add 2 fixed and one variable bi extent.
# addbi.st
b ./dbname.b4 f 2000000
b ./dbname.b5 f 2000000
b ./dbname.b63. Add the new bi extents. This will convert the blown *.bi file to become a fixed extent.
$ prostrct add dbname addbi.st4. Truncate the bi to initiate crash recovery. This will take a while to complete both Logical and Physical UNDO phases in order to backout the transaction. It is not possible to determine exactly how long but determining factors are essentially disk i/o resources.
$ proutil truncate bi5. Tidy up the bi extents with PROSTRCT remove:
$ prostrct remove dbname biEither of the two approaches can be used:
a. Remove the additional bi extents only
The last bi extent will be removed first, use PROSTRCT remove multiple times to remove the needed number of bi extents.
b. Remove all bi extents then add bi extents
Use PROSTRCT remove as many times as there are bi extents until there are no longer any bi extents.
Use PROSTRCT add to add the required bi extent(s) back to the database.
Additional Considerations:
- If the database is enabled for After-Imaging, either temporarily disable AI or add as much AI space as additional BI space was needed.
- If Progress 9.1C or later (9.1E for Linux) and an Enterprise database license is in use and the file system accommodates large files and ulimit is set appropriately and not running on SCO then as an alternative to the above enable Large File Support on the database. Once Large File Support is enabled, restart the database and it will proceed through crash recovery extending the current variable bi file as needed provided sufficient diskspace allows. Large File Support applies to all database extents, not only bi files.
$ proutil dbname -C EnableLargeFiles