Présentation
Database Migration Service permet d'effectuer des migrations continues à partir de bases de données sources vers des bases de données de destination Cloud SQL pour PostgreSQL.
Les bases de données sources compatibles avec Oracle incluent les versions suivantes:
- Oracle 11g, version 11.2.0.4
- Oracle 12c, version 12.1.0.2
- Oracle 12c, version 12.2.0.1
- Oracle 18c
- Oracle 19c
- Oracle 21c
- Oracle Real Application Clusters (RAC)
Database Migration Service utilise l'API Oracle LogMiner, qui fait partie de la base de données Oracle, pour interroger les fichiers journaux de rétablissement archivés. Les fichiers journaux de rétablissement contiennent des informations sur l'historique d'activité d'une base de données. Pour en savoir plus sur le fonctionnement de Database Migration Service avec ces fichiers journaux, consultez À propos du flux de données pour les migrations Oracle.
Configurer votre base de données Oracle source
Avant de pouvoir utiliser Database Migration Service pour extraire des données de votre base de données Oracle source, vous devez configurer votre base de données de différentes manières:
Configurer la journalisation des archives pour suivre les modifications apportées à votre base de données, telles que les opérations
INSERT
,UPDATE
,DELETE
etRENAME
.Accorder les droits appropriés au compte utilisateur qui servira à établir la connexion à votre base de données et à accéder aux objets de schéma et de code.
Par défaut, Database Migration Service tente d'accéder à toutes vos définitions d'objets via DBA_VIEWS. L'accès à
DBA_VIEWS
est accordé avec le droitSELECT ANY DICTIONARY
. Si les vues DBA ne sont pas accessibles au compte utilisateur de migration, Database Migration Service utilise ALL_VIEWS. Cette approche vous offre le plus haut niveau de flexibilité pour définir un modèle de sécurité qui correspond le mieux à vos exigences.Si vous souhaitez que Database Migration Service n'accède qu'à un sous-ensemble de vos définitions d'objets, attribuez à l'utilisateur de migration un rôle avec une configuration d'autorisations plus précise au lieu de
SELECT ANY DICTIONARY
.Définir une règle de conservation des données pour votre base de données afin de déterminer les données à archiver, leur durée de conservation, si elles doivent être archivées ou détruites à la fin de la durée de conservation.
Database Migration Service fonctionne actuellement avec les types de bases de données Oracle suivants:
Configurer une base de données Amazon RDS pour Oracle
Vérifiez que votre base de données s'exécute en mode
ARCHIVELOG
. Pour ce faire, exécutez la commande suivante :SELECT LOG_MODE FROM V$DATABASE;
Si le résultat est
ARCHIVELOG
, passez à l'étape C.Si le résultat est
NOARCHIVELOG
, vous devez activer le modeARCHIVELOG
pour votre base de données.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 disponibilité des informations et l'espace disque.
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).
Configurez la règle de rotation des fichiers journaux Oracle. Nous vous recommandons de définir une taille de fichier journal maximale de 512 Mo. Pour en savoir plus sur la gestion de la rotation des journaux, consultez Utiliser les fichiers journaux de rétablissement de base de données Oracle.
Activez les données de journal supplémentaires. Pour cela, commencez par activer la journalisation complémentaire sur 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');
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 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; GRANT SELECT ANY DICTIONARY TO USER_NAME; GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
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;
Configurer une base de données Oracle auto-hébergée
Vérifiez que votre base de données s'exécute en mode
ARCHIVELOG
. Pour ce faire, exécutez la commande suivante :SELECT LOG_MODE FROM V$DATABASE;
Si le résultat est
ARCHIVELOG
, passez à l'étape 2.Si le résultat est
NOARCHIVELOG
, vous devez activer le modeARCHIVELOG
pour 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 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 disponibilité des informations et l'espace disque.
Définissez une règle de conservation des données pour votre base de données en exécutant la commande Oracle Recovery Manager (RMAN) suivante:
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 complémentaire sur 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 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.
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 requis au compte utilisateur qui servira à établir la connexion à votre base de données. Pour cela, exécutez la commande suivante :
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_$ARCHIVED_LOG TO USER_NAME; GRANT SELECT ON SYS.V_$LOGMNR_CONTENTS TO USER_NAME; GRANT SELECT ON SYS.V_$LOGMNR_LOGS 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; GRANT SELECT ANY DICTIONARY TO USER_NAME; GRANT EXECUTE_CATALOG_ROLE TO USER_NAME; GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
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;
Configurer une base de données plug-in Oracle auto-hébergée
Database Migration Service est compatible avec l'architecture multi-tenant Oracle, dans laquelle une seule base de données de conteneurs (CDB) contient une ou plusieurs bases de données connectables (PDB). Chaque base de données enfichable est une base de données autonome avec un ID et un nom uniques, et peut être gérée indépendamment.
Pour configurer une base de données plug-in Oracle auto-hébergée afin de pouvoir l'utiliser avec Database Migration Service, procédez comme suit:
Vérifiez que votre base de données s'exécute en mode
ARCHIVELOG
. Pour ce faire, exécutez la commande suivante à partir du conteneurCDB$ROOT
:SELECT LOG_MODE FROM V$DATABASE;
Si le résultat est
ARCHIVELOG
, passez à l'étape 2.Si le résultat est
NOARCHIVELOG
, vous devez activer le modeARCHIVELOG
pour 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 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 disponibilité des informations et l'espace disque.
Définissez une règle de conservation des données pour votre base de données en exécutant la commande Oracle Recovery Manager (RMAN) suivante à partir du conteneur
CDB$ROOT
: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 complémentaire sur la base de données au niveau
CDB$ROOT
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 enfichable.
Pour n'enregistrer les modifications que dans des tables spécifiques, connectez-vous au conteneur de base de données enfichable et 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.
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;
Créez un utilisateur commun. Un utilisateur commun a la même identité dans le conteneur
CDB$ROOT
et dans les bases de données enfichables. Un utilisateur standard peut se connecter à la racine et effectuer des opérations dans celle-ci, ainsi que dans n'importe quelle base de données enfichable pour laquelle il dispose de droits. Le nom d'utilisateur commun doit commencer parC##
ouc##
.Accordez les droits appropriés à l'utilisateur commun qui servira à établir la connexion à votre base de données. Différentes autorisations sont requises au niveau du conteneur
CDB$ROOT
et de la base de données enfichable.Connectez-vous au conteneur
CDB$ROOT
et exécutez les commandes suivantes:GRANT CREATE SESSION TO USER_NAME; GRANT SET CONTAINER TO USER_NAME; GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME; GRANT SELECT ON SYS.V_$LOGMNR_CONTENTS TO USER_NAME; GRANT EXECUTE ON DBMS_LOGMNR TO USER_NAME; GRANT EXECUTE ON DBMS_LOGMNR_D TO USER_NAME; GRANT LOGMINING TO USER_NAME; GRANT EXECUTE_CATALOG_ROLE TO USER_NAME;
Connectez-vous à la base de données enfichable et exécutez les commandes suivantes:
GRANT CREATE SESSION TO USER_NAME; GRANT SET CONTAINER TO USER_NAME; GRANT SELECT ANY TABLE TO USER_NAME; GRANT SELECT ANY DICTIONARY TO USER_NAME; GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME; GRANT SELECT ON SYS.V_$ARCHIVED_LOG TO USER_NAME; GRANT SELECT ON DBA_SUPPLEMENTAL_LOGGING TO USER_NAME; GRANT SELECT ON DBA_EXTENTS TO USER_NAME;