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. Oracle Support vous recommande de désactiver ces tâches ou de modifier la planification. Utilisez le package Amazon RDS rdsadmin.rdsadmin_dbms_scheduler
pour effectuer des tâches pour les tâches Oracle Scheduler détenues par SYS
.
Les procédures rdsadmin.rdsadmin_dbms_scheduler
sont prises en charge pour les versions suivantes du moteur de base de données Amazon RDS for Oracle :
-
Oracle Database 21c (21.0.0)
-
Oracle Database 19c
Paramètres communs pour les procédures d'Oracle Scheduler
Pour effectuer des tâches avec Oracle Scheduler, utilisez les procédures du package Amazon RDS 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 |
|
— |
Oui |
Nom du travail à modifier. NotePour l'heure, vous pouvez modifier uniquement les travaux |
|
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 des travaux DBMS_SCHEDULER
Utilisez la procédure Oracle dbms_scheduler.set_attribute
pour modifier certains composants d'Oracle Scheduler. Pour de plus amples informations, veuillez consulter DBMS_SCHEDULER
Lorsque vous utilisez des instances de base de données Amazon RDS, ajoutez le nom du schéma SYS
au début du 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 for 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 client SQL 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 de plus amples informations sur le package dbms_scheduler
, veuillez consulter DBMS_SCHLENDER
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 plus d'informations, consultez 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 est ETC/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ésactivation de travaux Oracle Scheduler détenus par SYS
Pour désactiver un travail Oracle Scheduler détenu par l'utilisateur SYS, utilisez la procédure rdsadmin.rdsadmin_dbms_scheduler.disable
.
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 de travaux Oracle Scheduler détenus par SYS
Pour activer un travail Oracle Scheduler détenu par SYS, utilisez la procédure rdsadmin.rdsadmin_dbms_scheduler.enable
.
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 Oracle Scheduler pour les travaux du type CALENDAR
Pour modifier l'intervalle de répétition d'un travail Oracle Scheduler relevant de SYS de type CALENDAR
, utilisez la procédure 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 Oracle Scheduler pour les travaux du 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 de RDS for 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