Wer auch sich den AWR / ADDM nicht leisten möchte, kann ja bei Oracle auch weiterhin zum kostenlosen Monitoring Tool STATSPACK greifen.
Wir haben ja in einem früheren Tipp die Grundlagen schon mal beleuchtet, deswegen beschäftigen wir uns heute mit der Optimierung:
1. Nach der Installation sollte der Benutzer mit seinen Tabellen neue Statistiken bekommen:
BEGIN
dbms_stats.gather_schema_stats('PERFSTAT');
END;
2. Sperren Sie nach der Installation den PERFSTAT Account, da eine direkte Anmeldung i.d.R. nicht notwendig ist.
ALTER USER PERFSTAT ACOUNT LOCK;
3. Aktualisieren Sie die Liste der Idle Events: (bis 12.2 incl)
DELETE FROM stats$idle_event;
INSERT INTO stats$idle_event
SELECT name FROM v$event_name
WHERE wait_class='Idle';
commit;
Die weiteren Tipps gehen etwas in die Tiefe und sind auf eigene Gefahr. Wir haben uns die datei aus einer 18c (Stand Dez 2018) vorgenommen, bei älteren oder jüngeren Dateien können die Zeilennummern leicht variieren.
Sie können im Verzeichnis ORACLE_HOME/rdbms/admin die Datei sprepins.sql editieren, denn diese wird von spreport aufgerufen.
1. Wenn Sie HTML als Ausgabe verwenden wollen:
Zeile 485:
set markup html on
Der erste Block sieht zwar dann etwas zerschossen aus, weiter unten wird es jedoch dann besser :-)
2. Der Dateiname sollte dann auch auf .html enden (den Pfad können Sie natürlich anpassen:
Zeile 466:
select 'sp_'||:bid||'_'||:eid dflt_name from dual;
wird geändert in:
select 'c:\\temp\\sp_'||:bid||'_'||:eid||'.html' dflt_name from dual;
3. Bei den Top 5 Wait Events werden auch immer Idle Events angezeigt (da dreht die Datenbank Däumchen),
das führt regelmäßig zur Verwirrung. Deswegen setzen wir den Text Idle bei den betreffenden Events ein:
Zeile 1273:
from (select e.event as event
wird geändert in:
from (select e.event||(select '(Idle)' from v$event_name en where wait_class='Idle' and en.name=b.event) as event
4. der nächste Fehler feiert inzwischen auch 10 jähriges... beim Löschen/Truncate einer Tabelle fehlt der Schemaname, wenn man nicht als Benutzer perfstat arbeitet
Zeile 2740: truncate table STATS$TEMP_SQLSTATS;
ersetzen durch :
truncate table perfstat.STATS$TEMP_SQLSTATS;
Weitere Tipps erhalten Sie in unseren Tuning und Monitoring Kursen. Wir freuen uns auf Sie.