CREATE SCHEDULER RULE
Mit dem CREATE SCHEDULER RULE-Befehl können Sie eine neue Schedulerregel definieren.
Syntax
CREATE [OR REPLACE] SCHEDULER RULE <rule_name> [INCLUDING ADMIN] AS <rule>
Dabei steht '
<rule>
für:[IF <condition> [<condition> ... ] THEN] {LIMIT <max_plans> [PER USER] | <action>}
Dabei steht '
<condition>
für:RESOURCEGROUP {IS [NOT] <rsg_name> | [NOT] IN (<rsg_name>, ...)} |
PRIORITY {IS [NOT] <priority> | [NOT] IN (<priority>, ...)} |
TYPE {IS [NOT] <plan_type> | [NOT] IN (<plan_type>, ...)} |
DATABASE {IS [NOT] <db_name> | [NOT] IN (<db_name>, ...)} |
USER {IS [NOT] <user_name> | [NOT] IN (<user_name>, ...)} |
TABLE {IS [NOT] <table> | [NOT] IN (<table>, ...)} |
TAG {IS [NOT] <tag_value> | [NOT] IN (<tag_value>)} |
CLIENT_USER_ID {IS [NOT] '<string>' | [NOT] IN (<string>, ...)} |
CLIENT_APPLICATION_NAME {IS [NOT] '<string>' | [NOT] IN (<string>, ...)} |
CLIENT_WORKSTATION_NAME {IS [NOT] '<string>' | [NOT] IN (<string>, ...)} |
CLIENT_ACCOUNTING_STRING {IS [NOT] '<string>' | [NOT] IN (<string>, ...)} |
ESTIMATE { < | <= | >= | > } <seconds>
Dabei steht '
action
für:LIMIT <max_plans> [PER USER]
SET [NOT] SHORT |
SET ESTIMATE <seconds> |
ADD TAG <tag_value> |
SET PRIORITY {LOW | NORMAL | HIGH | CRITICAL} |
{INCREASE | DECREASE} PRIORITY |
EXECUTE AS RESOURCEGROUP <rsg_name> |
ABORT '<message_for_client>'
Eingaben
Eingabe | Beschreibung |
---|---|
OR REPLACE | Wenn eine Regel mit dem angegebenen Namen nicht bereits vorhanden
ist, wird unabhängig davon, ob die OR REPLACE-Phrase angegeben ist, eine neue Regel
erstellt. Wenn jedoch bereits eine Regel mit dem angegebenen Namen vorhanden ist, gilt im Zusammenhang mit der
OR REPLACE-Phrase Folgendes:
|
<Regelname> | Der Name der zu erstellenden Regel. Dieser Name muss unter den globalen Objekten eindeutig sein, das heißt, keine andere Schedulerregel, keine Datenbank, keine Gruppe und kein Benutzer darf denselben Namen haben. |
INCLUDING ADMIN | Die Regel soll auch auf Administratorpläne angewendet werden. |
<Option> | Eine der in Tabelle 2 beschriebenen Optionen. |
<value> | Einer der in Tabelle 2 beschriebenen Werte. |
ESTIMATE | Eine Grenze für die geschätzten Kosten des Plans (in Sekunden). Wenn eine Schedulerregel sowohl eine Unter- als auch eine Obergrenze angibt, muss die Untergrenze kleiner als die Obergrenze sein. |
<Sekunden> | Eine Anzahl Sekunden. |
LIMIT | Legen Sie die maximale Anzahl Pläne fest, die gleichzeitig
ausgeführt werden können, wenn sie die von der Schedulerregel angegebenen Bedingungen
erfüllen. Beispiel:
|
PER USER | Das angegebene Limit wird auf jeden Benutzer angewendet. Die
folgende Regel erlaubt beispielsweise, dass jeder Benutzer maximal zwei Pläne ausführt: Dies entspricht dem Erstellen der folgenden Regel für jeden Benutzer:
|
SET SHORT | Legen Sie das SQB-Flag (SQB: Short Query Bias - Priorisierung kurzer Abfragen) des Plans fest, d. h. der Plan wird als zu einer kurzen Abfrage gehörig markiert. Dies geschieht unabhängig von der Schätzung des Jobaufwands und vom Schwellenwert, der über das Attribut host.schedSQBNominalSecs festgelegt ist. |
SET ESTIMATE | Legen Sie den geschätzten Aufwand des Plans fest (in Sekunden). Dadurch wird die vom Planer berechnete Schätzung überschrieben. Dies hat jedoch keine Auswirkung auf die Einstellung des SQB-Flags des Plans, selbst wenn der Wert unter den durch das host.schedSQBNominalSecs-Attribut festgelegten Schwellenwert fällt. |
ADD TAG | Fügen Sie dem Plan den angegebenen Tag hinzu. |
SET PRIORITY | Setzen Sie die Priorität des Plans auf den angegebenen Wert. Eine mithilfe des SET SYSTEM DEFAULT-Befehls für den Benutzer oder die Gruppe des Plans festgelegte maximale Priorität wird ignoriert. |
INCREASE oder DECREASE PRIORITY | Heben Sie die Priorität eines Plans um eine Stufe an oder setzen Sie sie um eine Stufe herab. Eine mithilfe des SET SYSTEM DEFAULT-Befehls für den Benutzer oder die Gruppe des Plans festgelegte maximale Priorität wird ignoriert. Ein Versuch, die Priorität LOW herabzusetzen oder die Priorität CRITICAL anzuheben, wird ignoriert. |
EXECUTE AS RESOURCEGROUP | Führen Sie den Plan aus, als ob er zur angegebenen Ressourcengruppe gehören würde. |
ABORT | Plan abbrechen. Dies bietet die Möglichkeit, Abfragen, die bestimmte Tabellen, Datenbanken oder Benutzer einbeziehen, temporär nicht zuzulassen, beispielsweise während der Wartung. Die angegebene Nachricht wird an den Benutzer übermittelt, der die Abfrage, die dem abgebrochenen Plan zugeordnet ist, ausgegeben hat. |
Option | Wert |
---|---|
RESOURCEGROUP | Die Ressourcengruppe des Plans. Üblicherweise handelt es sich um die Ressourcengruppe des Benutzers, der die entsprechende Abfrage übergeben hat; sie kann jedoch durch eine modifizierende Schedulerregel geändert werden. Die angegebene Ressourcengruppe muss bereits vorhanden sein. |
PRIORITÄT | Die Priorität des Plans:
|
TYP | Der Plantyp:
|
DATABASE | Die Datenbank, auf die vom Plan zugegriffen werden soll. Dies ist die Datenbank, mit der die Sitzung verbunden wird. Die angegebene Datenbank muss bereits vorhanden sein. |
BENUTZER | Der Benutzer, der den Job übergeben hat, der dem Plan entspricht. Der angegebene Benutzer muss bereits vorhanden sein. Der angegebene Benutzer kann nicht der Benutzer mit Administratorberechtigung sein. Wenn zu Administratorjobs gehörige Pläne eingeschlossen werden sollen, müssen Sie die Option INCLUDING ADMIN angeben. |
TABELLE | Eine Benutzertabelle, auf die vom Plan zugegriffen wird. Sie können keine Ansicht oder RST (Row-secure Table) angeben. Die angegebene Tabelle muss bereits vorhanden sein. Wenn der Datenbankname oder Schemaname benötigt wird, um die Tabelle eindeutig anzugeben, muss er als Teil des Tabellennamens angegeben werden. |
TAG | Eine Zeichenfolge, die dem Plan zugeordnet werden soll und mit der auf den Plan verwiesen werden kann. Es kann höchstens eine TAG-Bedingung für eine Schedulerregel angegeben werden. |
CLIENT_USER_ID1 | Die Benutzer-ID, unter der die Anwendung ausgeführt wird, die die entsprechende Abfrage übergeben hat. |
CLIENT_APPLICATION_NAME1 | Der Name der Anwendung, die die entsprechende Abfrage übergeben hat. |
CLIENT_WORKSTATION_NAME1 | Der Hostname der Workstation, auf der die Anwendung ausgeführt wird, die die entsprechende Abfrage übergeben hat. |
CLIENT_ACCOUNTING_STRING1 | Der Wert der Abrechnungszeichenfolge. Dieser Wert wird für die Sitzung angegeben. |
|
Ausgaben
Ausgabe | Beschreibung |
---|---|
CREATE SCHEDULER RULE | Das System gibt diese Nachricht zurück, wenn der Befehl erfolgreich beendet wurde. |
ERROR | Wenn ein Versuch, eine Schedulerregel zu erstellen, fehlschlägt, gibt das System
eine Fehlernachricht zurück, die die Fehlerursache angibt, z. B. ERROR: CREATE SCHEDULER RULE: object RULE1 already exists as a SCHEDULER RULE. |
Berechtigungen
Sie müssen der Benutzer mit Administratorberechtigung sein oder Sie müssen über die Berechtigung für Schedulerregeln verfügen.
Verwendung
Es folgen Verwendungsbeispiele:
- Eine Schedulerregel mit dem Namen
cube_builder_1
erstellen, die jeweils nur die Ausführung eines einzigen Plans aus einer Sitzung mit demcube
-Tag zulässt:MYDB.MYSCH(USER)=> CREATE SCHEDULER RULE cube_builder_1 AS IF TAG IS cube THEN LIMIT 1;
- Eine Schedulerregel mit dem Namen
r23_eom1
erstellen, die die Priorität eines beliebigen Plans verringert, der seinen Ursprung in einer Sitzung mit demeom
-Tag hat:MYDB.MYSCH(USER)=> CREATE SCHEDULER RULE r23_eom1 AS IF TAG IS eom THEN DECREASE PRIORITY;
- Eine Schedulerregel mit dem Namen
r23_up1
erstellen, die die Priorität eines beliebigen Plans erhöht, für den eine Kostenschätzung zwischen 5 und 12 Sekunden vorliegt:MYDB.MYSCH(USER)=> CREATE SCHEDULER RULE r23_up1 AS IF ESTIMATE >= 5 ESTIMATE < 12 THEN INCREASE PRIORITY;
- Die folgenden Befehle erstellen Schedulerregeln, die sicherstellen, dass die Anzahl Pläne, die Datenbankstatistik
generieren oder aktualisieren, begrenzt ist, aber dass solche Pläne schnell ausgeführt
werden:
MYDB.MYSCH(USER)=> CREATE SCHEDULER RULE genstats_limit AS IF TYPE IS GENERATE STATISTICS THEN LIMIT 2; MYDB.MYSCH(USER)=> CREATE SCHEDULER RULE genstats_prio AS IF TYPE IS GENERATE STATISTICS THEN INCREASE PRIORITY;
- Die folgenden Befehle erstellen Schedulerregeln, die den Inhalt verschiedener Clientinformationsfelder verwenden, um
die Prioritäten der Pläne festzulegen, die zu Sitzungen gehören:
MYDB.MYSCH(USER)=> CREATE SCHEDULER RULE a1_default_prio_report AS IF CLIENT_APPLICATION_NAME IS Cognos THEN SET PRIORITY NORMAL; MYDB.MYSCH(USER)=> CREATE SCHEDULER RULE a2_top_prio_report AS IF CLIENT_ACCOUNTING_STRING IS CEO_report THEN SET PRIORITY CRITICAL; MYDB.MYSCH(USER)=> CREATE SCHEDULER RULE a3_high_prio_report AS IF CLIENT_ACCOUNTING_STRING IN ('weekly_report', 'daily_report') THEN SET PRIORITY HIGH; MYDB.MYSCH(USER)=> CREATE SCHEDULER RULE a4_low_prio_user AS IF CLIENT_USER_ID IS sikspak THEN SET PRIORITY LOW;