

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
<a name="Appendix.Oracle.CommonDBATasks.Scheduler"></a>

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 tâches `SYS`, testez le fonctionnement sur des tâches planifiées dans un environnement de test avant de l’implémenter dans un environnement de production. 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 du moteur de base de données Amazon RDS for Oracle indiqué dans le tableau suivant. Lorsque vous utilisez ce package, vous pouvez spécifier les tâches `SYS` répertoriées dans le tableau.


| Version de base de données | Tâches activées par défaut. | Tâches désactivés par défaut. | 
| --- | --- | --- | 
| Oracle Database 19c |  <pre>BSLN_MAINTAIN_STATS_JOB<br />CLEANUP_NON_EXIST_OBJ<br />CLEANUP_ONLINE_IND_BUILD<br />CLEANUP_ONLINE_PMO<br />CLEANUP_TAB_IOT_PMO<br />CLEANUP_TRANSIENT_PKG<br />CLEANUP_TRANSIENT_TYPE<br />DRA_REEVALUATE_OPEN_FAILURES<br />FILE_SIZE_UPD<br />ORA$AUTOTASK_CLEAN<br />PMO_DEFERRED_GIDX_MAINT_JOB<br />PURGE_LOG<br />RSE$CLEAN_RECOVERABLE_SCRIPT<br />SM$CLEAN_AUTO_SPLIT_MERGE</pre>  |  <pre>FGR$AUTOPURGE_JOB<br />FILE_WATCHER<br />HM_CREATE_OFFLINE_DICTIONARY<br />LOAD_OPATCH_INVENTORY<br />ORA$PREPLUGIN_BACKUP_JOB<br />XMLDB_NFS_CLEANUP_JOB</pre>  | 
| Oracle Database 21c |  <pre>BSLN_MAINTAIN_STATS_JOB<br />CLEANUP_NON_EXIST_OBJ<br />CLEANUP_ONLINE_IND_BUILD<br />CLEANUP_ONLINE_PMO<br />CLEANUP_TAB_IOT_PMO<br />CLEANUP_TRANSIENT_PKG<br />CLEANUP_TRANSIENT_TYPE<br />DRA_REEVALUATE_OPEN_FAILURES<br />FILE_SIZE_UPD<br />ORA$AUTOTASK_CLEAN<br />PMO_DEFERRED_GIDX_MAINT_JOB<br />PURGE_LOG</pre>  |  <pre>FGR$AUTOPURGE_JOB<br />FILE_WATCHER<br />HM_CREATE_OFFLINE_DICTIONARY<br />LOAD_OPATCH_INVENTORY<br />ORA$PREPLUGIN_BACKUP_JOB<br />ORA$_ATSK_AUTOSTS<br />XMLDB_NFS_CLEANUP_JOB</pre>  | 

## Paramètres communs pour les procédures d'Oracle Scheduler
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters"></a>

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 | 
| --- | --- | --- | --- | --- | --- | 
|  `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](#Appendix.Oracle.CommonDBATasks.Scheduler)   |  —  |  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 des travaux DBMS\$1SCHEDULER
<a name="Appendix.Oracle.CommonDBATasks.ModifyScheduler"></a>

Utilisez la procédure Oracle `dbms_scheduler.set_attribute` pour modifier certains composants d'Oracle Scheduler. Pour plus d’informations, consultez [DBMS\$1SCHEDULER](https://docs.oracle.com/database/121/ARPLS/d_sched.htm#ARPLS72235) et la [procédure SET\$1ATTRIBUTE](https://docs.oracle.com/database/121/ARPLS/d_sched.htm#ARPLS72399) dans la documentation Oracle. 

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
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.maintenance-windows"></a>

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 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 client SQL Oracle.

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

1. 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
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.TimeZone"></a>

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 package `dbms_scheduler`, consultez [DBMS\$1SCHLENDER](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_SCHEDULER.html) et [SET\$1SCHENDER\$1ATTRIBUTE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_SCHEDULER.html#GUID-2AB97BF7-7154-4E6C-933F-B2659B18A907) 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 plus d'informations, consultez [Connexion à votre instance de base de données à l'aide d'Oracle SQL Developer](USER_ConnectToOracleInstance.SQLDeveloper.md).

1. 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](Appendix.Oracle.Options.Timezone.md).

## Désactivation de travaux Oracle Scheduler détenus par SYS
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.Disabling"></a>

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](#Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters).

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
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.Enabling"></a>

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](#Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters).

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
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.Modifying_Calendar"></a>

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](#Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters).

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
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.Modifying_Named"></a>

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](#Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters).

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
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.autocommit"></a>

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