AWR Timeline ComparisonQuick startDocsCheat sheetConfigurator

Scoring policy: what fires, and when

Generated 2026-09-26 from sql/lib/metric_policy.plsql by docs/gen_policy_doc.py. The policy file is the single source of truth; edit a line there and re-run the generator (and python3 demo/gen_demo_report.py) to keep this page and the demo in step.

The ruleDirections and bucketsLoad statisticsSystem metricsWait classes and eventsSQL, segments, filesFamilies and twinsHow to change it

The rule, step by step

Every scored value is the Current window compared with the prior windows (the same hour on the previous days or weeks). One bucket per row, computed by policy_bucket():

  1. Enough history? Fewer than 3 prior windows → insufficient history. No usable spread (all priors identical and zero) → flat baseline. No Current value → n/a.
  2. How unusual? z = (Current − prior mean) ÷ max(σ, 2% of |prior mean|). The 2% floor stops a dead-flat baseline from turning a trivial wobble into a huge z. |z| ≤ 2 → typical.
  3. Is it material? The metric's own minimum %-delta must be met (|Current − mean| / |mean|), and its value floor: at least one of Current / prior mean must reach the floor in the metric's unit (for waits: the row's share of the Current window's non-idle wait time must reach the minimum share). Otherwise typical, badged immaterial.
  4. Which direction? Per metric: UP (rise is bad), DOWN (drop is bad), ANY (both), INFO (never a finding). A material move in the good direction → improved; an INFO counter that moved → noted. Neither is highlighted, leads a finding card, or is counted in the verdict; both are listed under "Checked and normal".
  5. How big? |z| > 3 → large, otherwise moderate. A table-wide shift in the wait tables demotes large to moderate.

Worked example. Hard parses (parse count (hard): rise is bad, min 25%, floor 2/s). Prior windows 0.1, 0.1, 0.2, 0.1 /s; Current 0.6 /s. z is about 8 and the move is +500%, but both values sit below the 2/s floor → typical, immaterial. Prior windows 12, 11, 13, 12 /s; Current 18 /s: z about 7, +50%, above the floor, a rise → large. Prior 12 /s, Current 6 /s: a drop → improved, shown muted, not counted.

Directions and buckets

UP rise is bad
A rise is a finding; a drop is improved (never highlighted).
DOWN drop is bad
A drop is a finding; a rise is improved (never highlighted).
ANY either way
Both directions are findings: a drop can be an outage, a rise a storm. Nothing is called improved.
INFO informational
Never a finding. A material move renders as noted (grey, not counted).
large|z| > 3, material, bad direction. Counted in the verdict, on a finding card, red band dot and row marker. moderate|z| > 2, material, bad direction. Counted, on a finding card, amber band dot and row marker. typicalInside the usual spread, or the move was immaterial (noted under the change). improvedMaterial move in the good direction. Green hollow band dot, no row marker, never counted; listed as Improved under "Checked and normal". notedAn informational counter that moved. Grey, never counted. skipn/a, insufficient history or flat baseline: not scored.

Load statistics (DBA_HIST_SYSSTAT, per second)

Per-second rates of the raw cumulative counters over each window. DB time, DB CPU and "CPU used by this session" are centiseconds per second, so 100 means one average active session or one busy CPU.

Metric (unit)FamilyDirectionMin %FloorFires whenDoes not fire whenExample / note
DB time
cs/s (centiseconds of DB time per second; 100 = one average active session)
DB timeUP rise is bad15%20 cs/sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 15% of the prior mean and at least one of Current / prior mean is ≥ 20 cs/s.Any drop (it is improved); a rise below 15%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
2 cs/s → 12 cs/s (+500%): no, both below 20 cs/s. 80 cs/s → 100 cs/s (+25%) on a steady baseline: yes.
cs/s; 20 = 0.2 avg active sessions
DB CPU
cs/s (100 = one CPU fully busy)
CPUUP rise is bad15%10 cs/sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 15% of the prior mean and at least one of Current / prior mean is ≥ 10 cs/s.Any drop (it is improved); a rise below 15%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
1 cs/s → 6 cs/s (+500%): no, both below 10 cs/s. 40 cs/s → 50 cs/s (+25%) on a steady baseline: yes.
cs/s; 10 = 0.1 CPU busy
CPU used by this session twin
cs/s (100 = one CPU fully busy)
CPUUP rise is bad15%10 cs/sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 15% of the prior mean and at least one of Current / prior mean is ≥ 10 cs/s.Any drop (it is improved); a rise below 15%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
1 cs/s → 6 cs/s (+500%): no, both below 10 cs/s. 40 cs/s → 50 cs/s (+25%) on a steady baseline: yes.
twin of DB CPU
session logical reads
blocks/s
logical I/OUP rise is bad20%1,000 blocks/sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 1,000 blocks/s.Any drop (it is improved); a rise below 20%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
100 blocks/s → 600 blocks/s (+500%): no, both below 1,000 blocks/s. 4,000 blocks/s → 5,200 blocks/s (+30%) on a steady baseline: yes.
blocks/s
physical reads
blocks/s
read I/OUP rise is bad20%50 blocks/sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 50 blocks/s.Any drop (it is improved); a rise below 20%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
5 blocks/s → 30 blocks/s (+500%): no, both below 50 blocks/s. 200 blocks/s → 260 blocks/s (+30%) on a steady baseline: yes.
blocks/s
physical read total bytes
bytes/s
read I/OUP rise is bad20%1 MB/sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 1 MB/s.Any drop (it is improved); a rise below 20%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
102.4 KB/s → 614.4 KB/s (+500%): no, both below 1 MB/s. 4 MB/s → 5.2 MB/s (+30%) on a steady baseline: yes.
1 MB/s
physical writes
blocks/s
write I/OUP rise is bad20%20 blocks/sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 20 blocks/s.Any drop (it is improved); a rise below 20%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
2 blocks/s → 12 blocks/s (+500%): no, both below 20 blocks/s. 80 blocks/s → 104 blocks/s (+30%) on a steady baseline: yes.
blocks/s
physical write total bytes
bytes/s
write I/OUP rise is bad20%1 MB/sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 1 MB/s.Any drop (it is improved); a rise below 20%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
102.4 KB/s → 614.4 KB/s (+500%): no, both below 1 MB/s. 4 MB/s → 5.2 MB/s (+30%) on a steady baseline: yes.
1 MB/s
redo size
bytes/s
redoUP rise is bad20%10 KB/sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 10 KB/s.Any drop (it is improved); a rise below 20%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
1 KB/s → 6 KB/s (+500%): no, both below 10 KB/s. 40 KB/s → 52 KB/s (+30%) on a steady baseline: yes.
10 KB/s
redo size for lost write detection twin
bytes/s
redoINFO informational20%—Never. A material move is shown as noted only.Always (informational counter).
—
bookkeeping
redo writes
/s
redoUP rise is bad20%1 /sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 1 /s.Any drop (it is improved); a rise below 20%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
0.1 /s → 0.6 /s (+500%): no, both below 1 /s. 4 /s → 5.2 /s (+30%) on a steady baseline: yes.
writes/s
user calls
/s
user callsANY either way20%10 /sRise or drop of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 10 /s.A move below 20% either way; both values below the floor; |z| ≤ 2; fewer than 3 prior windows.
1 /s → 6 /s (+500%): no, both below 10 /s. 40 /s → 52 /s (+30%) on a steady baseline: yes.
a drop can be an outage
user commits
/s
commitsANY either way20%1 /sRise or drop of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 1 /s.A move below 20% either way; both values below the floor; |z| ≤ 2; fewer than 3 prior windows.
0.1 /s → 0.6 /s (+500%): no, both below 1 /s. 4 /s → 5.2 /s (+30%) on a steady baseline: yes.
user rollbacks
/s
rollbacksUP rise is bad25%0.5 /sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 25% of the prior mean and at least one of Current / prior mean is ≥ 0.5 /s.Any drop (it is improved); a rise below 25%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
0.05 /s → 0.3 /s (+500%): no, both below 0.5 /s. 2 /s → 2.7 /s (+35%) on a steady baseline: yes.
execute count
/s
executionsANY either way20%10 /sRise or drop of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 10 /s.A move below 20% either way; both values below the floor; |z| ≤ 2; fewer than 3 prior windows.
1 /s → 6 /s (+500%): no, both below 10 /s. 40 /s → 52 /s (+30%) on a steady baseline: yes.
parse count (total)
/s
parsesUP rise is bad20%10 /sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 10 /s.Any drop (it is improved); a rise below 20%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
1 /s → 6 /s (+500%): no, both below 10 /s. 40 /s → 52 /s (+30%) on a steady baseline: yes.
parse count (hard)
/s
hard parsesUP rise is bad25%2 /sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 25% of the prior mean and at least one of Current / prior mean is ≥ 2 /s.Any drop (it is improved); a rise below 25%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
0.2 /s → 1.2 /s (+500%): no, both below 2 /s. 8 /s → 10.8 /s (+35%) on a steady baseline: yes.
below 2/s nobody cares
parse count (failures)
/s
hard parsesUP rise is bad25%0.5 /sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 25% of the prior mean and at least one of Current / prior mean is ≥ 0.5 /s.Any drop (it is improved); a rise below 25%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
0.05 /s → 0.3 /s (+500%): no, both below 0.5 /s. 2 /s → 2.7 /s (+35%) on a steady baseline: yes.
sorts (memory)
/s
sortsINFO informational20%—Never. A material move is shown as noted only.Always (informational counter).
—
workload shape, not a problem
sorts (disk)
/s
disk sortsUP rise is bad25%0.5 /sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 25% of the prior mean and at least one of Current / prior mean is ≥ 0.5 /s.Any drop (it is improved); a rise below 25%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
0.05 /s → 0.3 /s (+500%): no, both below 0.5 /s. 2 /s → 2.7 /s (+35%) on a steady baseline: yes.
sorts (rows)
/s
sortsINFO informational20%—Never. A material move is shown as noted only.Always (informational counter).
—
logons cumulative
/s
sessions / logonsUP rise is bad25%1 /sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 25% of the prior mean and at least one of Current / prior mean is ≥ 1 /s.Any drop (it is improved); a rise below 25%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
0.1 /s → 0.6 /s (+500%): no, both below 1 /s. 4 /s → 5.4 /s (+35%) on a steady baseline: yes.
logon storms
opened cursors cumulative
/s
cursorsINFO informational20%—Never. A material move is shown as noted only.Always (informational counter).
—
table scans (long tables)
/s
full table scansUP rise is bad25%0.5 /sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 25% of the prior mean and at least one of Current / prior mean is ≥ 0.5 /s.Any drop (it is improved); a rise below 25%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
0.05 /s → 0.3 /s (+500%): no, both below 0.5 /s. 2 /s → 2.7 /s (+35%) on a steady baseline: yes.
table fetch by rowid
/s
logical I/OINFO informational20%—Never. A material move is shown as noted only.Always (informational counter).
—
access-path mix, see logical reads
bytes sent via SQL*Net to client
bytes/s
networkUP rise is bad30%100 KB/sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 30% of the prior mean and at least one of Current / prior mean is ≥ 100 KB/s.Any drop (it is improved); a rise below 30%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
10 KB/s → 60 KB/s (+500%): no, both below 100 KB/s. 400 KB/s → 560 KB/s (+40%) on a steady baseline: yes.
100 KB/s
bytes received via SQL*Net from client
bytes/s
networkUP rise is bad30%100 KB/sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 30% of the prior mean and at least one of Current / prior mean is ≥ 100 KB/s.Any drop (it is improved); a rise below 30%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
10 KB/s → 60 KB/s (+500%): no, both below 100 KB/s. 400 KB/s → 560 KB/s (+40%) on a steady baseline: yes.

System metrics (DBA_HIST_SYSMETRIC_SUMMARY)

Window averages of the metric's own unit. Most per-second metrics are twins of a load statistic above: they are scored and shown (muted) but never counted, so one physical change is one finding.

Metric (unit)FamilyDirectionMin %FloorFires whenDoes not fire whenExample / note
Host CPU Utilization (%)
% of host CPU
CPUUP rise is bad20%10 % of host CPURise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 10 % of host CPU.Any drop (it is improved); a rise below 20%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
1 % of host CPU → 6 % of host CPU (+500%): no, both below 10 % of host CPU. 40 % of host CPU → 52 % of host CPU (+30%) on a steady baseline: yes.
% points
Database CPU Time Ratio twin
% of DB time spent on CPU
CPU / wait ratioDOWN drop is bad20%10 % of DB time spent on CPUDrop of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 10 % of DB time spent on CPU.Any rise (it is improved); a drop below 20%; both values below the floor; |z| ≤ 2; fewer than 3 prior windows.
1 % of DB time spent on CPU → 6 % of DB time spent on CPU (+500%): no, both below 10 % of DB time spent on CPU. 52 % of DB time spent on CPU → 40 % of DB time spent on CPU (−23%) on a steady baseline: yes.
less CPU share = more waiting
Database Wait Time Ratio
% of DB time spent waiting
CPU / wait ratioUP rise is bad20%10 % of DB time spent waitingRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 10 % of DB time spent waiting.Any drop (it is improved); a rise below 20%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
1 % of DB time spent waiting → 6 % of DB time spent waiting (+500%): no, both below 10 % of DB time spent waiting. 40 % of DB time spent waiting → 52 % of DB time spent waiting (+30%) on a steady baseline: yes.
% points
Average Active Sessions twin
sessions
DB timeUP rise is bad15%0.2 sessionsRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 15% of the prior mean and at least one of Current / prior mean is ≥ 0.2 sessions.Any drop (it is improved); a rise below 15%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
0.02 sessions → 0.12 sessions (+500%): no, both below 0.2 sessions. 0.8 sessions → 1 sessions (+25%) on a steady baseline: yes.
twin of DB time
Average Synchronous Single-Block Read Latency
ms per single-block read
read I/OUP rise is bad25%1 ms per single-block readRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 25% of the prior mean and at least one of Current / prior mean is ≥ 1 ms per single-block read.Any drop (it is improved); a rise below 25%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
0.1 ms per single-block read → 0.6 ms per single-block read (+500%): no, both below 1 ms per single-block read. 4 ms per single-block read → 5.4 ms per single-block read (+35%) on a steady baseline: yes.
ms; sub-ms is noise
Physical Reads Per Sec twin
/s
read I/OUP rise is bad20%50 /sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 50 /s.Any drop (it is improved); a rise below 20%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
5 /s → 30 /s (+500%): no, both below 50 /s. 200 /s → 260 /s (+30%) on a steady baseline: yes.
twin of physical reads
Physical Writes Per Sec twin
/s
write I/OUP rise is bad20%20 /sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 20 /s.Any drop (it is improved); a rise below 20%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
2 /s → 12 /s (+500%): no, both below 20 /s. 80 /s → 104 /s (+30%) on a steady baseline: yes.
twin of physical writes
Physical Read Total IO Requests Per Sec
/s
read I/OUP rise is bad20%50 /sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 50 /s.Any drop (it is improved); a rise below 20%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
5 /s → 30 /s (+500%): no, both below 50 /s. 200 /s → 260 /s (+30%) on a steady baseline: yes.
IOPS
Physical Write Total IO Requests Per Sec
/s
write I/OUP rise is bad20%20 /sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 20 /s.Any drop (it is improved); a rise below 20%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
2 /s → 12 /s (+500%): no, both below 20 /s. 80 /s → 104 /s (+30%) on a steady baseline: yes.
IOPS
Physical Read Total Bytes Per Sec twin
bytes/s
read I/OUP rise is bad20%1 MB/sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 1 MB/s.Any drop (it is improved); a rise below 20%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
102.4 KB/s → 614.4 KB/s (+500%): no, both below 1 MB/s. 4 MB/s → 5.2 MB/s (+30%) on a steady baseline: yes.
twin
Physical Write Total Bytes Per Sec twin
bytes/s
write I/OUP rise is bad20%1 MB/sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 1 MB/s.Any drop (it is improved); a rise below 20%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
102.4 KB/s → 614.4 KB/s (+500%): no, both below 1 MB/s. 4 MB/s → 5.2 MB/s (+30%) on a steady baseline: yes.
twin
Redo Generated Per Sec twin
bytes/s
redoUP rise is bad20%10 KB/sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 10 KB/s.Any drop (it is improved); a rise below 20%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
1 KB/s → 6 KB/s (+500%): no, both below 10 KB/s. 40 KB/s → 52 KB/s (+30%) on a steady baseline: yes.
twin of redo size
Logons Per Sec twin
/s
sessions / logonsUP rise is bad25%1 /sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 25% of the prior mean and at least one of Current / prior mean is ≥ 1 /s.Any drop (it is improved); a rise below 25%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
0.1 /s → 0.6 /s (+500%): no, both below 1 /s. 4 /s → 5.4 /s (+35%) on a steady baseline: yes.
twin of logons cumulative
Logical Reads Per Sec twin
/s
logical I/OUP rise is bad20%1,000 /sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 1,000 /s.Any drop (it is improved); a rise below 20%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
100 /s → 600 /s (+500%): no, both below 1,000 /s. 4,000 /s → 5,200 /s (+30%) on a steady baseline: yes.
twin
User Calls Per Sec twin
/s
user callsANY either way20%10 /sRise or drop of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 10 /s.A move below 20% either way; both values below the floor; |z| ≤ 2; fewer than 3 prior windows.
1 /s → 6 /s (+500%): no, both below 10 /s. 40 /s → 52 /s (+30%) on a steady baseline: yes.
twin
User Commits Per Sec twin
/s
commitsANY either way20%1 /sRise or drop of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 1 /s.A move below 20% either way; both values below the floor; |z| ≤ 2; fewer than 3 prior windows.
0.1 /s → 0.6 /s (+500%): no, both below 1 /s. 4 /s → 5.2 /s (+30%) on a steady baseline: yes.
twin
User Rollbacks Per Sec twin
/s
rollbacksUP rise is bad25%0.5 /sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 25% of the prior mean and at least one of Current / prior mean is ≥ 0.5 /s.Any drop (it is improved); a rise below 25%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
0.05 /s → 0.3 /s (+500%): no, both below 0.5 /s. 2 /s → 2.7 /s (+35%) on a steady baseline: yes.
twin
Executions Per Sec twin
/s
executionsANY either way20%10 /sRise or drop of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 10 /s.A move below 20% either way; both values below the floor; |z| ≤ 2; fewer than 3 prior windows.
1 /s → 6 /s (+500%): no, both below 10 /s. 40 /s → 52 /s (+30%) on a steady baseline: yes.
twin
Hard Parse Count Per Sec twin
/s
hard parsesUP rise is bad25%2 /sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 25% of the prior mean and at least one of Current / prior mean is ≥ 2 /s.Any drop (it is improved); a rise below 25%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
0.2 /s → 1.2 /s (+500%): no, both below 2 /s. 8 /s → 10.8 /s (+35%) on a steady baseline: yes.
twin
Total Parse Count Per Sec twin
/s
parsesUP rise is bad20%10 /sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 10 /s.Any drop (it is improved); a rise below 20%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
1 /s → 6 /s (+500%): no, both below 10 /s. 40 /s → 52 /s (+30%) on a steady baseline: yes.
twin
Session Count
sessions
sessions / logonsANY either way20%10 sessionsRise or drop of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and at least one of Current / prior mean is ≥ 10 sessions.A move below 20% either way; both values below the floor; |z| ≤ 2; fewer than 3 prior windows.
1 sessions → 6 sessions (+500%): no, both below 10 sessions. 40 sessions → 52 sessions (+30%) on a steady baseline: yes.
storm or app gone
Network Traffic Volume Per Sec twin
bytes/s
networkUP rise is bad30%100 KB/sRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 30% of the prior mean and at least one of Current / prior mean is ≥ 100 KB/s.Any drop (it is improved); a rise below 30%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
10 KB/s → 60 KB/s (+500%): no, both below 100 KB/s. 400 KB/s → 560 KB/s (+40%) on a steady baseline: yes.
twin of the SQL*Net bytes
SQL Service Response Time
cs per user call (0.1 = 1 ms)
response timeUP rise is bad25%0.1 cs per user callRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 25% of the prior mean and at least one of Current / prior mean is ≥ 0.1 cs per user call.Any drop (it is improved); a rise below 25%; both Current and prior mean below the floor; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
0.01 cs per user call → 0.06 cs per user call (+500%): no, both below 0.1 cs per user call. 0.4 cs per user call → 0.54 cs per user call (+35%) on a steady baseline: yes.
cs per user call; 0.1 = 1 ms

Wait classes and events (DBA_HIST_SYSTEM_EVENT / BG_EVENT_SUMMARY)

Scored on time waited per second. Every wait is UP (less waiting is never a problem). The floor is a share: the row must hold at least that fraction of the Current window's total non-idle wait time, so a wait that tripled but is 0.3% of the total never fires. A per-event line overrides its class; a class not listed uses the default (rise ≥ 15%, share ≥ 2%).

Per wait class (also the "Wait class: X" rollups in Findings)

Wait classFamilyDirectionMin %FloorFires whenDoes not fire whenExample / note
Application
wait class
wait class ApplicationUP rise is bad10%1% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 10% of the prior mean and the event or class holds at least 1% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 10%; a share below 1%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 0.5% of Current wait time doubling: no (share below 1%). The same event at 3% of Current wait, up 20% on a steady baseline: yes.
locks, app-side serialization
Configuration
wait class
wait class ConfigurationUP rise is bad10%1% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 10% of the prior mean and the event or class holds at least 1% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 10%; a share below 1%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 0.5% of Current wait time doubling: no (share below 1%). The same event at 3% of Current wait, up 20% on a steady baseline: yes.
log switch / buffer / space issues
Concurrency
wait class
wait class ConcurrencyUP rise is bad15%2% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 15% of the prior mean and the event or class holds at least 2% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 15%; a share below 2%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 1% of Current wait time doubling: no (share below 2%). The same event at 6% of Current wait, up 25% on a steady baseline: yes.
Commit
wait class
wait class CommitUP rise is bad15%2% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 15% of the prior mean and the event or class holds at least 2% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 15%; a share below 2%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 1% of Current wait time doubling: no (share below 2%). The same event at 6% of Current wait, up 25% on a steady baseline: yes.
User I/O
wait class
wait class User I/OUP rise is bad15%2% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 15% of the prior mean and the event or class holds at least 2% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 15%; a share below 2%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 1% of Current wait time doubling: no (share below 2%). The same event at 6% of Current wait, up 25% on a steady baseline: yes.
Cluster
wait class
wait class ClusterUP rise is bad15%2% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 15% of the prior mean and the event or class holds at least 2% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 15%; a share below 2%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 1% of Current wait time doubling: no (share below 2%). The same event at 6% of Current wait, up 25% on a steady baseline: yes.
System I/O
wait class
wait class System I/OUP rise is bad20%3% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and the event or class holds at least 3% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 20%; a share below 3%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 1.5% of Current wait time doubling: no (share below 3%). The same event at 9% of Current wait, up 30% on a steady baseline: yes.
background, mostly LGWR/DBWR/ARCH
Scheduler
wait class
wait class SchedulerUP rise is bad20%3% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 20% of the prior mean and the event or class holds at least 3% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 20%; a share below 3%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 1.5% of Current wait time doubling: no (share below 3%). The same event at 9% of Current wait, up 30% on a steady baseline: yes.
Network
wait class
wait class NetworkUP rise is bad25%5% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 25% of the prior mean and the event or class holds at least 5% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 25%; a share below 5%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 2.5% of Current wait time doubling: no (share below 5%). The same event at 15% of Current wait, up 35% on a steady baseline: yes.
driven by the application
Other
wait class
wait class OtherUP rise is bad25%5% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 25% of the prior mean and the event or class holds at least 5% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 25%; a share below 5%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 2.5% of Current wait time doubling: no (share below 5%). The same event at 15% of Current wait, up 35% on a steady baseline: yes.
noisy catch-all
Administrative
wait class
wait class AdministrativeUP rise is bad25%5% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 25% of the prior mean and the event or class holds at least 5% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 25%; a share below 5%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 2.5% of Current wait time doubling: no (share below 5%). The same event at 15% of Current wait, up 35% on a steady baseline: yes.
Queueing
wait class
wait class QueueingUP rise is bad25%5% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 25% of the prior mean and the event or class holds at least 5% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 25%; a share below 5%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 2.5% of Current wait time doubling: no (share below 5%). The same event at 15% of Current wait, up 35% on a steady baseline: yes.

Per-event overrides

Locks and configuration faults fire earlier than their class; application payload and parallel-query plumbing later.

Wait eventFamilyDirectionMin %FloorFires whenDoes not fire whenExample / note
enq: TX - row lock contention
wait event (overrides its class)
its wait classUP rise is bad10%1% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 10% of the prior mean and the event or class holds at least 1% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 10%; a share below 1%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 0.5% of Current wait time doubling: no (share below 1%). The same event at 3% of Current wait, up 20% on a steady baseline: yes.
locks matter even when small
enq: TM - contention
wait event (overrides its class)
its wait classUP rise is bad10%1% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 10% of the prior mean and the event or class holds at least 1% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 10%; a share below 1%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 0.5% of Current wait time doubling: no (share below 1%). The same event at 3% of Current wait, up 20% on a steady baseline: yes.
enq: TX - index contention
wait event (overrides its class)
its wait classUP rise is bad10%1% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 10% of the prior mean and the event or class holds at least 1% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 10%; a share below 1%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 0.5% of Current wait time doubling: no (share below 1%). The same event at 3% of Current wait, up 20% on a steady baseline: yes.
library cache lock
wait event (overrides its class)
its wait classUP rise is bad10%1% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 10% of the prior mean and the event or class holds at least 1% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 10%; a share below 1%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 0.5% of Current wait time doubling: no (share below 1%). The same event at 3% of Current wait, up 20% on a steady baseline: yes.
library cache: mutex X
wait event (overrides its class)
its wait classUP rise is bad10%1% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 10% of the prior mean and the event or class holds at least 1% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 10%; a share below 1%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 0.5% of Current wait time doubling: no (share below 1%). The same event at 3% of Current wait, up 20% on a steady baseline: yes.
cursor: pin S wait on X
wait event (overrides its class)
its wait classUP rise is bad10%1% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 10% of the prior mean and the event or class holds at least 1% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 10%; a share below 1%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 0.5% of Current wait time doubling: no (share below 1%). The same event at 3% of Current wait, up 20% on a steady baseline: yes.
row cache lock
wait event (overrides its class)
its wait classUP rise is bad10%1% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 10% of the prior mean and the event or class holds at least 1% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 10%; a share below 1%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 0.5% of Current wait time doubling: no (share below 1%). The same event at 3% of Current wait, up 20% on a steady baseline: yes.
log file switch (checkpoint incomplete)
wait event (overrides its class)
its wait classUP rise is bad10%1% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 10% of the prior mean and the event or class holds at least 1% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 10%; a share below 1%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 0.5% of Current wait time doubling: no (share below 1%). The same event at 3% of Current wait, up 20% on a steady baseline: yes.
configuration faults
log file switch (archiving needed)
wait event (overrides its class)
its wait classUP rise is bad10%1% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 10% of the prior mean and the event or class holds at least 1% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 10%; a share below 1%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 0.5% of Current wait time doubling: no (share below 1%). The same event at 3% of Current wait, up 20% on a steady baseline: yes.
log buffer space
wait event (overrides its class)
its wait classUP rise is bad10%1% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 10% of the prior mean and the event or class holds at least 1% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 10%; a share below 1%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 0.5% of Current wait time doubling: no (share below 1%). The same event at 3% of Current wait, up 20% on a steady baseline: yes.
free buffer waits
wait event (overrides its class)
its wait classUP rise is bad10%1% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 10% of the prior mean and the event or class holds at least 1% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 10%; a share below 1%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 0.5% of Current wait time doubling: no (share below 1%). The same event at 3% of Current wait, up 20% on a steady baseline: yes.
SQL*Net more data from client
wait event (overrides its class)
its wait classUP rise is bad30%5% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 30% of the prior mean and the event or class holds at least 5% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 30%; a share below 5%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 2.5% of Current wait time doubling: no (share below 5%). The same event at 15% of Current wait, up 40% on a steady baseline: yes.
application payload
SQL*Net more data to client
wait event (overrides its class)
its wait classUP rise is bad30%5% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 30% of the prior mean and the event or class holds at least 5% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 30%; a share below 5%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 2.5% of Current wait time doubling: no (share below 5%). The same event at 15% of Current wait, up 40% on a steady baseline: yes.
SQL*Net message to client
wait event (overrides its class)
its wait classUP rise is bad30%5% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 30% of the prior mean and the event or class holds at least 5% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 30%; a share below 5%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 2.5% of Current wait time doubling: no (share below 5%). The same event at 15% of Current wait, up 40% on a steady baseline: yes.
PX Deq Credit: send blkd
wait event (overrides its class)
its wait classUP rise is bad25%5% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 25% of the prior mean and the event or class holds at least 5% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 25%; a share below 5%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 2.5% of Current wait time doubling: no (share below 5%). The same event at 15% of Current wait, up 35% on a steady baseline: yes.
parallel plumbing
PX Deq: Slave Session Stats
wait event (overrides its class)
its wait classUP rise is bad25%5% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 25% of the prior mean and the event or class holds at least 5% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 25%; a share below 5%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 2.5% of Current wait time doubling: no (share below 5%). The same event at 15% of Current wait, up 35% on a steady baseline: yes.
os thread creation
wait event (overrides its class)
its wait classUP rise is bad25%5% shareRise of |z| > 2 (moderate) or > 3 (large) against the prior windows, the move is at least 25% of the prior mean and the event or class holds at least 5% of the Current window's non-idle wait time.Any drop (it is improved); a rise below 25%; a share below 5%; |z| ≤ 2 (inside the usual spread); fewer than 3 prior windows.
An event at 2.5% of Current wait time doubling: no (share below 5%). The same event at 15% of Current wait, up 35% on a steady baseline: yes.

SQL, segments, files and unmapped names

Top SQL / SQL Monitor (per statement: elapsed, CPU, I/O)UP rise is bad · min 15% · no floor Segment I/O (section 14)UP rise is bad · min 20% · no floor File I/O (section 15)UP rise is bad · min 20% · no floor Any unmapped name (a stat a template adds that has no policy line)ANY either way · min 10% · no floor · counted, own family

Families and twins

Names in one family describe one physical quantity or one story. A finding card groups related families (Physical I/O, DB time, Network, Commit, ...) and is led by its most telling counted member; the rest are its related metrics, and a twin is never the lead.

user callsuser calls, User Calls Per Sec (twin) commitsuser commits, User Commits Per Sec (twin) CPUDB CPU, CPU used by this session (twin), Host CPU Utilization (%) CPU / wait ratioDatabase CPU Time Ratio (twin), Database Wait Time Ratio cursorsopened cursors cumulative DB timeDB time, Average Active Sessions (twin) executionsexecute count, Executions Per Sec (twin) hard parsesparse count (hard), parse count (failures), Hard Parse Count Per Sec (twin) logical I/Osession logical reads, table fetch by rowid, Logical Reads Per Sec (twin) networkbytes sent via SQL*Net to client, bytes received via SQL*Net from client, Network Traffic Volume Per Sec (twin) parsesparse count (total), Total Parse Count Per Sec (twin) read I/Ophysical reads, physical read total bytes, Average Synchronous Single-Block Read Latency, Physical Reads Per Sec (twin), Physical Read Total IO Requests Per Sec, Physical Read Total Bytes Per Sec (twin) redoredo size, redo size for lost write detection (twin), redo writes, Redo Generated Per Sec (twin) response timeSQL Service Response Time rollbacksuser rollbacks, User Rollbacks Per Sec (twin) full table scanstable scans (long tables) sessions / logonslogons cumulative, Logons Per Sec (twin), Session Count sortssorts (memory), sorts (rows) disk sortssorts (disk) write I/Ophysical writes, physical write total bytes, Physical Writes Per Sec (twin), Physical Write Total IO Requests Per Sec, Physical Write Total Bytes Per Sec (twin)

How to change it

  1. Edit the metric's line in sql/lib/metric_policy.plsql. Keep the one-line shape WHEN 'name' THEN RETURN pol('FAMILY', 'Y', 'UP', 20, 50); (or wpol(v_class, 'UP', 15, 0.02) for waits): the demo generator and this page parse those lines.
  2. Floors are in the metric's own unit (see the unit under each name). Set a floor to NULL to remove it. Wait floors are shares between 0 and 1.
  3. To stop a metric from ever being a finding, set its direction to INFO. To make a drop count as a problem too, use ANY.
  4. A new stat or metric added to a template needs a line here, or ./lint.sh (check 12) fails and the stat falls back to the generic default.
  5. Run ./lint.sh, then python3 docs/gen_policy_doc.py and python3 demo/gen_demo_report.py.

The same policy drives the single-DB report (verdict, finding cards, findings tables, DB time strip, wait tables, day profile, likely-source line) and the fleet report's findings band, row worst-finding and headline cards.