Hier findest du praxisnahe Einblicke, Tipps und Best Practices zu Administration, Performance-Tuning und Automatisierung.
Mein Ziel ist es, komplexe Themen verständlich aufzubereiten und Lösungen zu teilen, die sich direkt im Alltag von Datenbank-Profis einsetzen lassen
In der Oracle Enterprise Edition steht das lizenzpflichtige Diagnostic & Tuning Pack als zentrales Werkzeug für Performance-Analysen zur Verfügung. Falls man mit der Standard Edition arbeitet oder das Diagnostic & Tuning Pack nicht lizenziert hat eignet sich das Oracle Statspack als gute Alternative.
Statspack ist ein kostenloses Tool von Oracle, das Performance-Daten wie Wait Events, Buffer Gets, SQL-Statistiken und vieles mehr sammelt. Es speichert diese Daten in Tabellen, die später für Analysen genutzt werden können – ähnlich wie das Diagnostic & Tuning Pack, aber ohne Lizenzkosten.
⚙️ Installation & Einrichtung
AWR und Statspack sollten nicht gemeinsam auf einer Datenbank aktiviert sein, aus diesem Grund sollte es in der Enterprise Edition deaktiviert werden falls es aktiv ist.
CDB:
PDB:
Tablespace erstellen:
Falls Perfstat vorher bereits installiert war sollte man es vorher entfernen:
Perfstat installieren:
Metrics Level anpassen:
| Level | Beschreibung |
|---|---|
| 0 | This level captures general statistics, including rollback segment, row cache, SGA, system events, background events, session events, system statistics, wait statistics, lock statistics, and Latch information |
| 5 | This level includes capturing high resource usage SQL Statements, along with all data captured by lower levels |
| 6 | This level includes capturing SQL plan and SQL plan usage information for high resource usage SQL Statements, along with all data captured by lower levels |
| 7 | This level captures segment level statistics, including logical and physical reads, row lock, itl and buffer busy waits, along with all data captured by lower levels |
| 10 | This level includes capturing Child Latch statistics, along with all data captured by lower levels |
Ich persöhnlich halte Level 7 für ausreichend:
Snapshot-Erstellung
manuell:
Das ist unter andem sinnvoll wenn man einen Lasttest auf der DB fährt damit man sicher sein kann das die Metriken während des Test enthalten sind.
automatisch mit dem Oracle Scheduler:
Dieser job läuft alle 15 Minuten, es werden also 4 snapshots pro Stunde erzeugt.
-- perfstat Rechte erteilen um scheduler jobs zu erstellen:conn / as sysdba
grant create job to perfstat;
conn perfstat/*****
-- Job zum erstellen von sapshots anlegen
BEGIN
DBMS_SCHEDULER.create_job (
job_name => 'STATSPACK_SNAPSHOT_JOB',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN PERFSTAT.statspack.snap; END;',
start_date => SYSTIMESTAMP,
repeat_interval => 'FREQ=HOURLY; BYMINUTE=0,15,30,45',
enabled => TRUE,
comments => 'Scheduler Job to run statspack.snap every 15 minutes at fixed times'
);
END;
/
Housekeeping-Job erstellen:
Reporting:
--> Beispiel Report
Erwartetes Datenvolumen
Statspack-Metriken können je nach Häufigkeit und Aufbewahrungsdauer der Snapshots mehrere GB pro Datenbank beanspruchen.
Ein snapshot benötigt in etwa 1MB, im Monat wären das dann ca. 750MB bei einen snapshot pro Stunde.
Statspack ist nach wie vor ein leistungsfähiges und hilfreiches Performance-Tool für Oracle-Datenbanken. Im Vergleich zum kostenpflichtigen Diagnostic and Tuning Pack bietet es zwar weniger Funktionen und wirkt technisch etwas überholt, lässt sich jedoch lizenzfrei einsetzen und eignet sich gut für grundlegende Performance-Analysen.
Autor: Mark Seidenfaden