Salesforce

A database running with -B2 crashes with error (1040)

« Go Back

Information

 
TitleA database running with -B2 crashes with error (1040)
URL Namedatabase-B2-crashes-with-1040-000078422
Article Number000180541
EnvironmentProduct: OpenEdge
Version: 11.6.x
OS: All supported platforms
Other: -B2
Question/Problem Description
Database crashes with error 1040 where objects are assigned to the Alternate Buffer Pool at the object level and -B2 is used

PROBKUP online crashes the database with 1040, when db is started with -B2 and PROBKUP does not use private buffers (-Bp)

Online dbanalys, tabanalys, ixanalys crashes the database with 1040, when db is started with -B2 and private buffers (-Bp) are not used

TDE epolicy manage update sessions to encrypt existing data assigned to the Alternate Buffer Pool crashes the database with error 1040 when the database is started with -B2

When -B2 is not used at database startup the database does not crash with error 1040
Steps to Reproduce
Clarifying Information
online PROBKUP succeeds when the database is not started with -B2
online PROBKUP succeeds when the database is started with -B2 and PROBKUP uses private buffers (-Bp)
online dbanalys, tabanalys, ixanalys succeed when the database is not started with -B2
online dbanalys, tabanalys, ixanalys succeed when the database is started with -B2 and private buffers (-Bp) are used
offline probkup and analys succeed
Error Message(1040) SYSTEM ERROR: Not enough database buffers (-B)
Defect NumberDefect PSC00354391, PSC00362535
Enhancement Number
Cause
A regression was introduced in 11.6.3.0 and 11.5.1.025 by the changes for PSC00346392. Refer to Article: When block requests for specific objects are being made, buffers from the primary buffer pool are being de-queued and added to the alternate buffer pool.  Over time this exhausts the primary buffer pool (-B) and the 1040 error is the result. 
Resolution
Upgrade to OpenEdge 11.7.0, 11.6.4.006, 11.6.3.032 where the buffer pool exhaustion 1040 is avoided by reverting the changes to the picking algorithm for Object Level assignments (PSC00346392).  For further information refer to Article: This means over sizing the Alternate Buffer Pool to specifically avoid the LRU2 mechanism from being enabled.  Beyond the size of assigned object data:

1.  For Object Level Alternate Buffer Pool assignment, include:
  • Index / LOB free blocks and Master Control Object Blocks, when a table’s related index / lob are not also assigned at the object level
Alternatively use Area level Alternate Buffer Pool assignment:
  • Move all Objects that will be assigned to the Alternate Buffer Pool into one or more Type II Storage Areas
  • Assign the Storage Area to the Alternate Buffer Pool: proutil -C enableB2 "area name"
Since OpenEdge 11.7 this information is included in: 
  • PROUTIL -C viewB2 which includes the current storage pool assigned, the size (in blocks) of each object, the type of block and a Total for the Area.  
  • PROMON> R&D > 2,3 (activity, buffer pool) which provides detail about the types of blocks accessed in the buffer pools.
2.  When Run online tools with block level access, as opposed to block requests for specific objects, with Private Buffers (-Bp)
  • probkup online dbname <backupvolume> -Bp 64
  • proutil dbname -C dbanalys -Bp 64
Consider increasing the database startup parameter -Bpmax 64 (default). The private buffer pool (-Bp) is an isolated portion of public buffer pool (-B), it is also limited to no more than 25% of the primary buffer pool (-B) value.  Client sessions may also be making use of using private buffers (-Bp, NumSeqBuffers)

3. For TDE enabled databases:

Start the Database without -B2 in order to run epolicy manage update sessions to encrypt existing data.
Once blocks have been encrypted, initialise -B2 online with: proutil -C increaseto -B2 <value>

4.  Finally, periodically monitor and increase the Alternate Buffer pool size once LRU2 is enabled:

PROMON > R&D > 2 Activity Displays > 3 Buffer Cache
"LRU2 replacement policy enabled" 

PROUTIL -C INCREASETO -B2 <value>

PROMON > R&D > 4 Administrative Functions > 4 Adjust Latch Options > 3. Disable LRU2 alternate buffer pool replacement policy

 
Workaround
When objects have been assigned to the Alternate Buffer Pool:
  1. When enabling TDE: Start the Database without -B2 in order to run epolicy manage update sessions to encrypt existing data. Once blocks have been encrypted, initialise -B2 online with: proutil -C increaseto -B2 <value>
  2. Once the Alternate Buffer Pool is in use, run online PROBKUP and analysis tools with Private Buffers (-Bp)
  • probkup online dbname <backupvolume> -Bp 64
  • proutil dbname -C dbanalys -Bp 64
Consider increasing the database startup parameter -Bpmax 64 (default). The private buffer pool (-Bp) is an isolated portion of public buffer pool (-B), it is also limited to no more than 25% of the primary buffer pool (-B) value.

3. Monitor the use of B2 according to the steps presented in Article: 4. As a last resort in case 1040 error persists, in terms of a workaround, stop using -B2.

It is not necessary to un-assign the objects assigned to the Alternate Buffer Pool, but when starting up a database broker do not specify a value for the -B2 parameter.  This is further discussed in Article:
Notes
Keyword Phrase
Last Modified Date11/20/2020 6:56 AM

Powered by