Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Ausführen allgemeiner Planungsaufgaben für Oracle DB-Instances
Einige SYS
-eigene Scheduler-Aufträge können den normalen Datenbankbetrieb stören. Oracle Support empfiehlt, diese Aufträge zu deaktivieren oder den Zeitplan zu ändern. Sie können das Amazon RDS-Paket rdsadmin.rdsadmin_dbms_scheduler
verwenden, um Aufgaben für SYS
-eigene Oracle-Scheduler-Jobs auszuführen.
Die rdsadmin.rdsadmin_dbms_scheduler
-Prozeduren werden für die folgenden Amazon-RDS-for-Oracle-DB-Engine-Versionen unterstützt:
-
Oracle Database 21c (21.0.0)
-
Oracle Database 19c
Geläufige Parameter für Oracle Scheduler-Prozeduren
Um Aufgaben mit dem Oracle Scheduler auszuführen, verwenden Sie Prozeduren im Amazon RDS-Paket rdsadmin.rdsadmin_dbms_scheduler
. Den Verfahren im Paket sind mehrere Parameter gemeinsam. Das Paket besitzt die folgenden geläufigen Parameter.
Parametername | Datentyp | Zulässige Werte | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|---|
|
varchar2 |
|
— |
Ja |
Der Name des zu ändernden Jobs. AnmerkungDerzeit können Sie nur |
|
varchar2 |
|
– |
Ja |
Zu änderndes Attribut. Um das Wiederholungsintervall für den Job zu ändern, geben Sie a Um den Zeitplannamen für den Job zu ändern, geben Sie a |
|
varchar2 |
Ein gültiges Zeitintervall oder ein gültiger Zeitplanname, abhängig vom verwendeten Attribut. |
– |
Ja |
Der neue Wert des Attributs. |
Ändern von DBMS SCHEDULER-Aufgaben
Sie können die Oracle-Prozedur dbms_scheduler.set_attribute
verwenden, um bestimmte Komponenten des Oracle Schedulers zu ändern. Weitere Informationen finden Sie unter DBMS_SCHEDULER
Stellen Sie bei der Arbeit mit Amazon RDS-DB-Instances den Schemanamen SYS
dem Objektnamen voran. Im folgenden Beispiel wird ein Ressourcenplan-Attribut für das Fensterobjekt "Monday" festgelegt.
BEGIN DBMS_SCHEDULER.SET_ATTRIBUTE( name => '
SYS.MONDAY_WINDOW
', attribute => 'RESOURCE_PLAN
', value => 'resource_plan_1
'); END; /
AutoTask Wartungsfenster ändern
Instances von Amazon RDS for Oracle werden mit Standardeinstellungen für Wartungsfenster erstellt. Automatisierte Wartungsaufgaben wie die Erfassung von Optimierungsstatistiken werden in diesen Zeitfenstern ausgeführt. Standardmäßig aktivieren die Wartungsfenster Oracle Database Resource Manager.
Sie können das DBMS_SCHEDULER
-Paket verwenden, um ein Wartungsfenster zu ändern. Möglicherweise müssen Sie die Einstellungen für Wartungsfenster aus den folgenden Gründen ändern:
-
Sie möchten, dass Wartungsaufträge zu einem anderen Zeitpunkt, mit anderen Einstellungen oder gar nicht ausgeführt werden. Sie können beispielsweise die Dauer des Wartungsfensters ändern oder die Wiederholungszeit und das Intervall ändern.
-
Sie möchten die Leistungsbeeinträchtigung durch die Aktivierung von Resource Manager während der Wartung vermeiden. Wenn beispielsweise der Standard-Wartungsplan angegeben ist und das Wartungsfenster beginnt, während die Datenbank ausgelastet ist, können Warteereignisse wie
resmgr:cpu quantum
ausgegeben werden. Dieses Warteereignis bezieht sich auf Database Resource Manager. Ihnen stehen folgende Optionen zur Verfügung:-
Stellen Sie sicher, dass Wartungsfenster außerhalb der Spitzenzeiten für Ihre DB-Instance aktiv sind.
-
Deaktivieren Sie den Standard-Wartungsplan, indem Sie für das Attribut
resource_plan
eine leere Zeichenfolge angeben. -
Legen Sie den Parameter
resource_manager_plan
in der Parametergruppe aufFORCE:
fest. Wenn Ihre Instance die Enterprise Edition verwendet, wird durch diese Einstellung verhindert, dass Database-Resource-Manager-Pläne aktiviert werden.
-
Ändern Sie die Einstellungen eines Wartungsfensters wie folgt:
-
Verbinden Sie Ihren Oracle-SQL-Client mit der Datenbank.
-
Fragen Sie die aktuelle Konfiguration für ein Scheduler-Wartungsfenster ab.
Im folgenden Beispiel wird die Konfiguration für
MONDAY_WINDOW
abgefragt.SELECT ENABLED, RESOURCE_PLAN, DURATION, REPEAT_INTERVAL FROM DBA_SCHEDULER_WINDOWS WHERE WINDOW_NAME='MONDAY_WINDOW';
Die folgende Ausgabe zeigt, dass für das Wartungsfenster die Standardwerte verwendet werden.
ENABLED RESOURCE_PLAN DURATION REPEAT_INTERVAL --------------- ------------------------------ ---------------- ------------------------------ TRUE DEFAULT_MAINTENANCE_PLAN +000 04:00:00 freq=daily;byday=MON;byhour=22 ;byminute=0; bysecond=0
-
Ändern Sie das Wartungsfenster mit dem
DBMS_SCHEDULER
-Paket.Im folgenden Beispiel wird der Ressourcenplan auf null festgelegt, damit Resource Manager nicht während des Wartungsfensters ausgeführt wird.
BEGIN -- disable the window to make changes DBMS_SCHEDULER.DISABLE(name=>'"SYS"."MONDAY_WINDOW"',force=>TRUE); -- specify the empty string to use no plan DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."MONDAY_WINDOW"', attribute=>'RESOURCE_PLAN', value=>''); -- re-enable the window DBMS_SCHEDULER.ENABLE(name=>'"SYS"."MONDAY_WINDOW"'); END; /
Im folgenden Beispiel wird die maximale Dauer des Wartungsfensters auf 2 Stunden eingestellt.
BEGIN DBMS_SCHEDULER.DISABLE(name=>'"SYS"."MONDAY_WINDOW"',force=>TRUE); DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."MONDAY_WINDOW"', attribute=>'DURATION', value=>'0 2:00:00'); DBMS_SCHEDULER.ENABLE(name=>'"SYS"."MONDAY_WINDOW"'); END; /
Im folgenden Beispiel wird das Wiederholungsintervall auf montags 10 Uhr festgelegt.
BEGIN DBMS_SCHEDULER.DISABLE(name=>'"SYS"."MONDAY_WINDOW"',force=>TRUE); DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."MONDAY_WINDOW"', attribute=>'REPEAT_INTERVAL', value=>'freq=daily;byday=MON;byhour=10;byminute=0;bysecond=0'); DBMS_SCHEDULER.ENABLE(name=>'"SYS"."MONDAY_WINDOW"'); END; /
Festlegen der Zeitzone für Oracle Scheduler-Aufgaben
Um die Zeitzone für Oracle Scheduler zu ändern, können Sie die Oracle-Prozedur verwende dbms_scheduler.set_scheduler_attribute
. Weitere Informationen über das dbms_scheduler
-Paket finden Sie unter DBMS_SCHULER
So ändern Sie die Einstellung für die aktuelle Zeitzone
-
Stellen Sie mithilfe eines Clients wie SQL Developer eine Verbindung zur Datenbank her. Weitere Informationen finden Sie unter Herstellen der Verbindung zu Ihrer DB-Instance mit Oracle SQL Developer.
-
Legen Sie die Standardzeitzone wie folgt fest, indem Sie durch Ihre Zeitzone ersetze
.time_zone_name
BEGIN DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE( attribute => 'default_timezone', value => '
time_zone_name
' ); END; /
Im folgenden Beispiel ändern Sie die Zeitzone in Asia/Shanghai.
Beginnen Sie, indem Sie die aktuelle Zeitzone abfragen, wie im Folgenden gezeigt.
SELECT VALUE FROM DBA_SCHEDULER_GLOBAL_ATTRIBUTE WHERE ATTRIBUTE_NAME='DEFAULT_TIMEZONE';
Die Ausgabe zeigt an, dass die aktuelle Zeitzone ETC/UTC ist.
VALUE ------- Etc/UTC
Dann stellen Sie die Zeitzone auf „Asien/Shanghai“ ein.
BEGIN DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE( attribute => 'default_timezone', value => 'Asia/Shanghai' ); END; /
Weitere Informationen zum Ändern der Systemzeitzone finden Sie unter Oracle-Zeitzone.
Deaktivieren von Oracle-Scheduler-Aufgaben im Besitz von SYS
Um einen SYS-eigene Oracle-Scheduler-Aufgabe zu deaktivieren, verwenden Sie die Prozedur rdsadmin.rdsadmin_dbms_scheduler.disable
.
Diese Vorgehensweise verwendet den allgemeinen Parameter name
für Oracle Scheduler-Tasks. Weitere Informationen finden Sie unter Geläufige Parameter für Oracle Scheduler-Prozeduren.
Das folgende Beispiel deaktiviert den Oracle Scheduler-Job SYS.CLEANUP_ONLINE_IND_BUILD
.
BEGIN rdsadmin.rdsadmin_dbms_scheduler.disable('SYS.CLEANUP_ONLINE_IND_BUILD'); END; /
Aktivieren von Oracle-Scheduler-Aufgaben im Besitz von SYS
Um eine SYS-eigene Oracle-Scheduler-Aufgabe zu aktivieren, verwenden Sie die Prozedur rdsadmin.rdsadmin_dbms_scheduler.enable
.
Diese Vorgehensweise verwendet den allgemeinen Parameter name
für Oracle Scheduler-Tasks. Weitere Informationen finden Sie unter Geläufige Parameter für Oracle Scheduler-Prozeduren.
Das folgende Beispiel aktiviert den Oracle Scheduler-Job SYS.CLEANUP_ONLINE_IND_BUILD
.
BEGIN rdsadmin.rdsadmin_dbms_scheduler.enable('SYS.CLEANUP_ONLINE_IND_BUILD'); END; /
Ändern des Wiederholungsintervalls von Oracle Scheduler für Aufgaben des Typs CALENDAR
Um das Wiederholungsintervall für die Änderung eines SYS-eigenen Oracle-Scheduler-Jobs vom Typ CALENDAR
zu ändern, verwenden Sie die Vorgehensweise rdsadmin.rdsadmin_dbms_scheduler.disable
.
Diese Vorgehensweise verwendet die folgenden allgemeinen Parameter für Oracle Scheduler-Tasks:
-
name
-
attribute
-
value
Weitere Informationen finden Sie unter Geläufige Parameter für Oracle Scheduler-Prozeduren.
Das folgende Beispiel ändert das Wiederholungsintervall des Oracle Scheduler-Jobs SYS.CLEANUP_ONLINE_IND_BUILD
.
BEGIN rdsadmin.rdsadmin_dbms_scheduler.set_attribute( name => 'SYS.CLEANUP_ONLINE_IND_BUILD', attribute => 'repeat_interval', value => 'freq=daily;byday=FRI,SAT;byhour=20;byminute=0;bysecond=0'); END; /
Ändern des Wiederholungsintervalls von Oracle Scheduler für Aufgaben des Typs NAMED
Einige Oracle Scheduler-Jobs verwenden einen Zeitplannamen anstelle eines Intervalls. Für diese Art von Jobs müssen Sie im Master-Benutzerschema einen neuen benannten Zeitplan anlegen. Verwenden Sie dazu die standardmäßige Oracle sys.dbms_scheduler.create_schedule
-Prozedur. Verwenden Sie außerdem die rdsadmin.rdsadmin_dbms_scheduler.set_attribute
procedure
, um dem Job den neuen benannten Zeitplan zuzuweisen.
Diese Vorgehensweise verwendet den folgenden allgemeinen Parameter für Oracle Scheduler-Tasks:
-
name
-
attribute
-
value
Weitere Informationen finden Sie unter Geläufige Parameter für Oracle Scheduler-Prozeduren.
Das folgende Beispiel ändert das Wiederholungsintervall des Oracle Scheduler-Jobs SYS.BSLN_MAINTAIN_STATS_JOB
.
BEGIN DBMS_SCHEDULER.CREATE_SCHEDULE ( schedule_name => 'rds_master_user.new_schedule', start_date => SYSTIMESTAMP, repeat_interval => 'freq=daily;byday=MON,TUE,WED,THU,FRI;byhour=0;byminute=0;bysecond=0', end_date => NULL, comments => 'Repeats daily forever'); END; / BEGIN rdsadmin.rdsadmin_dbms_scheduler.set_attribute ( name => 'SYS.BSLN_MAINTAIN_STATS_JOB', attribute => 'schedule_name', value => 'rds_master_user.new_schedule'); END; /
Deaktivieren von Autocommit für die Erstellung von Oracle-Scheduler-Aufgaben
Wenn DBMS_SCHEDULER.CREATE_JOB
Oracle-Scheduler-Aufgaben erstellt, werden die Aufgaben sofort erstellt und es wird ein Commit für die Änderungen ausgeführt. Möglicherweise müssen Sie die Erstellung von Oracle-Scheduler-Aufgaben in die Benutzertransaktion integrieren, um Folgendes zu tun:
-
Setzen Sie die Oracle-Scheduler-Aufgabe zurück, wenn die Benutzertransaktion zurückgesetzt wird.
-
Erstellen Sie die Oracle-Scheduler-Augabe, wenn ein Commit für die Hauptbenutzertransaktion ausgeführt wird.
Sie können die Prozedur rdsadmin.rdsadmin_dbms_scheduler.set_no_commit_flag
verwenden, um dieses Verhalten zu aktivieren. Diese Prozedur verwendet keine Parameter. Sie können diese Prozedur in den folgenden Versionen von RDS für Oracle verwenden:
-
21,0.0.0.ru-2022-07.rur-2022-07.r1 und höhere Versionen
-
19,0.0.0.ru-2022-07.rur-2022-07.r1 und höhere Versionen
Im folgenden Beispiel wird Autocommit für Oracle Scheduler deaktiviert, eine Oracle-Scheduler-Aufgabe erstellt und anschließend die Transaktion zurückgesetzt. Da Autocommit deaktiviert ist, setzt die Datenbank auch die Erstellung der Oracle-Scheduler-Aufgabe zurück.
BEGIN rdsadmin.rdsadmin_dbms_scheduler.set_no_commit_flag; DBMS_SCHEDULER.CREATE_JOB(job_name => 'EMPTY_JOB', job_type => 'PLSQL_BLOCK', job_action => 'begin null; end;', auto_drop => false); ROLLBACK; END; / PL/SQL procedure successfully completed. SELECT * FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME='EMPTY_JOB'; no rows selected