Logo Oracle Deutschland April 2017
Oracle Datenbank 12.2: Oracle Multitenant und lokales AWR
von Ralf Durben

Das Automatic Workload Repository (AWR) wurde mit der Version 10g der Oracle Datenbank eingeführt und muß über das Diagnostics Pack lizenziert werden. Technisch werden dabei in der Datenbank regelmäßige Zugriffe direkt auf die SGA (System Global Area) der Datenbank durchgeführt, um sehr performant auf Nutzungsstatistiken der Datenbanksitzungen zuzugreifen. Die Daten werden in Tabellen im Tablespace SYSAUX gespeichert.

Das AWR bietet umfangreiche Daten für eine Analyse von Performance-Engpässen und sonstigen Problemen, die von den Anwendungen verursacht werden können und ist mittlerweile für viele eine unverzichtbare Basis für die Verwaltung von Oracle Datenbanken geworden.

Oracle Multitenant wurde mit der Version 12c Release 1 der Oracle Datenbank eingeführt und bei dieser Version wird das AWR ausschließlich auf der Ebene der CDB gespeichert. Auch die Erfassungsintervalle werden dabei ausschließlich in der CDB festgelegt. Da diese Daten nur in der CDB gespeichert sind, werden diese bei einem Transport von einer CDB zur anderen CDB (Unplug und Plug) nicht mitgenommen.

Um Oracle Multitenant als Konsolisierungsplattform noch weiter zu verbessern wurde mit der Version 12c Release 2 der Oracle Datenbank eine wichtige Veränderung beim AWR durchgeführt: die für eine PDB relevanten Daten des AWR können sowohl in der CDB, als auch lokal in der PDB gespeichert werden. Dieses ist wichtig, zum Beispiel dann, wenn eine PDB von einer CDB zu einer anderen CDB verschoben werden soll und die AWR Daten dabei in der PDB erhalten bleiben sollen.

In einer Multitenant Umgebung speichert das AWR sowohl generelle, instanzspezifische, als auch PDB spezifische Daten.

Automatische PDB seitige AWR-Snapshots aktivieren

Per Default ist die automatische Erstellung von Snapshots für PDBs deaktiviert, die Aktivierung erfolgt in der jeweiligen PDB über

ALTER SYSTEM SET AWR_PDB_AUTOFLUSH_ENABLED=TRUE;  --(der Default is FALSE).   

Danach setzen Sie mit DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS eine Zeit für das Erfassungsintervall (in Minuten), also zum Beispiel:

EXECUTE DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
  interval  =>  60,
  retention =>  20160);   

Dieser Schritt ist notwendig, da sonst PDB seitig keine AWR Snapshots erstellt werden, der Default für das Intervall also 0 ist.

Sie können diese Einstellungen auch in Oracle Enterprise Manager Cloud Control vornehmen, sobald Sie das Plug-in der Version 13.2.2 für Oracle Datenbanken installiert haben:

AWR Snapshots können auch manuell (wie gewohnt mit dem PL/SQL Package DBMS_WORKLOAD_REPOSITORY) erstellt werden, wobei die Vorgehensweise sich nicht unterscheidet, ob auf CDB- oder PDB-Ebene. Es entscheidet einzig, an welcher Datenbank Sie angemeldet sind.

Jede PDB führt dabei eigene sogenannte Snapshots aus, entweder manuell, oder über ein regelmäßiges Intervall. Die Kommandos dazu unterscheiden sich nicht vom bislang gewohnten Umgang mit dem AWR, nur dass die in einer Datenbanksitzung in einer PDB ausgeführt werden. Bei einem Transport einer PDB über Unplug und Plug werden die AWR-Daten also mitgenommen.

Die in einer PDB erstellten Snapshots sind unabhängig von denen, die in der CDB erstellt werden und haben auch eigene Snapshot IDs. Über PDB Lockdown Profiles (siehe Community Tipp "Oracle Database12c Release 2: unsere Lieblingsfeatures") kann die Erstellung von AWR Snapshots auf PDB-Ebene verhindert werden mit

ALTER LOCKDOWN PROFILE profile_name DISABLE FEATURE=('AWR_ACCESS'); 

Dieses sollte aber nur verwendet werden, wenn die Nutzung des AWR für einzelne PDBs oder auf PDB Ebene generell verhindert werden soll. Sollte das Diagnostics Pack für die CDB nicht lizenziert sein, empfiehlt es sich die Funktionalität des AWR generell abzuschalten mit

ALTER SYSTEM SET control_management_pack_access=none;    

Mit diesem Kommando wird die Nutzung des Diagnostics Pack wie gewohnt sowohl für die CDB, als auch für alle dort betriebenen PDBs ausgeschaltet.

PDB seitige AWR-Snapshots manuell erstellen

Sie erstellen einen manuellen AWR Snapshop mit

EXECUTE DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT('TYPICAL');

wobei der Parameter den Umfang an Daten angibt, der dadurch ermittelt wird. Der Wert 'TYPICAL' entspricht auch dem Default auf CDB Ebene.

In Cloud Control könnnen Sie einen Snapshot auf PDB-Ebene auch graphisch erstellen, indem Sie den Button "Create" nutzen (Navigation zur Seite: Performance -> AWR -> AWR Administration -> Snapshots (auf die Anzahl klicken)):

AWR Reports

AWR Reports können Sie wie gewohnt mit den vorbereiteten Skripten erstellen. Wenn Sie den AWR Report für die Datenbank erstellen möchten bei der Sie angemeldet sind (CDB oder PDB), verwenden Sie

@$ORACLE_HOME/rdbms/admin/awrrpt.sql

Wenn Sie einen PDB spezifischen AWR Report erstellen möchten, während Sie an der CDB angemeldet sind, verwenden Sie

@$ORACLE_HOME/rdbms/admin/awrrpti.sql

und geben im Verlauf des Skripts den Namen der PDB ein.

In Cloud Control könnnen Sie einen AWR Report auf PDB-Ebene auch graphisch erstellen, indem Sie das Kommando "View Report" in der Select Liste nutzen (Navigation zur Seite: Performance -> AWR -> AWR Administration -> Snapshots (auf die Anzahl klicken)):

Data Dictionary

Beim Zugriff auf die Daten im AWR gilt, dass wenn innerhalb einer PDB darauf zugegriffen wird, automatisch nur die PDB spezifischen Daten angezeigt werden. Sowohl SQL-Skripte zum Erstellen der AWR-Reports, also auch die bekannten Data Dictionary Views bzgl. AWR (z.B. DBA_HIST_SYSSTAT) können auf beiden Ebenen verwendet werden.

Fazit

AWR Daten können auch auf der PDB Ebene erstellt werden. Damit bleiben Sie auch bei einem Wechsel von einer CDB in eine andere CDB erhalten. Auch kann es damit den Service-Ownern ermöglicht werden, eigene Snapshotzyklen zu nutzen.

Hinweis zur Lizenzierung

Die Nutzung von AWR ist Bestandteil vom Diagnostics Pack für Oracle Datenbanken.

Weitere Informationen

 

Zurück zum Anfang des Artikels

Zurück zur Community-Seite