Datenbankentwickler sollten nicht nur SQL Statements schreiben, sondern auch die Möglichkeit haben, ihre eigenen SQL Abfragen zu monitoren und gegebenenfalls zu optimieren. Liegt es an gewissen Statements, der Parallelisierung, den Ausführungsplänen, oder vielleicht an Ressourcen, die zu knapp bemessen sind, falls Datenbankabfragen zu langsam laufen? Hilfestellung zur Beantwortung dieser Fragen liefert dabei die Datenbank selbst. Sie stellt ein eigenes Framework zur Verfügung, um ohne Verwendung von externen Werkzeugen und ohne zusätzliche Installation ein genaues Monitoring zu erlauben. Dieses Datenbank Framework besteht dabei aus speziellen Datenbank Views, PL/SQL-Packages und ein spezielles Workload Repository, um nur einige Beispiele zu nennen. 


Das Real-Time Monitoring beispielsweise, das schon seit Oracle 11g in der Oracle Datenbank zur Verfügung steht, ist ein geeignetes Hilfsmittel, um zuverlässig einen detaillierten Überblick über globale SQL- und PL/SQL-Statistiken von Operationen zu erhalten. Sowohl Cursor-Statistiken (z.B. CPU-Zeiten und IO-Zeiten) als auch Ausführungsplan-Statistiken (z.B. Anzahl der Zeilen, Speicher und belegter Temp Space) werden während der Ausführung der Anweisung nahezu in Echtzeit aktualisiert. Dabei werden nicht nur die gerade aktive Operationen monitort, sondern auch Abfragen, die sich in einer Warteschlange befinden oder gar abgebrochen worden sind. Grundlage um die relevanten Statistiken anzuzeigen, sind die Views V$SQL_MONITOR und V$SQL_PLAN_MONITOR. Darüber hinaus stellt DBMS_SQLTUNE die Funktionen REPORT_SQL_MONITOR und REPORT_SQL_MONITOR_LIST bereit, um übersichtliche Reports zu erstellen. 

Ein Hinderungsgrund für Database Developer diese Funktion zu verwenden, war bisher immer, dass Datenbankadministrationsrechte wie SELECT_ANY_CATALOG Rolle erforderlich waren. Mit 19c ist diese Einschränkung nun aufgehoben worden! Somit können Datenbank Developer mit weniger Privilegien beispielsweise nur mit der CONNECT und RESOURCE Rolle das Real-Time Monitoring für das Monitoren ihrer eigenen Statements verwenden. 

Ein Beispiel wie Datenbank Developer das Real-Time Monitoring verwenden können, wird im folgenden Tipp beschrieben und demonstriert