Salesforce

Database bi file has grown beyond 2 GB

« Go Back

Information

 
TitleDatabase bi file has grown beyond 2 GB
URL NameP22463
Article Number000134666
EnvironmentProduct: Progress
Version: 8.x, 9.x
Product: OpenEdge
Version: 10.x, 11.x
OS: All supported platforms
Question/Problem Description
Bi file grew to 2 GB with error 9452
Whenever database access is attempted this fails with error 9452.
Steps to Reproduce
Clarifying Information
Error MessageSYSTEM ERROR: Attempted to exceed maximum size on file *.b1. (9452)
Defect Number
Enhancement Number
Cause
A long running Process created a very large transaction that eventually exceeded the *.bi file size limit.
When the database is next accessed, there is not enough space to complete bi crash recovery.
Resolution
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.b6


3. Add the new bi extents. This will convert the blown *.bi file to become a fixed extent.

$   prostrct add dbname addbi.st

4. 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 bi

5.  Tidy up the bi extents with PROSTRCT remove:

$   prostrct remove dbname bi

Either 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: 
  1. If the database is enabled for After-Imaging, either temporarily disable AI or add as much AI space as additional BI space was needed.
  2. 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 
     
Workaround
Notes
Keyword Phrase
Last Modified Date11/20/2020 7:16 AM

Powered by