Pour diffuser des mises à jour de capture de données modifiées (CDC) depuis une base de données Oracle autogérée vers une destination compatible telle que BigQuery ou Cloud Storage, vous pouvez configurer Datastream pour qu'il lise vos fichiers de journal de reprise à l'aide du lecteur de journal binaire (preview) ou de l'API LogMiner. Vous préparez votre base de données en activant le mode ARCHIVELOG, en définissant une règle de conservation des données, en activant la journalisation supplémentaire et en accordant des droits utilisateur. Pour en savoir plus sur ces méthodes CDC, consultez Utiliser les fichiers journaux de rétablissement de base de données Oracle.
Configurer votre base de données Oracle autogérée pour le lecteur de journaux binaires
Pour configurer votre base de données Oracle autogérée afin de l'utiliser avec la méthode CDC de lecteur de journal binaire, procédez comme suit :
Créez un compte utilisateur de base de données que Datastream utilisera pour se connecter à votre base de données :
CREATE USER USER_NAME IDENTIFIED BY USER_PASSWORD;
Remplacez les éléments suivants :
- USER_NAME : nom du compte utilisateur de base de données que vous souhaitez utiliser pour vous connecter à votre base de données.
- USER_PASSWORD : mot de passe du compte utilisateur de la base de données.
Sélectionnez l'une des méthodes suivantes pour accéder à vos fichiers journaux :
Gestion automatique de l'espace de stockage (ASM) : si vous sélectionnez cette option, vous devez créer une connexion ASM dédiée et fournir ses détails lorsque vous créez votre profil de connexion. Le compte utilisateur utilisé pour la connexion ASM doit disposer du droit
SYSASM.Pour créer un utilisateur ASM avec le droit
SYSASM, exécutez les commandes suivantes :CREATE USER ASM_USER_NAME IDENTIFIED BY ASM_PASSWORD; GRANT SYSASM TO ASM_USER_NAME;
Remplacez les éléments suivants :
- ASM_USER_NAME : nom de l'utilisateur ASM.
- ASM_PASSWORD : mot de passe de l'utilisateur ASM.
Répertoires de base de données : si vous sélectionnez cette option, vous devez créer des objets de répertoire de base de données qui pointent vers les fichiers journaux de rétablissement et les fichiers journaux archivés, puis accorder à l'utilisateur de votre base de données l'accès
READaux répertoires :
CREATE DIRECTORY DIRECTORY_NAME_1 as 'ONLINE_REDO_LOGS_PATH'; CREATE DIRECTORY DIRECTORY_NAME_2 as 'ARCHIVED_REDO_LOGS_PATH'; GRANT READ ON DIRECTORY DIRECTORY_NAME_1 to USER_NAME; GRANT READ ON DIRECTORY DIRECTORY_NAME_2 to USER_NAME;
Remplacez les éléments suivants :
- DIRECTORY_NAME_1 : nom du répertoire des fichiers journaux de reprise en ligne.
- DIRECTORY_NAME_2 : nom du répertoire des fichiers journaux redo archivés.
- ONLINE_REDO_LOGS_PATH : chemin d'accès au répertoire dans lequel les fichiers journaux de reprise en ligne doivent être stockés.
- ARCHIVED_REDO_LOGS_PATH : chemin d'accès au répertoire dans lequel les fichiers journaux archivés doivent être stockés.
- USER_NAME : nom du compte utilisateur de base de données créé précédemment.
Si vous sélectionnez la méthode de lecture des journaux binaires et utilisez des répertoires de base de données, vous devez fournir les noms des répertoires de journaux de rétablissement et de journaux archivés lorsque vous créez votre flux.
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;- Si le résultat est
ARCHIVELOG, passez à l'étape suivante. - Si le résultat est
NOARCHIVELOG, vous devez activer le modeARCHIVELOGpour votre base de données. Exécutez les commandes suivantes en tant que
SYSDBA:SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
Les fichiers journaux archivés utilisent 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 pouvez gérer l'équilibre entre protection de la base de données contre le manque d'espace disque et échec du flux en raison de la perte de position du journal.
- Si le résultat est
Définissez une règle de conservation des données pour votre base de données en exécutant les commandes RMAN (Oracle Recovery Manager) suivantes :
TARGET / CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
Nous vous recommandons de conserver les sauvegardes et les journaux d'archive pendant au moins quatre jours (durée recommandée de sept jours).
Revenez à l'invite SQL de l'outil de base de données que vous utilisez pour configurer la règle de rotation des fichiers journaux Oracle. Nous vous recommandons de définir une taille de fichier journal maximale de 512 Mo.
Activez les données de journal supplémentaires. Pour cela, commencez par activer la journalisation supplémentaire minimale au niveau de la base de données en exécutant la commande suivante :
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
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 enregistrer 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. Exécutez la commande suivante pour activer les données de la journalisation complémentaire pour l'intégralité de la base de données :
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
Accordez les droits appropriés directement au compte utilisateur utilisé pour se connecter à votre base de données. Notez que ces autorisations ne fonctionnent pas lorsqu'elles sont attribuées à un rôle, par exemple. Pour cela, exécutez la commande suivante :
GRANT SELECT ON GV_$LOG TO USER_NAME; GRANT SELECT ON GV_$LOGFILE TO USER_NAME; GRANT SELECT ON GV_$ARCHIVED_LOG TO USER_NAME; GRANT SELECT ON GV_$INSTANCE TO USER_NAME; GRANT SELECT ON GV_$STANDBY_LOG TO USER_NAME; GRANT SELECT ON V_$INSTANCE TO USER_NAME; GRANT SELECT ON V_$PDBS TO USER_NAME; GRANT SELECT ON V_$TRANSPORTABLE_PLATFORM TO USER_NAME; GRANT SELECT ON V_$DATABASE TO USER_NAME; GRANT SELECT ON V_$PARAMETER TO USER_NAME; GRANT SELECT ON COL$ TO USER_NAME; GRANT SELECT ON DBA_OBJECTS TO USER_NAME; GRANT SELECT ON DBA_TABLESPACES TO USER_NAME; GRANT SELECT ON DBA_ENCRYPTED_COLUMNS TO USER_NAME; GRANT SELECT ON DBA_EXTENTS TO USER_NAME; GRANT CONNECT TO USER_NAME; GRANT CREATE SESSION TO USER_NAME; GRANT SELECT ANY TABLE TO USER_NAME;
Remplacez USER_NAME par le nom du compte utilisateur de base de données créé précédemment.
Configurer votre base de données Oracle autogérée pour LogMiner
Créez un compte utilisateur de base de données que Datastream utilisera pour se connecter à votre base de données :
CREATE USER USER_NAME IDENTIFIED BY USER_PASSWORD;
Remplacez les éléments suivants :
- USER_NAME : nom du compte utilisateur de base de données que vous souhaitez utiliser pour vous connecter à votre base de données.
- USER_PASSWORD : mot de passe du compte utilisateur de la base de données.
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;- Si le résultat est
ARCHIVELOG, passez à l'étape suivante. - Si le résultat est
NOARCHIVELOG, vous devez activer le modeARCHIVELOGpour votre base de données. Exécutez les commandes suivantes en tant que
SYSDBA:SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
Les fichiers journaux archivés utilisent 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 pouvez gérer l'équilibre entre protection de la base de données contre le manque d'espace disque et échec du flux en raison de la perte de position du journal.
- Si le résultat est
Définissez une règle de conservation des données pour votre base de données en exécutant les commandes RMAN (Oracle Recovery Manager) suivantes :
TARGET / CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
Nous vous recommandons de conserver les sauvegardes et les journaux d'archive pendant au moins quatre jours (durée recommandée de sept jours).
Revenez à l'invite SQL de l'outil de base de données que vous utilisez pour configurer la règle de rotation des fichiers journaux Oracle. Nous vous recommandons de définir une taille de fichier journal maximale de 512 Mo.
Activez les données de journal supplémentaires. Pour cela, commencez par activer la journalisation supplémentaire minimale au niveau de la base de données en exécutant la commande suivante :
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
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 enregistrer 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. Exécutez la commande suivante pour activer les données de la journalisation complémentaire pour l'intégralité de la base de données :
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
Accordez les droits appropriés directement au compte utilisateur utilisé pour se connecter à votre base de données. Notez que ces autorisations ne fonctionnent pas lorsqu'elles sont attribuées à un rôle, par exemple. 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; GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME; GRANT SELECT ON SYS.V_$LOG TO USER_NAME; -- for primary databases GRANT SELECT ON SYS.V_$STANDBY_LOG TO USER_NAME; -- for standby databases GRANT SELECT ON SYS.V_$LOGFILE TO USER_NAME; GRANT SELECT ON SYS.V_$ARCHIVED_LOG TO USER_NAME; GRANT SELECT ON SYS.V_$LOGMNR_CONTENTS TO USER_NAME; GRANT SELECT ON SYS.V_$PARAMETER TO USER_NAME; GRANT EXECUTE ON DBMS_LOGMNR TO USER_NAME; GRANT EXECUTE ON DBMS_LOGMNR_D TO USER_NAME; GRANT SELECT ANY TRANSACTION TO USER_NAME; GRANT SELECT ANY TABLE TO USER_NAME;
Si votre base de données utilise le chiffrement transparent des données (TDE, Transparent Data Encryption), accordez les autorisations suivantes :
GRANT SELECT ON DBA_TABLESPACES TO USER_NAME; GRANT SELECT ON DBA_ENCRYPTED_COLUMNS 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 de 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;
Accordez au compte utilisateur l'accès
SELECTà la vueDBA_EXTENTSdans votre base de données. Ce droit vous permet d'utiliser le remplissage basé surROWIDpour votre source Oracle :GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
Étape suivante
- Découvrez comment Datastream fonctionne avec les sources Oracle.