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 |
|
|
Oracle Database 21c |
|
|
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 |
---|---|---|---|---|---|
|
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. |
|
varchar2 |
|
– |
Oui |
Attribut à modifier. Pour modifier l'intervalle de répétition du travail, spécifiez Pour modifier le nom de planification du travail, spécifiez |
|
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
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 surFORCE:
. 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
-
Connectez-vous à votre base de données à l'aide d'un SQL client Oracle.
-
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
-
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
Pour modifier le paramètre de fuseau horaire actuel
-
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.
-
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