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 AreaPrimary 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
    1864512. 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.