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():
- Enough history? Fewer than 3 prior windows → insufficient history. No usable spread (all priors identical and zero) → flat baseline. No Current value → n/a.
- 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.
- 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.
- 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; anINFOcounter that moved → noted. Neither is highlighted, leads a finding card, or is counted in the verdict; both are listed under "Checked and normal". - 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
A rise is a finding; a drop is improved (never highlighted).
A drop is a finding; a rise is improved (never highlighted).
Both directions are findings: a drop can be an outage, a rise a storm. Nothing is called improved.
Never a finding. A material move renders as noted (grey, not counted).
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) | Family | Direction | Min % | Floor | Fires when | Does not fire when | Example / note |
|---|---|---|---|---|---|---|---|
| DB time cs/s (centiseconds of DB time per second; 100 = one average active session) | DB time | UP rise is bad | 15% | 20 cs/s | Rise 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) | CPU | UP rise is bad | 15% | 10 cs/s | Rise 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) | CPU | UP rise is bad | 15% | 10 cs/s | Rise 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/O | UP rise is bad | 20% | 1,000 blocks/s | Rise 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/O | UP rise is bad | 20% | 50 blocks/s | Rise 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/O | UP rise is bad | 20% | 1 MB/s | Rise 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/O | UP rise is bad | 20% | 20 blocks/s | Rise 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/O | UP rise is bad | 20% | 1 MB/s | Rise 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 | redo | UP rise is bad | 20% | 10 KB/s | Rise 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 | redo | INFO informational | 20% | — | Never. A material move is shown as noted only. | Always (informational counter). | — bookkeeping |
| redo writes /s | redo | UP rise is bad | 20% | 1 /s | Rise 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 calls | ANY either way | 20% | 10 /s | Rise 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 | commits | ANY either way | 20% | 1 /s | Rise 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 | rollbacks | UP rise is bad | 25% | 0.5 /s | Rise 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 | executions | ANY either way | 20% | 10 /s | Rise 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 | parses | UP rise is bad | 20% | 10 /s | Rise 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 parses | UP rise is bad | 25% | 2 /s | Rise 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 parses | UP rise is bad | 25% | 0.5 /s | Rise 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 | sorts | INFO informational | 20% | — | Never. A material move is shown as noted only. | Always (informational counter). | — workload shape, not a problem |
| sorts (disk) /s | disk sorts | UP rise is bad | 25% | 0.5 /s | Rise 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 | sorts | INFO informational | 20% | — | Never. A material move is shown as noted only. | Always (informational counter). | — |
| logons cumulative /s | sessions / logons | UP rise is bad | 25% | 1 /s | Rise 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 | cursors | INFO informational | 20% | — | Never. A material move is shown as noted only. | Always (informational counter). | — |
| table scans (long tables) /s | full table scans | UP rise is bad | 25% | 0.5 /s | Rise 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/O | INFO informational | 20% | — | 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 | network | UP rise is bad | 30% | 100 KB/s | Rise 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 | network | UP rise is bad | 30% | 100 KB/s | Rise 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) | Family | Direction | Min % | Floor | Fires when | Does not fire when | Example / note |
|---|---|---|---|---|---|---|---|
| Host CPU Utilization (%) % of host CPU | CPU | UP rise is bad | 20% | 10 % of host CPU | Rise 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 ratio | DOWN drop is bad | 20% | 10 % of DB time spent on CPU | 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 % 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 ratio | UP rise is bad | 20% | 10 % of DB time spent waiting | Rise 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 time | UP rise is bad | 15% | 0.2 sessions | Rise 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/O | UP rise is bad | 25% | 1 ms per single-block read | Rise 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/O | UP rise is bad | 20% | 50 /s | Rise 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/O | UP rise is bad | 20% | 20 /s | Rise 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/O | UP rise is bad | 20% | 50 /s | Rise 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/O | UP rise is bad | 20% | 20 /s | Rise 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/O | UP rise is bad | 20% | 1 MB/s | Rise 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/O | UP rise is bad | 20% | 1 MB/s | Rise 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 | redo | UP rise is bad | 20% | 10 KB/s | Rise 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 / logons | UP rise is bad | 25% | 1 /s | Rise 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/O | UP rise is bad | 20% | 1,000 /s | Rise 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 calls | ANY either way | 20% | 10 /s | Rise 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 | commits | ANY either way | 20% | 1 /s | Rise 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 | rollbacks | UP rise is bad | 25% | 0.5 /s | Rise 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 | executions | ANY either way | 20% | 10 /s | Rise 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 parses | UP rise is bad | 25% | 2 /s | Rise 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 | parses | UP rise is bad | 20% | 10 /s | Rise 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 / logons | ANY either way | 20% | 10 sessions | Rise 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 | network | UP rise is bad | 30% | 100 KB/s | Rise 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 time | UP rise is bad | 25% | 0.1 cs per user call | Rise 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 class | Family | Direction | Min % | Floor | Fires when | Does not fire when | Example / note |
|---|---|---|---|---|---|---|---|
| Application wait class | wait class Application | UP rise is bad | 10% | 1% share | Rise 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 Configuration | UP rise is bad | 10% | 1% share | Rise 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 Concurrency | UP rise is bad | 15% | 2% share | Rise 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 Commit | UP rise is bad | 15% | 2% share | Rise 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/O | UP rise is bad | 15% | 2% share | Rise 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 Cluster | UP rise is bad | 15% | 2% share | Rise 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/O | UP rise is bad | 20% | 3% share | Rise 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 Scheduler | UP rise is bad | 20% | 3% share | Rise 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 Network | UP rise is bad | 25% | 5% share | Rise 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 Other | UP rise is bad | 25% | 5% share | Rise 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 Administrative | UP rise is bad | 25% | 5% share | Rise 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 Queueing | UP rise is bad | 25% | 5% share | Rise 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 event | Family | Direction | Min % | Floor | Fires when | Does not fire when | Example / note |
|---|---|---|---|---|---|---|---|
| enq: TX - row lock contention wait event (overrides its class) | its wait class | UP rise is bad | 10% | 1% share | Rise 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 class | UP rise is bad | 10% | 1% share | Rise 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 class | UP rise is bad | 10% | 1% share | Rise 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 class | UP rise is bad | 10% | 1% share | Rise 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 class | UP rise is bad | 10% | 1% share | Rise 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 class | UP rise is bad | 10% | 1% share | Rise 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 class | UP rise is bad | 10% | 1% share | Rise 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 class | UP rise is bad | 10% | 1% share | Rise 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 class | UP rise is bad | 10% | 1% share | Rise 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 class | UP rise is bad | 10% | 1% share | Rise 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 class | UP rise is bad | 10% | 1% share | Rise 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 class | UP rise is bad | 30% | 5% share | Rise 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 class | UP rise is bad | 30% | 5% share | Rise 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 class | UP rise is bad | 30% | 5% share | Rise 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 class | UP rise is bad | 25% | 5% share | Rise 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 class | UP rise is bad | 25% | 5% share | Rise 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 class | UP rise is bad | 25% | 5% share | Rise 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
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.
How to change it
- Edit the metric's line in
sql/lib/metric_policy.plsql. Keep the one-line shapeWHEN 'name' THEN RETURN pol('FAMILY', 'Y', 'UP', 20, 50);(orwpol(v_class, 'UP', 15, 0.02)for waits): the demo generator and this page parse those lines. - Floors are in the metric's own unit (see the unit under each name). Set a floor to
NULLto remove it. Wait floors are shares between 0 and 1. - To stop a metric from ever being a finding, set its direction to
INFO. To make a drop count as a problem too, useANY. - 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. - Run
./lint.sh, thenpython3 docs/gen_policy_doc.pyandpython3 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.