Um die Effizienz bzw. Verfügbarkeit einer Datenbank zu überwachen, oder um bereits vorhandene Ressourcenengpässe zu lokalisieren, stellt Oracle seit 8i ein kostenloses Tool zur Sammlung und Auswertung von Datenbankinformationen vor allem zur Performanceoptimierung zur Verfügung.
Mit Oracle STATSPACK können (Performance-)Informationen über viele Bereiche einer Oracle Datenbank gesammelt werden, um diese dann zu einem späteren Zeitpunkt auswerten zu können.
Seit der Version 10g gibt es zusätzlich zu Statspack auch noch ein weiteres Tool für diese Aufgaben, das Automatic Workload Repository (AWR). Der hauptsächliche Nachteil von AWR ist, dass es im Gegensatz zu Statspack kostenpflichtig ist und auch nur auf einer Oracle Enterprise Edition lizensierbar ist. AWR ist in allen Oracle Datenbanken (also auch in der Standard Edition (One) und Personal Edition) installiert und sammelt standardmäßig auch immer zur vollen Stunde Informationen über den aktuellen Zustand der Datenbank; ein DBA darf diese Informationen ohne eine gültige Lizenz mindestens einer der beiden Enterprise Edition Management Packs „Diagnostic Pack und Tuning Pack“ jedoch weder auswerten (awrrpt.sql oder über den Reiter „Performance“ in der Oracle Database Control Weboberfläche) noch die zugehörigen AWR-Views (vor allen DBA_HIST_*) in eigenen SQL-Abfragen verwenden.
Aus diesem Grund wird in diesem kurzen Artikel die Installation, Aktivierung und Auswertung von STATSPACK beschrieben.
Bei der Installation von Oracle Statspack wird der neue Benutzer PERFSTAT in der Datenbank angelegt. Diesem Benutzer ist – wie jedem Datenbankbenutzer – ein Default und ein Temporärer Tablespace zugewiesen. Oracle empfiehlt sein Oracle 10g als Default Tablespace SYSAUX zu verwenden. Ich empfehle jedoch weiterhin, einen separaten neuen Tablespace zu verwenden, da nach dem Löschen von Statspack und des Benutzers PERFSTAT dieser Tablespace auch einfach gelöscht werden kann.
Hinweis: Die Installation von Statspack sollte direkt auf dem Datenbankserver erfolgen.
Die Installation erfolgt als Benutzer SYS mit folgendem Skript:
ORACLE_HOME/rdbms/admin/spcreate.sql
Im Verlauf der Installation müssen sie ein Passwort für den neuen Benutzer PERFSTAT und die beiden zu verwendenden Tablespaces angeben.
Ein Beispiel unter Linux:
$ export ORACLE_SID=o11g
$ sqlplus /nolog
SQL> CONNECT / AS SYSDBA
Connected.
SQL> CREATE TABLESPACE statspack DATAFILE ‘/u02/app/oracle/oradata/o11g/data/statspack_01.dbf’ SIZE 100M AUTOEXTEND ON NEXT 50M MAXSIZE 2000M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
Tablespace created.
SQL> @?/rdbms/admin/spcreate.sql
…
Enter value for perfstat_password:
…
Enter value for default_tablespace:
…
Enter value for temporary_tablespace:
…
Nach erfolgreicher Installation von Statspack ist man als PERFSTAT mit der Datenbank verbunden und sollte sofort
a) Einen ersten Snapshot durchführen
b) Einen Job für alle weiteren Snapshots einrichten
SQL> CONNECT perfstat/pwd
SQL> EXECUTE statspack.snap
Oder z. B. mit anderem Snapshot-Level
SQL> CONNECT perfstat/pwd
SQL> EXECUTE statspack.snap (i_snap_level => 7)
SQL> CONNECT perfstat/pwd
SQL> @?/rdbms/admin/spauto.sql
Das Skript spauto.sql erstellt einen Datenbankjob, der stündlich zur vollen Stunde einen Snapshot mit Default-Snaphotlevel (Default: 5) durchführt.
Besser ist es in unseren Augen – gerade ab 10g um eine zeitliche Überschneidung mit AWR zu vermeiden – den Snapshot immer 30 Minuten später zu starten.
Hinweis:
Damit der neue Job auch ausgeführt werden kann muss der Initialisierungsparameter JOB_QUEUE_PROCESSES einen Wert größer 0 (Default: 10) haben.
Die nun so gesammelten Statistiken wollen natürlich auch ausgewertet werden. Dazu stellt Oracle das folgende Skript bereit:
ORACLE_HOME/rdbms/admin/spreport.sql
Nach dem Aufruf dieses Skriptes werden alle verfügbaren Snapshots aufgelistet. Dann wird zur Eingabe der Snap- Id's aufgefordert, über die ein Report erzeugt werden soll. Als Dateiname kann man den Default akzeptieren (Default: sp_<begin_snap_id>_<end_snap_id>.lst).
Alte Snapshots sollten regelmäßig gelöscht werden. Nur so kann gewährleistet werden, dass der Default Tablespace von PERFSTAT nicht sinnlos wächts.
Oracle stellt dafür wieder ein Skript bereit:
ORACLE_HOME/rdbms/admin/sppurge.sql
Statspack kann natürlich auch wieder entfernt werden.
Am einfachsten geschieht dies durch die Verwendung des folgenden Skripts (auszuführen as SYS):
ORACLE_HOME/rdbms/admin/spdrop.sql
Der extra für STATSPACK erstellte Tablespace kann anschließend manuell gelöscht werden.
Telefon:
089 6228 6789-0
Telefon (gültig bis Ende 2010):
089 679090-40
E-Mail:
› info@muniqsoft.de
Bitte nehmen Sie mich in den Verteiler der monatlichen Tipps & Tricks auf.