O'Reilly logo

Oracle 12c - Das umfassende Handbuch by Lutz Fröhlich

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

291
Kapitel 12
Der Oracle Resource Manager
Mit dem Oracle Resource Manager können Hardware-Ressourcen für einzelne
Benutzer oder Datenbankdienste begrenzt werden, um sicherzustellen, dass Res-
sourcen für wichtige oder privilegierte Aufgaben in ausreichendem Maß zur Ver-
fügung stehen. Im Detail können mit dem Resource Manager folgende Aufgaben
erledigt werden:
Den Parallelitätsgrad für Mitglieder einer Gruppe oder mehrerer Gruppen be-
grenzen.
Verteilung der CPU-Ressourcen durch Vorgabe von Prozentanteilen. Damit
kann garantiert werden, dass bestimmte Sessions ein festgelegtes Minimum
an CPU erhalten – unabhängig davon, wie sich die übrige Systemlast gestaltet.
Einen »Active Session Pool« erstellen. Damit wird die maximale Anzahl von ak-
tiven Sessions innerhalb einer Gruppe begrenzt.
Überwachung von Ressourcen.
Verwaltung von »Runaway Sessions«, also Sessions, die aus dem Ruder gelau-
fen sind. Darunter fallen Sessions, die Vorgaben über CPU-Verbrauch, logi-
sche und physische I/O-Operationen oder Ausführungszeit überschreiten.
SQL-Operationen, für die der Optimizer schätzt, dass die vorgegebene Laufzeit
überschritten wird, werden nicht ausgeführt.
Der Oracle Resource Manager besteht aus den folgenden Komponenten:
Resource Consumer Group: Eine Gruppe von Datenbank-Sessions mit glei-
chem oder ähnlichem Ressourcenbedarf. Ressourcen werden Consumer-Grup-
pen und nicht individuellen Sessions zugewiesen.
Resource Plan: Ein Container für Direktiven, die festlegen, welche Ressourcen
den Consumer-Gruppen zugewiesen werden sollen.
Hinweis
Während CPU-Ressourcen gut auf die einzelnen Consumer-Gruppen verteilt
werden können, ist eine Verteilung oder Begrenzung von I/O-Ressourcen nicht
möglich. Hier hilft nur ein gutes Monitoring. Die Gefahr, dass einzelne Sessions
eine hohe I/O-Auslastung verursachen, kann mit dem Oracle Resource Manager
nicht direkt unterbunden werden. Eine Ausnahme bildet die Exadata.
Kapitel 12
Der Oracle Resource Manager
292
Resource Plan Directive: Verbindet eine Consumer-Gruppe mit einem Resour-
ce Plan und legt fest, wie die Ressourcen zugewiesen werden sollen.
Im folgenden Beispiel wird ein einfacher Plan erstellt, der die Ressourcen zu den
normalen Bürozeiten aufteilen soll. Mitglieder der Gruppe »OLTP« sollen 70%
der CPU-Aktivitäten erhalten, dagegen die Gruppe »Reporting« 20% und alle
übrigen 10%.
Abb. 12.1: Beispiel für einen Ressourcenplan
Für das Erstellen eines Ressourcenplans sind die folgenden Schritte erforderlich:
1. Rechten vergeben, um den Plan erstellen zu können.
2. Eine Pending Area erstellen.
3. Consumer-Gruppen anlegen.
4. Sessions Consumer-Gruppen zuordnen.
5. Rechte an Consumer-Gruppen vergeben.
6. Den Ressourcenplan erstellen.
7. Direktiven festlegen.
8. Die Pending Area freigeben.
9. Den Ressourcenplan aktivieren.
Führen Sie die folgenden Schritte aus, um den in Abbildung 12.1 dargestellten
Ressourcenplan zu erstellen und zu aktivieren:
1. Über das Recht, Ressourcenpläne zu verwalten, verfügt standardmäßig nur der
Benutzer »SYS«. Im Beispiel soll der Benutzer MITP dieses Recht erhalten.
SQL> BEGIN
2 DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SYSTEM_PRIVILEGE(
3 grantee_name => 'MITP', admin_option => TRUE);
Kapitel 12
Der Oracle Resource Manager
293
2. Eine Pending Area ist ein temporärer Arbeitsbereich für die Konfiguration.
Solange sich die Konfiguration in der Pending Area befindet, ist der Plan
noch nicht scharf geschaltet. Legen Sie im zweiten Schritt eine Pending Area
an. Gemachte Änderungen können jederzeit durch Aufruf der Prozedur
»CLEAR_PENDING_AREA« abgebrochen werden.
3. Jetzt legen wir die Consumer-Gruppen an. Für den Plan sind die Gruppen
OLTP, REPORTING und SONSTIGE vorgesehen.
4. Jetzt müssen die Sessions den Consumer-Gruppen zugewiesen werden. Dies
kann über Datenbankdienste oder Benutzernamen erfolgen. Im Beispiel wei-
sen wir Benutzer zu.
4 END;
5 /
PL/SQL-Prozedur erfolgreich abgeschlossen.
SQL> CONNECT mitp/mitp
Connect durchgeführt.
SQL> BEGIN
2 DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
3 END;
4 /
PL/SQL-Prozedur erfolgreich abgeschlossen.
SQL> BEGIN
2 DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
3 consumer_group => 'OLTP', comment => 'OLTP user');
4 END;
5 /
PL/SQL-Prozedur erfolgreich abgeschlossen.
SQL> BEGIN
2 DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
3 consumer_group => 'REPORTING', comment => 'REPORTING user');
4 END;
5 /
PL/SQL-Prozedur erfolgreich abgeschlossen.
SQL> BEGIN
2 DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
3 consumer_group => 'SONSTIGE', comment => 'SONSTIGE user');
4 END;
5 /
PL/SQL-Prozedur erfolgreich abgeschlossen.
SQL> BEGIN
2 DBMS_RESOURCE_MANAGER.set_consumer_group_mapping (
3 attribute => DBMS_RESOURCE_MANAGER.oracle_user,
4 value => 'TEST_1',
Kapitel 12
Der Oracle Resource Manager
294
5. Im nächsten Schritt wird der Ressourcenplan erstellt.
6. Im Weiteren müssen noch die Plandirektiven erstellt werden.
5 consumer_group => 'OLTP');
6 END;
7 /
PL/SQL-Prozedur erfolgreich abgeschlossen.
SQL> BEGIN
2 DBMS_RESOURCE_MANAGER.set_consumer_group_mapping (
3 attribute => DBMS_RESOURCE_MANAGER.oracle_user,
4 value => 'MITP',
5 consumer_group => 'REPORTING');
6 END;
7 /
PL/SQL-Prozedur erfolgreich abgeschlossen.
SQL> BEGIN
2 DBMS_RESOURCE_MANAGER.set_consumer_group_mapping (
3 attribute => DBMS_RESOURCE_MANAGER.oracle_user,
4 value => 'TEST_2',
5 consumer_group => 'SONSTIGE');
6 END;
7 /
PL/SQL-Prozedur erfolgreich abgeschlossen.
SQL> BEGIN
2 DBMS_RESOURCE_MANAGER.CREATE_PLAN('BUEROZEITEN');
3 END;
4 /
PL/SQL-Prozedur erfolgreich abgeschlossen.
SQL> BEGIN
2 DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE (
3 PLAN => 'BUEROZEITEN',
4 GROUP_OR_SUBPLAN => 'OLTP',
5 COMMENT => 'OLTP Gruppe',
6 MGMT_P1 => 70);
7 END;
8 /
PL/SQL-Prozedur erfolgreich abgeschlossen.
SQL> BEGIN
2 DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE (
3 PLAN => 'BUEROZEITEN',
4 GROUP_OR_SUBPLAN => 'REPORTING',
5 COMMENT => 'REPORTING Gruppe',
6 MGMT_P1 => 20);
7 END;
8 /
PL/SQL-Prozedur erfolgreich abgeschlossen.
SQL> BEGIN

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required