In seiner OOW Präsentation SQL Monitoring in Oracle Database 12c liefert Tanel Poder eine schöne Übersicht zum SQL Monitoring in 12c, was in Anbetracht der Überschrift womöglich nicht allzu sehr überrascht. Ich spare mir eine komplette Nacherzählung (die bei Folien ohnehin einen gewissen Anteil an Interpretation enthalten würde), sondern beschränke mich auf die Auflistung von Punkten, die mir erinnerungswürdig erscheinen - was vielleicht nur eine freundlichere Umschreibung dafür ist, dass ich sie vergessen hatte:
- das Monitoring erfolgt in 12c:
- wenn der MONITOR Hint verwendet wird
- bei parallel queries
- nach 5 Sekunden CPU/IO für serielle Queries (gesteuert über _sqlmon_threshold)
- es unterscheidet zwischen "duration" (= wall-clock time from the execution start) und "db time" (= amount of database time your session (and its PX slaves, if any) spent executing this SQL).
- die "Other" Spalte im HTML-Report enthält in 12c wichtige Zusatzinformationen (HASH JOIN row source, JOIN FILTER CREATE row source, Exadata Details).
- Bindewerte sind im Report erfasst (ebenso wie in der zugrunde liegenden Spalte v§sql_monitor.bind_xml.
- für häufig ausgeführte OLTP queries ist die Verwendung des MONITOR-Hints keine gute Idee, da die runtime metrics für jede Ausführung in einer eigenen Struktur in der SGA gespeichert werden müssen.
- natürlich hat der Herr Poder ein Skript zur Repräsentation der Informationen in sqlplus - nämlich asqlmon.sql.
- in 12c gibt es AWR-Tabellen zur Persistierung dieser Daten (DBA_HIST_REPORTS, DBA_HIST_REPORTS_DETAILS).
- große Pläne werden per default nicht erfasst (_sqlmon_max_planlines=300).
Keine besonders aufsehenerregenden Änderungen, aber doch ein paar nette Ergänzungen - insbesondere die AWR-Integration finde ich nützlich.