Automatic Workload Repository (AWR) in Oracle 10g |
Oracle Datenbanken wurden in den letzten Jahren zunehmend mit Tools ausgestattet, die Performance-Daten erheben und entsprechende Reports generieren. Ursprünglich waren die Skripts UTLBSTAT/UTLESTAT dazu da, um die Performance zu überwachen. Oracle 8i hat dann die Statspack Funktionen mitgebracht, die in Oracle 9i ausgebaut wurden. In Oracle 10g hat sich Statspack entwickelt zum
Automatic
Workload Repository (AWR).
V$SESS_TIME_MODEL und V$SYS_TIME_MODEL.
V$ACTIVE_SESSION_HISTORY.
V$SYSSTAT und V$SESSTAT .
Bei unveränderten Standardeinstellungen nach der Installation werden relevante Daten jede volle Stund erhoben und für 7 Tage aufbewahrt. Diese Default-Werte kann man folgendermaßen ändern:
-- Datei: less_snapshots.sql BEGIN |
Die Änderungen kann amn in der View DBA_HIST_WR_CONTROL kontrollieren:
SQL> select * from dba_hist_wr_control; DBID |
Man kann in der Oberfläche des EM im Reiter Administration Gruppe Ergebnissammluing unter
Automatisches Workload Repository leider nur Werte zwischen 10 min und 2 Stunden für dei Snapshot-Intervalle einstellen. Angezeigt bekommt man aber Änderungen, die man an der Konsole durchgeführt hat:
Nochmals zu den Werten im Skript: Ein Interval von "0" schaltet die Snapshot-Funktionalität ab, was wiederum die meisten Features der Self-Tuning-Funktionen stoppt und aher nicht empfohlen werden kann. Automatische sammlöung der Snapshots ist nur möglich, wenn der Parameter STATISTICS_LEVEL auf TYPICAL oder ALL gesetzt ist. Wenn der Wert auf BASIC gesetzt ist, können manuell Snapshots aufgenommen werden, es fehlen aber einige Statistiken.
Extra-Snapshots könnem immer zusätzlich zwischendurch aufgenommen werden, bzw. können existierende Snapshots gelöscht werden, wie im folgenden Skript:
EXEC DBMS_WORKLOAD_REPOSITORY.create_snapshot; |
Informationen über die Snapshots kann man über Abfrage der View DBA_HIST_SNAPSHOT erhalten.
Als Baseline bezeichnet man ein Paar von Snapshots, die eine spezifische Nutzungsperiode der Datenbank begrenzen, z.B. Lastspitzen o.ä. Sind Baselines definiert, kann man mit ihrer Hilfe die aktuelle Performance mit ähnlichen Perioden in der Vergangenheit vergleichen.
Und so können Sie ein Paar Baselines erstellen, die beispielsweise eine bestimmte Periode markieren, in der ihre Datenbank exzessives Batch Processing abarbeiten musste:
BEGIN |
BEGIN |
DBA_HIST_BASELINE abfragen.V$ACTIVE_SESSION_HISTORY - Zeigt die Active Session History (ASH) an, die jede Sekunde aufgezeichnet wird.
V$METRIC - Zeigt metrische Informationen an.
V$METRICNAME - Zeigt metrische Informationen in Zuzsammenhang mit jeder metrischen Gruppe an.
V$METRIC_HISTORY - Zeigt historische metrische Informationen an.
V$METRICGROUP - Zeigt alle metrischen Gruppen an.
DBA_HIST_ACTIVE_SESS_HISTORY - Zeigt die historischen Informationen aus den Inhalten der Active Session History (ASH).
DBA_HIST_BASELINE - Zeigt die Baselien-Informationen an.
DBA_HIST_DATABASE_INSTANCE - Zeigt die Umgebungsinformationen der Datenbank an.
DBA_HIST_SNAPSHOT - Zeigt die Snapshot-Informationen an.
DBA_HIST_SQL_PLAN - Zeigt die SQL-Ausführungspläne an.
DBA_HIST_WR_CONTROL - Zeigt die Einstellungen des Automatic Workload Repository (AWR) an. Oracle kommt mit zwei Skripten, die Workload Repository Reports generieren. (awrrpt.sql und awrrpti.sql). Die Reports sind den alten Statspack Reports sehr ähnlich und können als HTML oder Text ausgegeben werden. Die Reports sind bei beiden Skripten prinzipiell identisch, awrrpti.sql lässt sich auf eine einzelne Instanz beschränken. Man erzeugt die Reports folgendermaßen:
@$ORACLE_HOME/rdbms/admin/awrrpt.sql |
Die Skripts fragen nach dem Ausgabeformat ab (HTML oder Text), der Start-Snapshot-ID, der End-Snapshot-ID und dem Dateinamen für den Report..