Ausführen allgemeiner Planungsaufgaben für Oracle DB-Instances - Amazon Relational Database Service

Ausführen allgemeiner Planungsaufgaben für Oracle DB-Instances

Einige SYS-eigene Scheduler-Aufträge können den normalen Datenbankbetrieb stören. In solchen Fällen empfiehlt Oracle Support, den Zeitplan zu ändern. Wenn Sie SYS-Aufträge aktivieren oder deaktivieren müssen, testen Sie den Vorgang an geplanten Aufträgen in einer Testumgebung, bevor Sie ihn in einer Produktionsumgebung implementieren. 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-Verfahren werden für die in der folgenden Tabelle gezeigten DB-Engine-Versionen von Amazon RDS für Oracle unterstützt: Wenn Sie dieses Paket verwenden, können Sie die in der Tabelle aufgeführten SYS-Aufträge angeben.

Datenbankversion Standardmäßig aktivierte Aufträge Standardmäßig deaktivierte Aufträge
Oracle Database 19c
BSLN_MAINTAIN_STATS_JOB CLEANUP_NON_EXIST_OBJ CLEANUP_ONLINE_IND_BUILD CLEANUP_ONLINE_PMO CLEANUP_TAB_IOT_PMO CLEANUP_TRANSIENT_PKG CLEANUP_TRANSIENT_TYPE DRA_REEVALUATE_OPEN_FAILURES FILE_SIZE_UPD ORA$AUTOTASK_CLEAN PMO_DEFERRED_GIDX_MAINT_JOB PURGE_LOG RSE$CLEAN_RECOVERABLE_SCRIPT SM$CLEAN_AUTO_SPLIT_MERGE
FGR$AUTOPURGE_JOB FILE_WATCHER HM_CREATE_OFFLINE_DICTIONARY LOAD_OPATCH_INVENTORY ORA$PREPLUGIN_BACKUP_JOB XMLDB_NFS_CLEANUP_JOB
Oracle Database 21c
BSLN_MAINTAIN_STATS_JOB CLEANUP_NON_EXIST_OBJ CLEANUP_ONLINE_IND_BUILD CLEANUP_ONLINE_PMO CLEANUP_TAB_IOT_PMO CLEANUP_TRANSIENT_PKG CLEANUP_TRANSIENT_TYPE DRA_REEVALUATE_OPEN_FAILURES FILE_SIZE_UPD ORA$AUTOTASK_CLEAN PMO_DEFERRED_GIDX_MAINT_JOB PURGE_LOG
FGR$AUTOPURGE_JOB FILE_WATCHER HM_CREATE_OFFLINE_DICTIONARY LOAD_OPATCH_INVENTORY ORA$PREPLUGIN_BACKUP_JOB ORA$_ATSK_AUTOSTS XMLDB_NFS_CLEANUP_JOB

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

name

varchar2

Die in der Tabelle unter Ausführen allgemeiner Planungsaufgaben für Oracle DB-Instances aufgeführten Verfahren

Ja

Der Name des zu ändernden Jobs.

attribute

varchar2

'REPEAT_INTERVAL','SCHEDULE_NAME'

Ja

Zu änderndes Attribut.

Um das Wiederholungsintervall für den Job zu ändern, geben Sie a 'REPEAT_INTERVAL'.

Um den Zeitplannamen für den Job zu ändern, geben Sie a 'SCHEDULE_NAME'.

value

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 und SET_ATTRIBUTE procedure in der Oracle-Dokumentation.

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; /

Ändern von Autotask-Wartungsfenstern

Instances von Amazon RDS für 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 auf FORCE: 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:
  1. Verbinden Sie Ihren Oracle-SQL-Client mit der Datenbank.

  2. 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
  3. Ä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 und SET_SCHULER_ATTRIBUTE in der Oracle-Dokumentation.

So ändern Sie die Einstellung für die aktuelle Zeitzone
  1. 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.

  2. 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