Feedback
Did this article resolve your question/issue?

   

Article

How to change or set a new value for the BI block and BI cluster size?

« Go Back

Information

 
TitleHow to change or set a new value for the BI block and BI cluster size?
URL NameP63636
Article Number000141267
EnvironmentProduct: Progress
Version: All supported versions
Product: OpenEdge
Version: All supported versions
OS: All supported platforms
Question/Problem Description
How to change or set a new value for BI cluster size?
How to change or set a new value for BI block size?
Steps to Reproduce
Clarifying Information
Error Message
Defect/Enhancement Number
Cause
Resolution
This Article serves to provide examples to compliment the latest OpenEdge Documentation with this information:
Manage the OpenEdge Database: PROUTIL Utility - PROUTIL TRUNCATE BI qualifier  
https://docs.progress.com/bundle/openedge-database-management/page/PROUTIL-TRUNCATE-BI-qualifier.html   

To change the current BI block and BI cluster size,
  1. Changing the database BI blocksize and BI clustersize is an offline procedure, the database needs to be shutdown and not otherwise accessed single-user.
  2. PROUTIL with TRUNCATE BI Qualifier performs three functions:
  • Information in the before-image (BI) files is used to bring the database and after-image (AI) files up to date, waits to verify that the information has been successfully written to the disk (-G), then truncates the before-image file.
  • Sets the BI block size using the new Before-image Block Size -biblocksize ) when specified, after validating with the current bi cluster size stored in the master block and adjusted to a valid biblocksize value if necessary: 1, 2, 4, 8, 16 KB; minimum = database blocksize.
  • Sets the BI cluster size using the new Before-image Cluster Size -bi ) when specified, and adjusted to assure it is a multiple of 16 to fit the sum of all bi extents. maximum = 262128 KB
Example:  Reformat the bi blocksize and biclustersize:
          
$  proutil <dbname> -C truncate bi -biblocksize 16 -bi 16384
Before-image block size set to 16 kb (16384 bytes). (3781) 
Before-image cluster size set to 16384 kb. (1620)

 
$  proutil <dbname> -C describe:
OpenEdge Database Description
...
Before Imaging information
  Block Size                : 16384
  Cluster Size (16K Units)  : 1024 { == 
16384  }

Considerations when re-formatting the bi file:

The values of the current bi cluster size (-bi) and bi blocksize (-biblocksize) parameter persist through subsequent 'proutil -C truncate bi'  calls. It is not necessary to use these parameters again whenever the bi file is subsequently truncated, unless the current sizes need to be changed again to re-format the bi chain structure.

When probkup volumes are restored, the bi block and clusters will be the size specified at the time of the backup.

The ideal bi cluster format is application specific, further advice is provided in Article: After changing the biblocksize offline, consider changing the AIBLOCKSIZE  if after-imaging is enabled for performance reasons before restarting the database. For further information refer to Article: Assure a valid value for the before-image block size is provided, otherwise the validation with the current bi cluster size can cause the database to be inoperable.
Workaround
Notes
Last Modified Date10/5/2020 8:40 AM
Attachment 
Files
Disclaimer The origins of the information on this site may be internal or external to Progress Software Corporation (“Progress”). Progress Software Corporation makes all reasonable efforts to verify this information. However, the information provided is for your information only. Progress Software Corporation makes no explicit or implied claims to the validity of this information.

Any sample code provided on this site is not supported under any Progress support program or service. The sample code is provided on an "AS IS" basis. Progress makes no warranties, express or implied, and disclaims all implied warranties including, without limitation, the implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample code is borne by the user. In no event shall Progress, its employees, or anyone else involved in the creation, production, or delivery of the code be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample code, even if Progress has been advised of the possibility of such damages.