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

  • Oracle Database 12c Release 2 (12.2) auf 12.2.0.2.ru-2019-07.rur-2019-07.r1 oder höher 12.2-Versionen

  • Oracle Database 12c Release 1 (12.1) auf 12.1.0.2.v17 oder höher, 12.1-Versionen

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

'SYS.BSLN_MAINTAIN_STATS_JOB','SYS.CLEANUP_ONLINE_IND_BUILD'

Ja

Der Name des zu ändernden Jobs.

Anmerkung

Derzeit können Sie nur SYS.CLEANUP_ONLINE_IND_BUILD- und SYS.BSLN_MAINTAIN_STATS_JOB-Jobs ändern.

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 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 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 SYS-eigenen Oracle-Scheduler-Aufgaben

Um einen SYS-eigenen Oracle-Scheduler-Job 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 SYS-eigenen Oracle-Scheduler-Aufgaben

Um eine SYS-eigene Oracle-Scheduler-Aufgabe zu aktivieren, verwenden Sie das rdsadmin.rdsadmin_dbms_scheduler.enable-Verfahren.

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