Skip to content
English
  • There are no suggestions because the search field is empty.

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 the
areaReport procedure inside ssg/sausage20.i (the dba_report event
handler runs tblReport first to populate the arlist rollup, then
areaReport 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 are
    1, 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. The 2^31 ceiling 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 (from tt_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 into tblist.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
    into tblist.pctfrag.
  • Per-table Scat — tblist.scat.
  • Per-table %MaxRecs — 100 * tblist.frag / 2^31. As with the area-
    level column, the 2^31 ceiling 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 for
    idxcompact (see idxcompact.rpt).

Indexes whose names begin with _ are skipped.

A blank line separates each area’s block.

Side effects

  • After the file is closed, areaReport calls lib/uploader.p to ship it
    off, exactly like the other DB-analysis reports.
  • If hplj is 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-reference rmchain.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.rpt reports exactly those candidates.
  • The leading * in the table breakdown identifies tables pinned to the
    alternate (B2) buffer pool.