Configurer une base de données Oracle Amazon RDS

Vous pouvez configurer votre base de données Oracle source pour l'utiliser avec les méthodes de capture des données modifiées suivantes:

Pour en savoir plus sur le lecteur de journaux binaires et l'API LogMiner, consultez la page Utiliser les fichiers journaux de rétablissement de base de données Oracle.

Pour obtenir des instructions détaillées sur la configuration de votre base de données Oracle source pour chacune de ces méthodes, consultez les sections suivantes.

Configurer votre base de données Oracle Amazon RDS pour le lecteur de journaux binaires

Pour les sources Amazon RDS, Datastream n'accepte que les objets de répertoire de base de données comme méthode d'accès aux journaux pour le lecteur de journaux binaires. Vous devez créer les répertoires de base de données qui pointent vers les fichiers journaux de rétablissement en ligne et les fichiers journaux archivés. Les noms de ces répertoires sont statiques et ne peuvent pas être modifiés par la suite. Vous devez fournir ces noms à Datastream lorsque vous créez votre flux.

  1. Connectez-vous à votre instance Amazon RDS source.

  2. Dans le terminal ou à l'aide du tableau de bord Amazon RDS, exécutez les commandes suivantes:

    BEGIN
    rdsadmin.rdsadmin_master_util.create_archivelog_dir;
    END;
    BEGIN
    rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
    END;
    COMMIT;
    GRANT READ ON DIRECTORY ONLINELOG_DIR TO USER_NAME;
    GRANT READ ON DIRECTORY ARCHIVELOG_DIR TO USER_NAME;
  3. Vérifiez que votre base de données s'exécute en mode ARCHIVELOG. Pour ce faire, connectez-vous à votre base de données Oracle et exécutez la commande suivante à l'invite SQL:

    SELECT LOG_MODE FROM V$DATABASE;

    1. Si le résultat est ARCHIVELOG, passez à l'étape C.
    2. Si le résultat est NOARCHIVELOG, vous devez activer le mode ARCHIVELOG pour votre base de données.
    3. Les fichiers journaux archivés consomment de l'espace disque. Vous devez donc configurer le paramètre DB_RECOVERY_FILE_DEST_SIZE pour votre base de données. Utilisez ce paramètre pour spécifier (en octets) la limite stricte de l'espace total à utiliser pour les fichiers de récupération de base de données cibles. En définissant ce paramètre, vous gérez le compromis entre la protection de la base de données contre l'épuisement de l'espace disque et l'échec du flux en raison de la perte de la position du journal.
    4. Définissez une règle de conservation des données pour votre base de données en exécutant la commande suivante :
      exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',96);
      Nous vous recommandons de conserver les sauvegardes et les journaux d'archive pendant au moins quatre jours (durée recommandée de sept jours).
    5. Configurez la règle de rotation des fichiers journaux Oracle. Nous vous recommandons de définir une taille de fichier journal maximale inférieure à 1 Go.
  4. Activez les données de journal supplémentaires. Pour cela, commencez par activer la journalisation complémentaire minimale au niveau de la base de données en exécutant la commande suivante:

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');

    Ensuite, indiquez si vous souhaitez activer la journalisation pour des tables spécifiques ou pour l'ensemble de la base de données.

    Pour n'enregistrer les modifications que dans des tables spécifiques, exécutez la commande suivante pour chaque table que vous souhaitez répliquer :

    ALTER TABLE SCHEMA.TABLE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

    Remplacez les éléments suivants :

    • SCHEMA: nom du schéma contenant la table.
    • TABLE: nom de la table pour laquelle vous souhaitez consigner les modifications.

    Pour répliquer la plupart ou la totalité des tables de votre base de données, envisagez d'activer la journalisation pour l'intégralité de la base de données. À l'invite SQL, exécutez la commande suivante pour activer les données de journalisation complémentaire pour l'intégralité de la base de données:

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','ALL');
  5. Accordez les droits suivants à l'utilisateur de la base de données:

    GRANT CONNECT TO USER_NAME;
    GRANT CREATE SESSION TO USER_NAME;
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','USER_NAME','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG','USER_NAME','SELECT');
    GRANT SELECT ANY TRANSACTION TO USER_NAME;
    GRANT SELECT ANY TABLE TO USER_NAME;
    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;

    Remplacez USER_NAME par le nom du compte utilisateur que vous prévoyez d'utiliser pour vous connecter à votre base de données.

Configurer votre base de données Oracle Amazon RDS pour LogMiner

  1. Vérifiez que votre base de données s'exécute en mode ARCHIVELOG. Pour ce faire, connectez-vous à votre base de données Oracle et exécutez la commande suivante à l'invite SQL:

    SELECT LOG_MODE FROM V$DATABASE;

    1. Si le résultat est ARCHIVELOG, passez à l'étape C.
    2. Si le résultat est NOARCHIVELOG, vous devez activer le mode ARCHIVELOG pour votre base de données.
    3. Les fichiers journaux archivés consomment de l'espace disque. Vous devez donc configurer le paramètre DB_RECOVERY_FILE_DEST_SIZE pour votre base de données. Utilisez ce paramètre pour spécifier (en octets) la limite stricte de l'espace total à utiliser pour les fichiers de récupération de base de données cibles. En définissant ce paramètre, vous gérez le compromis entre la protection de la base de données contre l'épuisement de l'espace disque et l'échec du flux en raison de la perte de la position du journal.
    4. Définissez une règle de conservation des données pour votre base de données en exécutant la commande suivante :
      exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',96);
      Nous vous recommandons de conserver les sauvegardes et les journaux d'archive pendant au moins quatre jours (durée recommandée de sept jours).
    5. Configurez la règle de rotation des fichiers journaux Oracle. Nous vous recommandons de définir une taille de fichier journal maximale inférieure à 1 Go.
  2. Activez les données de journal supplémentaires. Pour cela, commencez par activer la journalisation complémentaire minimale au niveau de la base de données en exécutant la commande suivante:

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');

    Ensuite, indiquez si vous souhaitez activer la journalisation pour des tables spécifiques ou pour l'ensemble de la base de données.

    Pour n'enregistrer les modifications que dans des tables spécifiques, exécutez la commande suivante pour chaque table que vous souhaitez répliquer :

    ALTER TABLE SCHEMA.TABLE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

    Remplacez les éléments suivants :

    • SCHEMA: nom du schéma contenant la table.
    • TABLE: nom de la table pour laquelle vous souhaitez consigner les modifications.

    Pour répliquer la plupart ou la totalité des tables de votre base de données, envisagez d'activer la journalisation pour l'intégralité de la base de données.

    Lorsque l'invite SQL s'affiche, exécutez la commande suivante pour activer les données de journalisation complémentaire pour l'intégralité de la base de données :

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','ALL');
  3. Accordez les droits requis au compte utilisateur qui servira à établir la connexion à votre base de données. Pour cela, exécutez la commande suivante :

    GRANT EXECUTE_CATALOG_ROLE TO USER_NAME;
    GRANT CONNECT TO USER_NAME;
    GRANT CREATE SESSION TO USER_NAME;
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','USER_NAME','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG','USER_NAME','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS','USER_NAME','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','USER_NAME','SELECT');
    exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR','USER_NAME','EXECUTE');
    exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR_D','USER_NAME','EXECUTE');
    GRANT SELECT ANY TRANSACTION TO USER_NAME;
    GRANT SELECT ANY TABLE TO USER_NAME;

    Si votre organisation n'autorise pas l'octroi de l'autorisation GRANT SELECT ANY TABLE, utilisez la solution décrite dans la section Capture des données modifiées (CDC) Oracle de la page des questions fréquentes sur Datastream.

    Si votre base de données source est Oracle en version 12c ou ultérieure, accordez le droit supplémentaire suivant :

    GRANT LOGMINING TO USER_NAME;
  4. Accordez au compte utilisateur SELECT l'accès à la vue DBA_EXTENTS de votre base de données. Ce droit vous permet d'utiliser le remplissage basé sur ROWID pour votre source Oracle:

    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;

Étape suivante