Report: Storage Area Summary
The *.area.rpt files under rpt/ give an area-by-area picture of the database’s physical layout: per area, the totals; per table inside the area, the geometry and fragmentation; per index inside the area, the block count and utilization.
They are kicked off by util/dbanalys.p and written by theareaReport procedure inside ssg/sausage20.i (the dba_report event
handler runs tblReport first to populate the arlist rollup, thenareaReport consumes it).
One file is written per database, named <shortname>.area.rpt and placed in$RPTDIR.
Layout
The first line is a timestamp (now), followed by a one-line title:
Existing Storage Area Summary for <pt_shortName> <pdbname(1)>
Then, for each area in arlist order (skipping Control Area, Primary Recovery Area, and any unnamed area), a three-part block is emitted.
Part 1 — area summary line
Area Name Data Size Num Recs Avg Rec Blk CSZ RPB Frag Scat %MaxRecs Tbls Idxs LOBs
======================== ============== ============ ======= === === === ==== ===== ======== ==== ==== ====
Columns:
- Area Name —
arlist.ar, 40 chars wide. - Data Size —
arlist.tsz, total bytes used by all tables in the area. - Num Recs —
arlist.recs, total record count in the area. - Avg Rec —
arlist.tsz / arlist.recs(0 if no records). - Blk — area block size in KB (
tt_area.blkSzKB). - CSZ — cluster size, in blocks (
tt_area.clstrSz): typical values are1,8,64,512. Larger clusters reduce extent fragmentation, but
any table whose data is smaller than one cluster wastes the unused
blocks in the cluster it occupies. - RPB — records-per-block setting on the area (
tt_area.rpb). - Frag — area-level fragmentation, computed as
(arlist.frag / arlist.recs - 1) * 100. A non-zero value means at least
some records have been split across multiple blocks. - Scat — maximum scatter factor across the area’s tables (
arlist.scat). - %MaxRecs —
100 * arlist.frag / 2^31, percent of the
per-area record-pointer ceiling consumed. The2^31ceiling is the
Type I area record-addressing limit; Type II areas have a much
higher ceiling, so this column is only meaningful for Type I areas.
When this approaches 100% on a Type I area, you’re running out of
addressable slots and need to migrate to Type II. - Tbls / Idxs / LOBs — number of tables, indexes, and LOB objects
living in the area (fromtt_area.numTbls / numIdxs / numLOBs).
If tt_area is missing for the area (e.g. older Progress versions where the
area is keyed by number), the report falls back to looking up _area in the
schema by name.
Part 2 — table breakdown within the area
Table Name
--------------------
<tbl> ... <size> <recs> <avg> <suggestedRPB>[*] <fragPct> <scat> <pctMaxRecs>
Columns:
- A leading
*marker if the table sits in B2 buffer pool
(tblist.b2), blank otherwise. - Table Name —
tblist.tbl. - Per-table Data Size (
tblist.tsz), Num Recs (tblist.recs),
Avg Rec (computed and cached back intotblist.avgrec). - Suggested RPB —
idealRPB( bsize, avgRecSize ). A trailing*is
appended whenever the suggested RPB does not match the area’s
configured RPB and the suggestion is non-zero — a quick visual flag for
tables that are mis-housed. - Per-table Frag% —
(tblist.frag / tblist.recs - 1) * 100, also cached
intotblist.pctfrag. - Per-table Scat —
tblist.scat. - Per-table %MaxRecs —
100 * tblist.frag / 2^31. As with the area-
level column, the2^31ceiling is a Type I area limit, so this
number is only meaningful for tables in Type I areas.
Tables whose names begin with _ (Progress metaschema) are skipped.
Part 3 — index breakdown within the area
Table.Index Name Blocks Util%
-------------------- -------------- ------------
<table>.<index> <blks> <pctut>%
Columns:
- Table.Index Name —
ixlist.idx, joined as<table>.<index>. - Blocks —
ixlist.blks, blocks consumed by the index. - Util% —
ixlist.pctut, average index-block utilization. Low
utilization (well under 70 %) on a large index is a candidate foridxcompact(seeidxcompact.rpt).
Indexes whose names begin with _ are skipped.
A blank line separates each area’s block.
Side effects
- After the file is closed,
areaReportcallslib/uploader.pto ship it
off, exactly like the other DB-analysis reports. - If
hpljis true, an HP LaserJet PCL initialization escape sequence is
emitted as the first line for compressed-mode printing.
Reading the report
- The trailing
*on per-table Suggested RPB is the headline finding —
it identifies tables whose record size has drifted away from the area’s
configured RPB. A sea of*s in one area usually means it’s time for a
dump-and-load into a more appropriately tiered area. - High Frag% on a table means records are split across blocks (often a
consequence of an undersized create/toss limit on a write-heavy table —
cross-referencermchain.rpt). - %MaxRecs approaching 100 % on a Type I area means it is near
its addressable record limit — plan a migration to Type II before it
runs out. The metric does not apply to Type II areas, which have a
much higher ceiling. - Low Util% on indexes with many blocks points at compaction wins —
idxcompact.rptreports exactly those candidates. - The leading
*in the table breakdown identifies tables pinned to the
alternate (B2) buffer pool.