Thanks for your answers so far. There are no LOBs in this area (only in another area, which does not show problems). The area in question has 4 tables, only one of them (rapport) with a lot of data and high turnover. Below are some glimpses from dbanalys.
However, I found the following in the "Database Administration" documentation:
"The OpenEdge RDBMS reserves space within each area for recovery purposes. The reserved space allows room for database growth during recovery. A database area can grow up to its maximum size, less the reserve recovery space indicated in Table 2–4."
Table 2-4 says an area with block size 4k or 8k always will reserve 5GB of space for recovery. My db has block size 8k.
Could this be the answer? Does it mean that I always have to do my space-reqired-calculation after reserving 5GB for each area for crash recovery? If so, many of my dbs will need to be a lot bigger.
I interpret the documentation as:
- Determine the area's theoretical maximum size, based on
- area RPB
- DB block size
- area type (I or II)
- recid length
- large file support
- Take that number in GB and subtract the value in the "Reserved recovery space" column in Table 2-4 for your DB block size, and that is your actual theoretical maximum area size.
I don't interpret it as "the size of your DB is size in promon plus 5 GB". That's my non-expert opinion.
RECORD BLOCK SUMMARY FOR AREA "db-rapp" : 9
-------------------------------------------------------
-Record Size (B)- ---Fragments--- Scatter
Table Records Size Min Max Mean Count Factor Factor
PUB.botteidnr 502513 43.4M 81 97 90 502513 1.0 1.0
PUB.hendlogg 0 0.0B 0 0 0 0 0.0 0.0
PUB.rapport 2624576 1.0G 164 1447 418 2624576 1.0 1.7
PUB.statistikk 2130 414.3K 191 436 199 2130 1.0 1.3
------------------------------------------------------------
Subtotals: 3129219 1.1G 81 1447 365 3129219 1.0 1.7
I would break this data into separate areas. You have one area that contains a large table with large records, a medium-size table with tiny records, a tiny table with medium-sized records, and a completely empty table. You can't optimize for all of them. By the way, were you aware that the empty table hendlogg and its indexes consume 4 MB of disk space each when you use cluster size 512 and 8 KB blocks?
The ideal RPB for these tables, based on their mean record sizes and 8 KB blocks, is 128 for botteidnr, 64 for statistikk, and maybe 32 for rapport although it seems to have some deviation from the mean. You may want to adjust the cluster sizes as well; I doubt you need 512 for a very small table like statistikk. And given the record size of rapport, and depending on how you access it (e.g. write once, versus create then update), you may want to increase its toss limit from the default of 300 KB. Look at your dbanalys output and see how many blocks are in its RM chain. If you're in the thousands of blocks you may benefit from a change.
Can you post the full area 9 definition from your structure file, a directory listing from your DB directory, and a proutil describe?
Also, rapport and statistikk may be in need of an index compact or rebuild. Have a look at the utilization stats in the index section of dbanalys.