Migration de base de données d’Oracle vers AWS Redshift à l’aide d’AWS DMS
Pour répliquer vos données à l’aide de DMS avec CDC, vous devez d’abord préparer votre base de données Oracle:
- Installer logminer dans la base de données Oracle et configurez la destination des fichiers journaux de rétablissement.
- Activez le mode ArchiveLog.
- Configurer le enregistrement supplémentaire dont DMS a besoin pour capturer les modifications de la base de données source Oracle.
- Assurez-vous que la connexion Oracle que vous utilisez dans votre point de terminaison source a le autorisations nécessaires.
Nous allons parcourir chaque point et préparer notre base de données source pour la réplication des données.
En tant que sysdba, installez le package logminer (s’il n’est pas installé par défaut installé) à partir du chemin suivant:
@ORACLE_HOME/rdbms/admin/dbmslm.sql
vous pouvez simplement vérifier s’il est déjà disponible en utilisant:
desc dbms_logmnr
Pour créer le dictionnaire logminer, ouvrez la base de données et mettez la base de données en état de repos. Ensuite, le dictionnaire peut être créé à l’aide de l’instruction suivante:
ALTER DATABASE OPEN;
ALTER DATABASE QUIESCE RESTRICTED;
EXEC DBMS_LOGSTDBY.BUILD;
Après avoir créé le dictionnaire LogMiner, recherchez le dernier journal d’archivage. Ce fichier doit être le point de départ de la récupération. La requête SQL suivante peut être utilisée pour rechercher le dernier journal archivé:
select
name,
to_char(completion_time,'yyyy/mm/dd hh24:mi') completion_time
from
v$archived_log
order by
completion_time;
Et la sortie sera similaire à
NAME COMPLETION_TIME
------------------------------------ ----------------
/oracle/appsdb/arch/appsdb_1_248.dbf 2003/09/30 14:55
/oracle/appsdb/arch/appsdb_1_564.dbf 2003/10/03 09:54
/oracle/appsdb/arch/appsdb_1_568.dbf 2003/10/03 12:08
Exécutez la commande suivante pour définir les journaux sur Mode ARCHIVELOGALTER database ARCHIVELOG;
Lors de l’activation du mode d’archivage dans la base de données, si vous obtenez une erreur en dessous, vous devez effectuer la résolution suivante.
SQL> alter database archivelog;
alter database archivelog
*
ERROR at line 1:
ORA-01126: database must be mounted in this instance and not open in any instance
Résolution
Suivez ce lien pour résoudre votre erreur.
Activez la journalisation supplémentaire pour la base de données en exécutant la commande suivante.
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
Cette option spécifie que lorsqu’une ligne est mise à jour, toutes les colonnes de cette ligne (à l’exception des LOB, LONGS
, et ADT
s) sont placés dans le fichier de journalisation.
Pour utiliser une base de données Oracle comme source dans AWS DMS, accordez les privilèges suivants à l’utilisateur Oracle spécifié dans les paramètres de connexion du point de terminaison Oracle.
SELECT ANY TRANSACTION
SELECT on V_$ARCHIVED_LOG
SELECT on V_$LOG
SELECT on V_$LOGFILE
SELECT on V_$DATABASE
SELECT on V_$THREAD
SELECT on V_$PARAMETER
SELECT on V_$NLS_PARAMETERS
SELECT on V_$TIMEZONE_NAMES
SELECT on V_$TRANSACTION
SELECT on ALL_INDEXES
SELECT on ALL_OBJECTS
SELECT on DBA_OBJECTS – Required if the Oracle version is earlier than 11.2.0.3.
Pour accéder aux journaux de rétablissement de logminer, accordez les privilèges suivants à l’utilisateur Oracle.
CREATE SESSION
EXECUTE on DBMS_LOGMNR
SELECT on V_$LOGMNR_LOGS
SELECT on V_$LOGMNR_CONTENTS
GRANT LOGMINING – Required only if the Oracle version is 12c or later.