Exécution des tâches de planification courantes pour les instances de base de données Oracle - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exécution des tâches de planification courantes pour les instances de base de données Oracle

Certaines tâches Oracle Scheduler détenues par SYS peuvent interférer avec les opérations de base de données normales. Dans de tels cas, Oracle Support vous recommande de modifier le calendrier. Si vous devez activer ou désactiver des SYS tâches, testez le fonctionnement sur des tâches planifiées dans un environnement de test avant de l'implémenter dans un environnement de production. Pour effectuer des tâches pour les tâches Oracle Scheduler détenues parSYS, utilisez le package AmazonRDS. rdsadmin.rdsadmin_dbms_scheduler

Les rdsadmin.rdsadmin_dbms_scheduler procédures sont prises en charge pour les versions du moteur de base de données Amazon RDS pour Oracle indiquées dans le tableau suivant. Lorsque vous utilisez ce package, vous pouvez spécifier les SYS tâches répertoriées dans le tableau.

Version de base de données Tâches activées par défaut Tâches désactivées par défaut
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

Paramètres communs pour les procédures d'Oracle Scheduler

Pour effectuer des tâches avec Oracle Scheduler, utilisez les procédures du package AmazonRDS. rdsadmin.rdsadmin_dbms_scheduler Plusieurs paramètres sont communs aux procédures figurant dans le package. Le package possède les paramètres communs suivants.

Nom du paramètre Type de données Valeurs valides Par défaut Obligatoire Description

name

varchar2

Les procédures répertoriées dans le tableau de Exécution des tâches de planification courantes pour les instances de base de données Oracle

Oui

Nom du travail à modifier.

attribute

varchar2

'REPEAT_INTERVAL','SCHEDULE_NAME'

Oui

Attribut à modifier.

Pour modifier l'intervalle de répétition du travail, spécifiez 'REPEAT_INTERVAL'.

Pour modifier le nom de planification du travail, spécifiez 'SCHEDULE_NAME'.

value

varchar2

Intervalle ou nom de planification valide, selon l'attribut utilisé.

Oui

Nouvelle valeur de l'attribut.

Modification de DBMS _ SCHEDULER jobs

Utilisez la procédure Oracle dbms_scheduler.set_attribute pour modifier certains composants d'Oracle Scheduler. Pour plus d'informations, consultez les ATTRIBUTEprocédures DBMSSET_ SCHEDULER et _ dans la documentation Oracle.

Lorsque vous travaillez avec des instances Amazon RDS DB, ajoutez le nom du schéma SYS au nom de l'objet. L'exemple suivant définit l'attribut du plan de la ressource pour l'objet monday window.

BEGIN DBMS_SCHEDULER.SET_ATTRIBUTE( name => 'SYS.MONDAY_WINDOW', attribute => 'RESOURCE_PLAN', value => 'resource_plan_1'); END; /

Modification des fenêtres AutoTask de maintenance

Les instances Amazon RDS pour Oracle sont créées avec les paramètres par défaut pour les fenêtres de maintenance. Les tâches de maintenance automatisées, telles que la collecte de statistiques de l'optimiseur, s'exécutent lors de ces fenêtres. Par défaut, les fenêtres de maintenance activent le gestionnaire de ressources Oracle Database.

Pour modifier la fenêtre, utilisez le package DBMS_SCHEDULER. Vous devrez peut-être modifier les paramètres de la fenêtre de maintenance pour les raisons suivantes :

  • Vous voulez que les tâches de maintenance s'exécutent à un moment différent, avec des paramètres différents, ou pas du tout. Par exemple, vous souhaitez modifier la durée de la fenêtre ou modifier l'heure et l'intervalle de répétition.

  • Vous souhaitez éviter les répercussions sur les performances de l'activation du gestionnaire de ressources pendant la maintenance. Par exemple, si le plan de maintenance par défaut est spécifié et si la fenêtre de maintenance s'ouvre alors que la base de données est en cours de chargement, des événements d'attente tels que resmgr:cpu quantum peuvent apparaître. Cet événement d'attente est lié au gestionnaire de ressources de base de données. Vous avez les options suivantes :

    • Vérifiez que les fenêtres de maintenance sont actives pendant les heures creuses pour votre instance de base de données.

    • Désactivez le plan de maintenance par défaut en réglant l'attribut resource_plan sur une chaîne vide.

    • Définissez le paramètre resource_manager_plan de votre groupe de paramètres sur FORCE:. Si votre instance utilise Enterprise Edition, ce paramètre empêche l'activation des plans du gestionnaire de ressources de base de données.

Pour modifier les paramètres de votre fenêtre de maintenance
  1. Connectez-vous à votre base de données à l'aide d'un SQL client Oracle.

  2. Interrogez la configuration actuelle pour une fenêtre de planificateur.

    L'exemple suivant interroge la configuration pour MONDAY_WINDOW.

    SELECT ENABLED, RESOURCE_PLAN, DURATION, REPEAT_INTERVAL FROM DBA_SCHEDULER_WINDOWS WHERE WINDOW_NAME='MONDAY_WINDOW';

    La sortie suivante indique que la fenêtre utilise les valeurs par défaut.

    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. Modifiez la fenêtre à l'aide du package DBMS_SCHEDULER.

    L'exemple suivant définit le plan de ressources sur null, afin que le gestionnaire de ressources ne s'exécute pas pendant la fenêtre de maintenance.

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

    L'exemple suivant définit la durée maximale de la fenêtre sur 2 heures.

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

    L'exemple suivant définit l'intervalle de répétition sur tous les lundis, à 10 heures.

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

Définition du fuseau horaire pour les tâches d'Oracle Scheduler

Pour modifier le fuseau horaire d'Oracle Scheduler, vous pouvez utiliser la procédure Oracle dbms_scheduler.set_scheduler_attribute. Pour plus d'informations sur le dbms_scheduler package, consultez DBMS_ SCHEDULER et SET_ SCHEDULER _ ATTRIBUTE dans la documentation Oracle.

Pour modifier le paramètre de fuseau horaire actuel
  1. Connectez-vous à la base de données à l'aide d'un client tel que SQL Developer. Pour de plus amples informations, veuillez consulter Connexion à votre instance de base de données à l'aide d'Oracle SQL Developer.

  2. Définissez le fuseau horaire par défaut comme suit, en remplaçant votre fuseau horaire par time_zone_name.

    BEGIN DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE( attribute => 'default_timezone', value => 'time_zone_name' ); END; /

Dans l'exemple suivant, vous changez le fuseau horaire pour Asia/Shanghai.

Commencez par interroger le fuseau horaire actuel, comme indiqué ci-dessous.

SELECT VALUE FROM DBA_SCHEDULER_GLOBAL_ATTRIBUTE WHERE ATTRIBUTE_NAME='DEFAULT_TIMEZONE';

La sortie indique que le fuseau horaire actuel estETC/UTC.

VALUE ------- Etc/UTC

Ensuite, vous définissez le fuseau horaire sur Asia/Shanghai.

BEGIN DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE( attribute => 'default_timezone', value => 'Asia/Shanghai' ); END; /

Pour plus d'informations sur la modification du fuseau horaire système, consultez Fuseau horaire Oracle.

Désactiver les tâches Oracle Scheduler détenues par SYS

Pour désactiver une tâche Oracle Scheduler appartenant à l'SYSutilisateur, suivez la rdsadmin.rdsadmin_dbms_scheduler.disable procédure ci-dessous.

Cette procédure utilise le paramètre commun name pour les tâches Oracle Scheduler. Pour plus d'informations, consultez Paramètres communs pour les procédures d'Oracle Scheduler.

L'exemple suivant désactive le travail Oracle Scheduler SYS.CLEANUP_ONLINE_IND_BUILD.

BEGIN rdsadmin.rdsadmin_dbms_scheduler.disable('SYS.CLEANUP_ONLINE_IND_BUILD'); END; /

Activation des tâches Oracle Scheduler détenues par SYS

Pour activer une tâche Oracle Scheduler appartenant àSYS, suivez la rdsadmin.rdsadmin_dbms_scheduler.enable procédure ci-dessous.

Cette procédure utilise le paramètre commun name pour les tâches Oracle Scheduler. Pour plus d'informations, consultez Paramètres communs pour les procédures d'Oracle Scheduler.

L'exemple suivant active le travail Oracle Scheduler SYS.CLEANUP_ONLINE_IND_BUILD.

BEGIN rdsadmin.rdsadmin_dbms_scheduler.enable('SYS.CLEANUP_ONLINE_IND_BUILD'); END; /

Modification de l'intervalle de répétition d'Oracle Scheduler pour les tâches de type CALENDAR

Pour modifier l'intervalle de répétition afin de modifier une tâche Oracle Scheduler SYS appartenant à Oracle Scheduler, utilisez CALENDAR la procédure suivante. rdsadmin.rdsadmin_dbms_scheduler.disable

Cette procédure utilise les paramètres communs suivants pour les tâches Oracle Scheduler :

  • name

  • attribute

  • value

Pour plus d'informations, consultez Paramètres communs pour les procédures d'Oracle Scheduler.

L'exemple suivant modifier l'intervalle de répétition du travail Oracle Scheduler 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; /

Modification de l'intervalle de répétition d'Oracle Scheduler pour les tâches de type NAMED

Certains travaux Oracle Scheduler utilisent non pas un intervalle, mais un nom de planification. Pour ce type de travaux, vous devez créer une planification nommée dans le schéma d'utilisateur principal. Pour cela, utilisez la procédure Oracle standard sys.dbms_scheduler.create_schedule. De même, utilisez rdsadmin.rdsadmin_dbms_scheduler.set_attribute procedure pour affecter la nouvelle planification nommée à la tâche.

Cette procédure utilise le paramètre commun suivant pour les tâches Oracle Scheduler :

  • name

  • attribute

  • value

Pour plus d'informations, consultez Paramètres communs pour les procédures d'Oracle Scheduler.

L'exemple suivant modifier l'intervalle de répétition du travail Oracle Scheduler 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; /

Désactivation de la validation automatique pour la création de travaux Oracle Scheduler

Quand DBMS_SCHEDULER.CREATE_JOB crée des travaux Oracle Scheduler, il les crée immédiatement et valide les modifications. Vous devrez peut-être intégrer la création de travaux Oracle Scheduler dans la transaction utilisateur pour effectuer les opérations suivantes :

  • Annuler le travail Oracle Scheduler lorsque la transaction utilisateur est annulée.

  • Créer la tâche Oracle Scheduler lorsque la transaction utilisateur principale est validée.

Vous pouvez utiliser la procédure rdsadmin.rdsadmin_dbms_scheduler.set_no_commit_flag pour activer ce comportement. Cette procédure ne prend aucun paramètre. Vous pouvez utiliser cette procédure dans les versions suivantes RDS d'Oracle :

  • 21.0.0.0.ru-2022-07.rur-2022-07.r1 et versions ultérieures

  • 19.0.0.0.ru-2022-07.rur-2022-07.r1 et versions ultérieures

L'exemple suivant désactive la validation automatique pour Oracle Scheduler, crée un travail Oracle Scheduler, puis annule la transaction. Comme la validation automatique est désactivée, la base de données annule également la création du travail Oracle Scheduler.

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