Kbase P130646: Reserved space used for recovery limits user addressable maximum storage area size.
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  10/1/2010 |
|
Status: Verified
GOAL:
Reserved space used for recovery will limit the user addressable maximum storage area size.
GOAL:
Database engine has reserved space that will limit the user addressable maximum storage area size.
GOAL:
What other limits impact the maximum storage area size?
GOAL:
Reserved Space by the Database Engine limits the user addressable maximum storage area size.
GOAL:
Why can't a process access an areas maximum storage size?
GOAL:
Is there a limit as to how much space in an area that a user process can access?
GOAL:
Database area size limits and their association with reserve space within an area
GOAL:
How much space is reserved in an area for crash recovery that will limit database growth?
FACT(s) (Environment):
All Supported Operating Systems
Progress 9.1E04 Service Pack
Progress 9.1E04 64-bit Service Pack
OpenEdge 10.0B05 Service Pack
OpenEdge 10.0B05 64-bit Service Pack
OpenEdge 10.1x
OpenEdge 10.2x
FIX:
The database engine reserves space within a storage area for recovery purposes. Because a database may grow during recovery, space in each data area is reserved to accommodate this growth. Users are allowed to expand a database up to the maximum area size minus the reserved value. For databases areas with a block size of 1024 KB or 2048 KB and 128 or 256 RPB (records per block), 1 GB of space is reserved for recovery. Other database block sizes and records per block combinations have a 5 GB reserve.
For a user, the number of usable blocks in a data area is the maximum addressable number minus the reserve blocks. The maximum addressable block number depends on the dbkey size and the number of records per block. This is (2^^(31-recbits))-1 for 32-bit dbkeys and (2^^(63-recbits))-1 for 64-bit dbkeys. The number of blocks reserved for recovery is the reserve size in bytes (1 GB or 5 GB) divided by the block size. So for 32-bit dbkey areas with one record per block (recbits=0), the maximum addressable block number is (2^^(31-0))-1, or 0x7FFFFFFF. In this case, the reserve would be 5 GB (0x140000000) so for an 8192 KB database block size area, the maximum block number that the user may address is (0x7FFFFFFF - (0x140000000/0x2000)). This would result in 0x7FF5FFFF (2,146,828,287) user addressable blocks. As of 10.2B, all Type II storage areas have 5 GB reserved space.
Warnings are written to the database log file when an area grows to 80% and 90% of the maximum user addressable block number.
Database areas can exceed the user addressable space as a part of crash recovery. When going through crash recovery, the database will silently start writing to reserved space within an area as needed dependant upon is as apart of crash recovery we are forced to exceed the current user addressable space. This is important for DBA (Database Administrators) to be aware of. The reserve space within an area is a mechanism that ensures that when user addressable space within an area is reached, that we are able to go through crash recovery for further action to be taken on that area such as migrating tables contained within that area to other Type I or Type II storage areas or to archive data etc. Once that reserved space has been breached, DBAs need to be aware that there is no guarantee that in future attempts to go through crash recovery, that they will be able to. Whether or not they can get through future crash recovery efforts for this area will depend upon space left within the area as well as the amount of transactions for blocks in that area that may need to be undone and redone as a part of crash recovery.
Tools that can be used to monitor area growth are:
Database Statistics Tool located at: http://communities.progress.com/pcom/docs/DOC-518
This information can also be gathered by looking at the output for the prostrct statistics command when ran against a database. Example command: prostrct statistics dbname