All of the components that make up the shared memory are derived from the database startup parameters. For further information on how the database broker calculates the default value for -Mxs parameter refer to Article
000020149,,
What does the 6495 'Out of free shared memory' error mean? For example, locks for records that exceed the -L database startup setting, may pull memory from the -Mxs pool to increment the lock table +1 until the -Mxs is exhausted in order to complete UNDO processing.
There are additionally some structures that are based off of information in the schema of the database (which is read after memory is allocated).
One of these which we factor into our shared memory is a linked list based partially on how many
mandatory fields are defined within the database schema.
Though the algorithm may change at anytime in the future, currently each mandatory field uses:
6 bytes in the schema + (a hash table 53 * the size of the shared pointer (which on 32 bit is 4 and 64 bit is 8)) + 1 file control structure which is 20 bytes for header.
Example:
For 200 mandatory fields:
200 * 6 bytes + (53*4 bytes -- for 32 bit Progress) + 20 bytes = 1432 bytes.