CS_RESOURCE_MANAGER-Package
Das Package CS_RESOURCE_MANAGER bietet eine Schnittstelle zum Erstellen von Nutzungsgruppen, Plänen und Aktualisieren von Nutzungsgruppenparametern und Plananweisungen.
Übersicht über Unterprogramme CS_RESOURCE_MANAGER
| Unterprogramm | Beschreibung |
|---|---|
| Prozedur CLEAR_PENDING_AREA | Bei diesem Verfahren werden ausstehende Änderungen für den Ressourcenmanager gelöscht. |
| Prozedur CREATE_CONSUMER_GROUP | Diese Prozedur definiert Ressourcennutzungsgruppen. |
| Prozedur CREATE_PENDING_AREA | Im Folgenden wird ein ausstehender Bereich erstellt, um Änderungen an Ressourcenmanagerobjekten vorzunehmen. |
| CREATE_PLAN - Prozedur | Im Folgenden werden Einträge erstellt, die Ressourcenpläne definieren. |
| Prozedur CREATE_PLAN_DIRECTIVE | Mit diesem Verfahren werden Ressourcenplananweisungen erstellt. |
| Prozedur DELETE_CONSUMER_GROUP | Mit dieser Prozedur werden Ressourcennutzungsgruppen gelöscht. |
| Prozedur DELETE_PLAN | Bei diesem Verfahren werden der angegebene Plan sowie alle Plananweisungen gelöscht, auf die er sich bezieht. |
| Prozedur DELETE_PLAN_DIRECTIVE | Mit diesem Verfahren werden Ressourcenplananweisungen gelöscht. |
| Funktion LIST_CURRENT_RULES | Diese Funktion gibt die aktuellen Einstellungen für den Standardplan zurück. |
| Funktion LIST_DEFAULT_RULES | Diese Funktion gibt die Standardwerte für alle Nutzungsgruppen zurück. |
| Prozedur REVERT_TO_DEFAULT_VALUES | Bei diesem Verfahren werden die Default-Resource Manager-Planeigenschaften auf Standardwerte zurückgesetzt. |
| Prozedur SET_CONSUMER_GROUP_MAPPING | Diese Prozedur fügt Einträge hinzu, löscht oder ändert Einträge, die Sessions Nutzungsgruppen zuordnen, basierend auf den Anmelde- und Laufzeitattributen der Session. |
| Prozedur SET_CONSUMER_GROUP_MAPPING_PRI | Zur Zuordnung der Session zu einer Nutzungsgruppe können mehrere Attribute einer Session verwendet werden. In diesem Verfahren werden die Attributzuordnungen priorisiert. |
| Prozedur SUBMIT_PENDING_AREA | Im Folgenden werden ausstehende Änderungen für den Ressourcenmanager weitergeleitet. Sie löscht den Bereich "Ausstehend", nachdem die Änderungen validiert und festgeschrieben wurden (falls gültig). |
| Prozedur UPDATE_PLAN_DIRECTIVE | Mit dieser Prozedur können Sie vordefinierte Standardpläne aktualisieren, die mit der autonomen KI-Datenbank (DWCS_PLAN und OLTP_PLAN) für eine angegebene Nutzungsgruppe geliefert werden. |
| Prozedur UPDATE_PLAN_DIRECTIVE_ADV | Unter diesem Thema wird beschrieben, wie Sie den benutzerdefinierten Resource Manager-Plan für eine bestimmte Nutzungsgruppe aktualisieren. |
Prozedur CLEAR_PENDING_AREA
Bei diesem Verfahren werden ausstehende Änderungen für den Ressourcenmanager gelöscht.
Syntax
CS_RESOURCE_MANAGER.CLEAR_PENDING_AREA;Prozedur CREATE_CONSUMER_GROUP
Diese Prozedur definiert Ressourcennutzungsgruppen.
Syntax
CS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
consumer_group IN VARCHAR2,
comment IN VARCHAR2 DEFAULT NULL);Parameter
| Parameter | Beschreibung |
|---|---|
consumer_group |
Name der Nutzungsgruppe |
comment |
Benutzerkommentar |
Hinweise zur Verwendung
Sie können bestimmen, wie Sessions in Nutzungsgruppen platziert werden:
- Zuweisung der Verbindungszeichenfolge: Geben Sie die Zeichenfolge
CONSUMER_GROUPin der Datenbankverbindung wie unten dargestellt an. Dieser Ansatz hat Vorrang vor dem Mapping und überschreibt alle definierten Mappings.
(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.us-ashburn-
1.oraclecloud.com))(connect_data=(service_name=my_database_low.adb.oraclecloud.com)(CONSUMER_GROUP=OLTP_LOW))(security=(ssl_server_dn_match=yes)))- Zuordnungsregeln: Mit den Unterprogrammen
set_consumer_group_mappingundset_consumer_group_mapping_prikönnen Sie Nutzungsgruppen Sessions oder Anwendungen basierend auf Attributen wie Benutzername oder Anwendungsname zuweisen.
Beispiele
BEGIN
CS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
consumer_group => 'OLTP_HIGH',
comment => 'Priority OLTP sessions');
CS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
consumer_group => 'OLTP_LOW',
comment => 'Background/low-priority OLTP');
CS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
consumer_group => 'LH_BATCH',
comment => 'Batch / reporting workloads');
END;
/Prozedur CREATE_PENDING_AREA
Diese Prozedur erstellt einen ausstehenden Bereich, um Änderungen an Ressourcenmanagerobjekten vorzunehmen.
Die ausstehende Fläche kann als Kratzbereich für Planschemaänderungen betrachtet werden. Der Administrator erstellt diesen ausstehenden Bereich, nimmt bei Bedarf Änderungen vor, validiert diese möglicherweise und erst nach Abschluss der Weiterleitung werden diese Änderungen aktiv.
Syntax
CS_RESOURCE_MANAGER.CREATE_PENDING_AREA;Hinweise zur Verwendung
Sie können jederzeit das aktuelle Plangeschema mit Ihren Änderungen anzeigen, während der ausstehende Bereich aktiv ist, indem Sie aus den entsprechenden Benutzeransichten auswählen. Weitere Informationen finden Sie unter Konfiguration und Status von Database Resource Manager anzeigen.
Sie können den Bereich "Ausstehend" jederzeit löschen, wenn Sie die aktuellen Änderungen stoppen möchten. Sie können auch die Prozedur VALIDATE aufrufen, um zu bestätigen, ob die vorgenommenen Änderungen gültig sind. Sie müssen Ihre Änderungen nicht in einer bestimmten Reihenfolge vornehmen, um eine konsistente Gruppe von Einträgen beizubehalten. Diese Prüfungen werden auch implizit durchgeführt, wenn der ausstehende Bereich weitergeleitet wird.
Hinweis
Hinweis: Oracle lässt "verwaiste" Nutzungsgruppen zu (d.h. Nutzungsgruppen ohne Plananweisungen, die sich darauf beziehen). Dies ist in der Erwartung, dass ein Administrator möglicherweise eine Nutzungsgruppe erstellen möchte, die derzeit nicht verwendet wird, aber in Zukunft verwendet wird.
Bei Ressourcenplänen müssen die folgenden Regeln eingehalten werden. Sie werden bei jeder Ausführung der Validierungs- oder Weiterleitungsprozeduren geprüft:
-
Kein Planschema darf Schleifen enthalten.
-
Alle Pläne und Nutzungsgruppen, auf die in Plananweisungen verwiesen wird, müssen vorhanden sein.
-
Alle Pläne müssen über Plananweisungen verfügen, die sich entweder auf Pläne oder Nutzungsgruppen beziehen.
-
Alle Prozentsätze auf einer bestimmten Ebene dürfen nicht größer als 100 für die Hervorhebungsmethode für die Ressourcenzuweisung sein.
-
Es kann kein Plan gelöscht werden, der derzeit von einer aktiven Instanz als oberster Plan verwendet wird.
-
Es können nicht mehr als 28 Planrichtlinien aus einem bestimmten Plan stammen (d.h. kein Plan kann mehr als 28 Kinder haben).
-
In einem aktiven Plangeschema dürfen nicht mehr als 28 Nutzungsgruppen vorhanden sein.
-
Pläne und Nutzungsgruppen verwenden denselben Namespace. Daher darf kein Plan denselben Namen wie jede Nutzungsgruppe haben.
-
In einem aktiven Planschema muss irgendwo eine Plananweisung für
OTHER_GROUPSvorhanden sein. Dadurch wird sichergestellt, dass einer Session, die nicht vom aktuell aktiven Plan abgedeckt wird, Ressourcen zugewiesen werden, wie in der DirektiveOTHER_GROUPSangegeben.
Wenn eine der oben genannten Regeln verletzt wird, wenn sie von den Prozeduren VALIDATE oder SUBMIT geprüft wird, wird eine informative Fehlermeldung zurückgegeben. Sie können dann Änderungen vornehmen, um ein oder mehrere Probleme zu beheben und die Validierungs- oder Einreichungsverfahren erneut auszustellen.
Prozedur CREATE_PLAN
Im Folgenden werden Einträge erstellt, die Ressourcenpläne definieren.
Syntax
CS_RESOURCE_MANAGER.CREATE_PLAN (
plan IN VARCHAR2,
comment IN VARCHAR2 DEFAULT NULL);Parameter
| Parameter | Beschreibung |
|---|---|
plan |
Name des Ressourcenplans |
comment |
Benutzerkommentar |
Beispiel
BEGIN
CS_RESOURCE_MANAGER.CREATE_PLAN(
plan => 'OLTP_LH_PLAN',
comment => 'Split resources between OLTP and Lakehouse workload types');
END;
/Prozedur CREATE_PLAN_DIRECTIVE
Mit diesem Verfahren werden Ressourcenplananweisungen erstellt.
Syntax
CS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE (
plan IN VARCHAR2,
consumer_group IN VARCHAR2,
comment IN VARCHAR2 DEFAULT NULL,
shares IN NUMBER DEFAULT NULL,
utilization_limit IN NUMBER DEFAULT NULL,
switch_action IN VARCHAR2 DEFAULT NULL,
cpu_time_limit IN NUMBER DEFAULT NULL,
io_megabytes_limit IN NUMBER DEFAULT NULL,
io_reqs_limit IN NUMBER DEFAULT NULL,
io_logical_limit IN NUMBER DEFAULT NULL,
elapsed_time_limit IN NUMBER DEFAULT NULL,
max_idle_time IN NUMBER DEFAULT NULL,
max_idle_blocker_time IN NUMBER DEFAULT NULL,
active_session_limit IN NUMBER DEFAULT NULL,
active_session_timeout IN NUMBER DEFAULT NULL,
parallel_degree_limit IN NUMBER DEFAULT NULL,
concurrency_limit IN NUMBER DEFAULT NULL,
session_pga_limit IN NUMBER DEFAULT NULL,
parallel_queue_timeout IN NUMBER DEFAULT NULL,
parallel_queue_timeout_action IN NUMBER DEFAULT NULL);Parameter
| Parameter | Beschreibung |
|---|---|
plan |
Name des Ressourcenplans |
consumer_group |
Name der Nutzungsgruppe |
comment |
Kommentar für die Plananweisung |
shares |
Anteil der Ressourcenzuweisung für die Nutzungsgruppe. Shares bestimmen, wie viel CPU- und I/O-Ressource eine Nutzungsgruppe relativ zu anderen Nutzungsgruppen erhält. Beispiel: Eine Nutzungsgruppe mit einem Anteil von 2 erhält das Doppelte der CPU- und I/O-Ressourcen als eine Nutzungsgruppe mit einem Anteil von 1. Wenn Sie keine Shares für eine Nutzungsgruppe in Ihrem Plan angeben, wird der Share dieser Nutzungsgruppe auf 1 gesetzt. |
utilization_limit |
Ressourcenlimits, die bestimmen, wie viele CPU- und I/O-Ressourcen eine Nutzungsgruppe maximal abrufen kann. |
switch_action |
Maßnahmen, die zu ergreifen sind, wenn die in den Richtlinien festgelegten Grenzen erreicht werden. Gültige Werte sind cancel_sql, kill_session oder ein Nutzungsgruppenname, zu dem gewechselt werden soll. |
cpu_time_limit |
CPU-Zeit (in Sekunden), die eine Session ausführen kann, bevor eine Aktion ausgeführt wird. Der Standardwert ist NULL, d.h. unbegrenzt. |
io_megabytes_limit |
Menge an I/O (in MB), die eine Session ausgeben kann, bevor eine Aktion ausgeführt wird. Der Standardwert ist NULL, d.h. unbegrenzt. |
io_reqs_limit |
Anzahl der I/O-Anforderungen, die eine Session ausgeben kann, bevor eine Aktion ausgeführt wird. Der Standardwert ist NULL, d.h. unbegrenzt. |
io_logical_limit |
Anzahl der logischen I/Os, die die mit switch_action angegebene Aktion auslösen. |
elapsed_time_limit |
Verstrichene Zeit (in Sekunden), die die von switch_action angegebene Aktion auslöst. |
max_idle_time |
Anzahl der Sekunden, die eine Session inaktiv sein kann, bevor die Session beendet wird. Der Standardwert ist NULL, d.h. unbegrenzt. |
max_idle_blocker_time |
Maximale Zeit in Sekunden, die eine Session inaktiv sein kann, bevor die Session beendet wird, wenn die Session eine Sperre oder Ressource hält, die von anderen Sessions benötigt wird. |
active_session_limit |
Maximale Anzahl von Sessions, die gleichzeitig einen aktiven Aufruf haben können. |
active_session_timeout |
Angegebene Zeit (in Sekunden), nach der ein Aufruf in der inaktiven Sessionqueue (wartet auf Ausführung) wegen Timeout abgebrochen wird. Der Standardwert ist NULL, d.h. unbegrenzt. |
parallel_degree_limit |
Gibt ein Limit für den Parallelitätsgrad für jeden Vorgang an. Der Standardwert ist NULL, d.h. unbegrenzt. Verwenden Sie den Wert 1, wenn ein Arbeitsvorgang seriell sein soll. |
concurrency_limit |
Legt die Nebenläufigkeitsebene und damit den Parallelitätsgrad (DOP) fest. Es kann die DOP 1 machen. |
session_pga_limit |
Maximale Größe der nicht optimierbaren PGA (in MB), die eine Session in dieser Nutzungsgruppe zuweisen kann, bevor sie beendet wird. SQL-Vorgänge, die optimierbare PGA zuweisen (Operationen, die temporären Speicherplatz verwenden können), werden nicht von diesem Grenzwert gesteuert. |
parallel_queue_timeout |
Gibt die Zeit (in Sekunden) an, die eine parallele Anweisung in der Queue der parallelen Anweisung der Nutzungsgruppe verbleiben kann, bevor sie entfernt und mit einem Fehler beendet wird (ORA- 07454). |
parallel_queue_timeout_action |
Gibt die Aktion an, die ausgeführt werden soll, wenn eine parallele Anweisung aus der Queue entfernt wird. Grund: Folgende Werte sind verfügbar:
|
Hinweise zur Verwendung
-
Sie können keine Plananweisungen für die vordefinierten Standardpläne mit der autonomen KI-Datenbank erstellen, d.h.
DWCS_PLANundOLTP_PLAN. -
Alle Parameter mit Ausnahme der Freigaben werden standardmäßig auf
NULLgesetzt. -
Ein Fehler wird ausgelöst, wenn
parallel_queue_timeoutangegeben ist, aberparallel_queue_timeout_actionnicht angegeben ist.
Beispiele
BEGIN
-- High-priority OLTP gets 8 CPU/IO shares and no parallelism
CS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
plan => 'OLTP_LH_PLAN',
consumer_group => 'OLTP_HIGH',
comment => 'OLTP high priority',
shares => 8,
parallel_degree_limit => 1
);
-- Lower-priority OLTP gets 4 CPU/IO shares and no parallelism
CS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
plan => 'OLTP_LH_PLAN',
consumer_group => 'OLTP_LOW',
comment => 'OLTP low priority',
shares => 2,
parallel_degree_limit => 1
);
-- Lakehouse / batch gets 4 shares and the degree of parallelism is capped to 4.
-- If a parallel SQL statement waits in the queue for more than 60 seconds, it will be canceled.
CS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
plan => 'OLTP_LH_PLAN',
consumer_group => 'LH_BATCH',
comment => 'Lakehouse/reporting workloads',
shares => 4,
parallel_degree_limit => 4, -- cap DOP within this group (adjust as needed)
parallel_queue_timeout => 60,
parallel_queue_timeout_action => 'CANCEL'
);
-- Catch-all for anything unmapped; sessions that are not mapped to a consumer group get 1 CPU/IO share and no parallelism
CS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
plan => 'OLTP_LH_PLAN',
consumer_group => 'OTHER_GROUPS',
comment => 'Catch-all for unmapped sessions',
shares => 1,
parallel_degree_limit => 1
);
END;
/Prozedur DELETE_CONSUMER_GROUP
Mit dieser Prozedur werden Ressourcennutzungsgruppen gelöscht.
Syntax
CS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP (
consumer_group IN VARCHAR2);Parameter
| Parameter | Beschreibung |
|---|---|
consumer_group |
Name der zu löschenden Nutzungsgruppe. Hinweis: Vordefinierte Nutzungsgruppen mit autonomer KI-Datenbank, d.h. TPURGENT, TP, HIGH, MEDIUM und LOW, können nicht gelöscht werden. |
Beispiele
CS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP (
consumer_group ==> <consumer_group_name>);Prozedur DELETE_PLAN
Bei diesem Verfahren werden der angegebene Plan sowie alle Plananweisungen gelöscht, auf die er verweist.
Syntax
CS_RESOURCE_MANAGER.DELETE_PLAN (
plan IN VARCHAR2,
cascade IN BOOLEAN DEFAULT FALSE);Parameter
| Parameter | Beschreibung |
|---|---|
plan |
Name des zu löschenden Ressourcenplans. Hinweis: Vordefinierte Pläne mit Autonomous AI Database ( DWCS_PLAN und OLTP_PLAN) können nicht gelöscht werden. |
cascade |
Kennzeichen, das angibt, ob der angegebene Plan und alle untergeordneten Elemente (Plananweisungen, Unterpläne, Nutzungsgruppen) gelöscht werden sollen. Obligatorische Objekte und Anweisungen werden nicht gelöscht. Der Standardwert ist false. Wenn bei "cascade ON" DELETE_PLAN auf einen Fehler stößt, wird der Vorgang zurückgesetzt, und nichts wird gelöscht. |
Beispiel
CS_RESOURCE_MANAGER.DELETE_PLAN (
plan ==> <plan_name>);Prozedur DELETE_PLAN_DIRECTIVE
Mit diesem Verfahren werden Ressourcenplananweisungen gelöscht.
Syntax
CS_RESOURCE_MANAGER.DELETE_PLAN_DIRECTIVE (
plan IN VARCHAR2,
consumer_group IN VARCHAR2);Parameter
| Parameter | Beschreibung |
|---|---|
plan |
Name des Ressourcenplans. Hinweis: Sie können keine Plananweisungen für die vordefinierten Standardpläne löschen, die mit der autonomen KI-Datenbank ( DWCS_PLAN und OLTP_PLAN) geliefert werden. |
consumer_group |
Name der Nutzungsgruppe. |
Beispiel
CS_RESOURCE_MANAGER.DELETE_PLAN_DIRECTIVE (
plan => <plan_name>,
consumer_group => <consumer_group_name>);Funktion LIST_CURRENT_RULES
Diese Funktion gibt die aktuellen Einstellungen für den Standardplan zurück.
Hinweis
Hinweis: LIST_CURRENT_RULES kann nicht zum Anzeigen der Einstellungen für benutzerdefinierte Pläne verwendet werden. Wenn Sie benutzerdefinierte Pläne verwenden, können Sie Ihre Einstellungen mit den DBRM-Ansichten anzeigen.
Syntax
CS_RESOURCE_MANAGER.LIST_CURRENT_RULES
RETURN TABLE;Beispiel
SELECT * FROM CS_RESOURCE_MANAGER.LIST_CURRENT_RULES();
CONSUMER_GROUP ELAPSED_TIME_LIMIT IO_MEGABYTES_LIMIT SHARES CONCURRENCY_LIMIT DEGREE_OF_PARALLELISM
-------------- ------------------ ------------------ ------ ----------------- ---------------------
HIGH 4 3 3
MEDIUM 2 2 9
LOW 1 900 1Funktion LIST_DEFAULT_RULES
Diese Funktion gibt die Standardwerte für alle Nutzungsgruppen zurück.
Syntax
CS_RESOURCE_MANAGER.LIST_DEFAULT_RULES
RETURN TABLE;Hinweis zur Verwendung
- Der Policy-Wert für den parallelen Grad ist standardmäßig
MANUALfür die NutzungsgruppeTPURGENT. Die FunktionCS_RESOURCE_MANAGER.LIST_DEFAULT_RULESzeigt keinen Wert für den Standardwert für dieDEGREE_OF_PARALLELISMfür die NutzungsgruppeTPURGENTan.
Beispiel
SELECT * FROM CS_RESOURCE_MANAGER.LIST_DEFAULT_RULES();
CONSUMER_GROUP ELAPSED_TIME_LIMIT IO_MEGABYTES_LIMIT SHARES CONCURRENCY_LIMIT DEGREE_OF_PARALLELISM
-------------- ------------------ ------------------ ------ ----------------- ---------------------
HIGH 0 0 4 3 1
MEDIUM 0 0 2 1 1
LOW 0 0 1 300 1
TP 0 0 8 300 1
TPURGENT 0 0 12 300Prozedur REVERT_TO_DEFAULT_VALUES
Bei diesem Verfahren werden die Default-Resource Manager-Planeigenschaften auf Standardwerte zurückgesetzt.
Hinweis
Hinweis: Sie können diese Prozedur nicht mit benutzerdefinierten Plänen verwenden und sie kann nur dazu verwendet werden, die Änderungen an den Standard-Resource Manager-Plänen, die mit Autonomous AI Database (DWCS_PLAN und OLTP_PLAN) geliefert werden, rückgängig zu machen.
Syntax
CS_RESOURCE_MANAGER.REVERT_TO_DEFAULT_VALUES(
consumer_group IN VARCHAR2,
shares IN BOOLEAN DEFAULT FALSE,
concurrency_limit IN BOOLEAN DEFAULT FALSE);Parameter
| Parameter | Beschreibung |
|---|---|
consumer_group |
Gibt die wiederherzustellende Nutzungsgruppe an. Gültige Werte sind: |
shares |
Wenn der Wert TRUE lautet, setzen Sie Shares für den Service auf den Standardwert zurück. |
concurrency_limit |
Wenn der Wert TRUE lautet, setzen Sie concurrency_limit für den Service auf den Standardwert zurück. Wenn Sie die concurrency_limit zurücksetzen, werden sowohl die Werte concurrency_limit als auch degree_of_parallelism auf ihre Standardwerte gesetzt. |
Beispiele
BEGIN
CS_RESOURCE_MANAGER.REVERT_TO_DEFAULT_VALUES(
consumer_group => 'MEDIUM',
concurrency_limit => TRUE);
END;
/
BEGIN
CS_RESOURCE_MANAGER.REVERT_TO_DEFAULT_VALUES(
consumer_group => 'HIGH',
shares => TRUE);
END;
/Prozedur SET_CONSUMER_GROUP_MAPPING
Diese Prozedur fügt Einträge hinzu, löscht oder ändert Einträge, die Sessions Nutzungsgruppen zuordnen, basierend auf den Anmelde- und Laufzeitattributen der Session.
Syntax
CS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
attribute IN VARCHAR2,
value IN VARCHAR2,
consumer_group IN VARCHAR2 DEFAULT NULL);Parameter
| Parameter | Beschreibung |
|---|---|
attribute |
Zuordnendes oder zu änderndes Attribut. Es kann eine der aufgeführten Konstanten sein. |
value |
Abgleichsattributwert. Dazu gehören sowohl absolute als auch reguläre Ausdrücke. |
consumer_group |
Name der zugeordneten Nutzungsgruppe oder NULL, um eine Zuordnung zu löschen. |
Hinweise zur Verwendung
-
Wenn für das angegebene Attribut und den angegebenen Wert keine Zuordnung vorhanden ist, wird eine Zuordnung zur angegebenen Nutzungsgruppe erstellt. Wenn für das angegebene Attribut und den angegebenen Wert bereits eine Zuordnung vorhanden ist, wird die zugeordnete Nutzungsgruppe in die angegebene aktualisiert. Wenn das consumer_group-Argument
NULList, wird jede Zuordnung aus dem angegebenen Attribut und Wert gelöscht. -
Das Unterprogramm unterstützt einfache reguläre Ausdrücke für den Wertparameter. Es implementiert die gleiche Semantik wie der SQL-Operator "LIKE". Insbesondere wird '%' als Platzhalter mit mehreren Zeichen und '_' als Platzhalter mit einem einzelnen Zeichen verwendet. Das Zeichen '\ kann verwendet werden, um die Platzhalter zu entkommen. Beachten Sie, dass Platzhalter nur verwendet werden können, wenn das Attribut eines der folgenden Attribute ist:
-
CLIENT_OS_USER -
CLIENT_PROGRAM -
CLIENT_MACHINE -
MODULE_NAME -
MODULE_NAME_ACTION -
SERVICE_MODULE -
SERVICE_MODULE_ACTION
-
-
Vergleiche der Nutzungsgruppenzuordnung für
CS_RESOURCE_MANAGER.CLIENT_PROGRAMwerden durchgeführt, indem das@-Zeichen und die folgenden Zeichen ausV$SESSION.PROGRAMentfernt werden, bevor es mit dem angegebenenCLIENT_PROGRAM-Wert verglichen wird. -
Mit Attributen wie Benutzername oder Anwendungsname können Sie bestimmen, wie Sessions in einer Nutzungsgruppe platziert werden, wie im obigen Beispiel gezeigt.
Beispiele
BEGIN
-- Map schema APP_USER to OLTP_HIGH
CS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
attribute => 'ORACLE_USER',
value => 'APP_USER',
consumer_group => 'OLTP_HIGH');
CS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
attribute => 'ORACLE_USER',
value => 'LH_USER',
consumer_group => 'LH_BATCH');
END;
/Prozedur SET_CONSUMER_GROUP_MAPPING_PRI
Zur Zuordnung der Session zu einer Nutzungsgruppe können mehrere Attribute einer Session verwendet werden. In diesem Verfahren werden die Attributzuordnungen priorisiert.
Syntax
CS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING_PRI(
explicit IN NUMBER,
oracle_user IN NUMBER,
service_name IN NUMBER,
client_program IN NUMBER,
module_name IN NUMBER,
module_name_action IN NUMBER,
client_id IN NUMBER DEFAULT 11);Parameter
| Parameter | Beschreibung |
|---|---|
explicit |
Priorität der expliziten Zuordnung. |
oracle_user |
Priorität der Zuordnung von Oracle-Benutzernamen. |
service_name |
Priorität der Zuordnung des Client Service-Namens. |
client_program |
Priorität der Clientprogrammzuordnung. |
module_name |
Priorität der Namenszuordnung des Anwendungsmoduls. |
module_name_action |
Priorität des Anwendungsmodulsnamens und der Aktionszuordnung. |
client_id |
Client-ID. |
Hinweise zur Verwendung
- Bei dieser Prozedur müssen Sie das Pseudo-Attribut explizit als Argument aufnehmen. Sie muss auf
- Dies bedeutet, dass explizite Switches für Nutzungsgruppen die höchste Priorität haben. Das Wechseln der Nutzungsgruppe mit
DBMS_SESSION.SWITCH_CURRENT_CONSUMER_GROUPhat Vorrang vor den Nutzungsgruppenzuordnungen.
- Dies bedeutet, dass explizite Switches für Nutzungsgruppen die höchste Priorität haben. Das Wechseln der Nutzungsgruppe mit
-
Jeder Prioritätswert muss eine eindeutige Ganzzahl von 1 bis 11 sein. Zusammen legen sie eine Reihenfolge fest, in der 1 die höchste Priorität und 11 die niedrigste Priorität hat.
- Mit Attributen wie Benutzername oder Anwendungsname können Sie bestimmen, wie Sessions in einer Nutzungsgruppe platziert werden. Ein Beispiel finden Sie unter Schritt 4: Nutzungsgruppenzuordnungen erstellen.
Prozedur SUBMIT_PENDING_AREA
Im Folgenden werden ausstehende Änderungen für den Ressourcenmanager weitergeleitet. Sie löscht den Bereich "Ausstehend", nachdem die Änderungen validiert und festgeschrieben wurden (falls gültig).
Hinweis
Hinweis: Ein Aufruf von SUBMIT_PENDING_AREA ist möglicherweise nicht erfolgreich, selbst wenn VALIDATE_PENDING_AREA erfolgreich ist. Dies kann auftreten, wenn ein Plan, der gelöscht wird, nach dem Aufruf von VALIDATE_PENDING_AREA von einer Instanz geladen wird, jedoch vor dem Aufruf von SUBMIT_PENDING_AREA.
Syntax
CS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA;Prozedur UPDATE_PLAN_DIRECTIVE
Mit dieser Prozedur können Sie vordefinierte Standardpläne aktualisieren, die mit der autonomen KI-Datenbank (DWCS_PLAN und OLTP_PLAN) für eine angegebene Nutzungsgruppe geliefert werden.
Hinweis
Hinweis: Mit diesem Verfahren können Sie die Einstellungen für benutzerdefinierte Pläne nicht aktualisieren. Um benutzerdefinierte Planattribute zu aktualisieren, verwenden Sie die Prozedur UPDATE_PLAN_DIRECTIVE_ADV.
Syntax
CS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(
consumer_group IN VARCHAR2,
io_megabytes_limit IN NUMBER DEFAULT NULL,
elapsed_time_limit IN NUMBER DEFAULT NULL,
shares IN NUMBER DEFAULT NULL,
concurrency_limit IN NUMBER DEFAULT NULL);Parameter
| Parameter | Beschreibung |
|---|---|
consumer_group |
Gibt die zu aktualisierende Nutzungsgruppe an. Gültige Werte sind: |
io_megabytes_limit |
Gibt die maximale Anzahl Megabyte an I/O an, die ein SQL-Vorgang ausgeben kann. Geben Sie einen |
elapsed_time_limit |
Gibt die maximale Zeit in Sekunden an, die ein SQL-Vorgang ausgeführt werden kann. Geben Sie einen |
shares |
Gibt den Share-Wert an. Eine höhere Anzahl von Shares im Vergleich zu anderen Nutzungsgruppen erhöht die CPU- und I/O-Priorität der Nutzungsgruppe. |
concurrency_limit |
Gibt die maximale Anzahl gleichzeitiger SQL-Anweisungen an, die ausgeführt werden können. Dieser Parameter ist nur mit der Nutzungsgruppe |
Hinweise zur Verwendung
-
Wenn eine SQL-Anweisung im angegebenen Service mehr als den angegebenen Laufzeitgrenzwert (
elapsed_time_limit) oder mehr I/O als den angegebenen Betrag (io_megabytes_limit) ausführt, wird die SQL-Anweisung beendet. -
Wenn der Parameter
concurrency_limitangegeben wird, ist der einzige gültige Wert fürconsumer_groupMEDIUM.
Beispiele
BEGIN
CS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(
consumer_group => 'HIGH',
shares => 8);
CS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(
consumer_group => 'MEDIUM',
shares => 2);
CS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(
consumer_group => 'LOW',
shares => 1);
END;
/
BEGIN
CS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(
consumer_group => 'HIGH',
io_megabytes_limit => null,
elapsed_time_limit => null);
END;
/
BEGIN
CS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(
consumer_group => 'MEDIUM',
concurrency_limit => 2);
END;
/Prozedur UPDATE_PLAN_DIRECTIVE_ADV
Unter diesem Thema wird beschrieben, wie Sie einen benutzerdefinierten Resource Manager-Plan für eine bestimmte Nutzungsgruppe aktualisieren.
Hinweis
Hinweis: Sie können dieses Verfahren nicht verwenden, um vordefinierte Standardpläne zu aktualisieren, die mit Autonomous AI Database (DWCS_PLAN und OLTP_PLAN) geliefert werden. Um einen vordefinierten Standardressourcenplan zu aktualisieren, verwenden Sie die Prozedur UPDATE_PLAN_DIRECTIVE.
Syntax
CS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE_ADV (
plan IN VARCHAR2 DEFAULT NULL,
consumer_group IN VARCHAR2,
comment IN VARCHAR2 DEFAULT NULL,
shares IN NUMBER DEFAULT NULL,
utilization_limit IN NUMBER DEFAULT NULL,
switch_action IN VARCHAR2 DEFAULT NULL,
cpu_time_limit IN NUMBER DEFAULT NULL,
io_megabytes_limit IN NUMBER DEFAULT NULL,
io_reqs_limit IN NUMBER DEFAULT NULL,
io_logical_limit IN NUMBER DEFAULT NULL,
elapsed_time_limit IN NUMBER DEFAULT NULL,
max_idle_time IN NUMBER DEFAULT NULL,
max_idle_blocker_time IN NUMBER DEFAULT NULL,
active_session_limit IN NUMBER DEFAULT NULL,
active_session_timeout IN NUMBER DEFAULT NULL,
parallel_degree_limit IN NUMBER DEFAULT NULL,
concurrency_limit IN NUMBER DEFAULT NULL,
session_pga_limit IN NUMBER DEFAULT NULL,
parallel_queue_timeout IN NUMBER DEFAULT NULL,
parallel_queue_timeout_action IN NUMBER DEFAULT NULL);Parameter
| Parameter | Beschreibung |
|---|---|
plan |
Name des Ressourcenplans. |
consumer_group |
Name der Nutzungsgruppe. |
comment |
Kommentar für die Planrichtlinie. |
shares |
Anteil der Ressourcenzuweisung für die Nutzungsgruppe. Shares bestimmen, wie viel CPU- und I/O-Ressource eine Nutzungsgruppe relativ zu anderen Nutzungsgruppen erhält. Beispiel: Eine Nutzungsgruppe mit einem Anteil von 2 erhält das Doppelte der CPU- und I/O-Ressourcen als eine Nutzungsgruppe mit einem Anteil von 1. Wenn Sie keine Shares für eine Nutzungsgruppe in Ihrem Plan angeben, wird der Share dieser Nutzungsgruppe auf 1 gesetzt. |
utilization_limit |
Ressourcenlimits, die bestimmen, wie viele CPU- und I/O-Ressourcen eine Nutzungsgruppe maximal abrufen kann. |
switch_action |
Maßnahmen, die zu ergreifen sind, wenn die in den Richtlinien festgelegten Grenzen erreicht werden. Gültige Werte sind cancel_sql, kill_session oder ein Nutzungsgruppenname, zu dem gewechselt werden soll. |
cpu_time_limit |
CPU-Zeit (in Sekunden), die eine Session ausführen kann, bevor eine Aktion ausgeführt wird. Der Standardwert ist NULL, d.h. unbegrenzt. |
io_megabytes_limit |
Menge an I/O (in MB), die eine Session ausgeben kann, bevor eine Aktion ausgeführt wird. Der Standardwert ist NULL, d.h. unbegrenzt. |
io_reqs_limit |
Anzahl der I/O-Anforderungen, die eine Session ausgeben kann, bevor eine Aktion ausgeführt wird. Der Standardwert ist NULL, d.h. unbegrenzt. |
io_logical_limit |
Anzahl der logischen I/Os, die die mit switch_action angegebene Aktion auslösen. |
elapsed_time_limit |
Verstrichene Zeit (in Sekunden), die die von switch_action angegebene Aktion auslöst. |
max_idle_time |
Anzahl der Sekunden, die eine Session inaktiv sein kann, bevor die Session beendet wird. Der Standardwert ist NULL, d.h. unbegrenzt. |
max_idle_blocker_time |
Maximale Zeit in Sekunden, die eine Session inaktiv sein kann, bevor die Session beendet wird, wenn die Session eine Sperre oder Ressource hält, die von anderen Sessions benötigt wird. |
active_session_limit |
Maximale Anzahl von Sessions, die gleichzeitig einen aktiven Aufruf haben können. |
active_session_timeout |
Angegebene Zeit (in Sekunden), nach der ein Aufruf in der inaktiven Sessionqueue (wartet auf Ausführung) wegen Timeout abgebrochen wird. Der Standardwert ist NULL, d.h. unbegrenzt. |
parallel_degree_limit |
Gibt ein Limit für den Parallelitätsgrad für jeden Vorgang an. Der Standardwert ist NULL, d.h. unbegrenzt. Verwenden Sie den Wert 1, wenn ein Arbeitsvorgang seriell sein soll. |
concurrency_limit |
Legt die Nebenläufigkeitsebene und damit den Parallelitätsgrad (DOP) fest. Es kann die DOP 1 machen. |
session_pga_limit |
Maximale Größe der nicht optimierbaren PGA (in MB), die eine Session in dieser Nutzungsgruppe zuweisen kann, bevor sie beendet wird. SQL-Vorgänge, die optimierbare PGA zuweisen (Operationen, die temporären Speicherplatz verwenden können), werden nicht von diesem Grenzwert gesteuert. |
parallel_queue_timeout |
Gibt die Zeit (in Sekunden) an, die eine parallele Anweisung in der Queue der parallelen Anweisung der Nutzungsgruppe verbleiben kann, bevor sie entfernt und mit einem Fehler beendet wird (ORA- 07454). |
parallel_queue_timeout_action |
Gibt die Aktion an, die ausgeführt werden soll, wenn eine parallele Anweisung aus der Queue entfernt wird. Grund: Folgende Werte sind verfügbar:
|
Hinweise zur Verwendung
-
Alle Parameter mit Ausnahme der Freigaben werden standardmäßig auf
NULLgesetzt. -
Ein Fehler wird ausgelöst, wenn
parallel_queue_timeout_actionangegeben ist, aberparallel_queue_timeoutnicht angegeben ist.
Prozedur VALIDATE_PENDING_AREA
Dieses Verfahren validiert ausstehende Änderungen für den Ressourcenmanager.
Syntax
CS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA;