Pourquoi ma tâche AWS DMS a-t-elle échoué lors de l'utilisation de Binary Reader pour Amazon RDS for Oracle ?

Dernière mise à jour : 25/11/2022

Pourquoi ma tâche AWS Database Migration Service (AWS DMS) a-t-elle échoué lors de l'utilisation de Binary Reader pour Amazon Relational Database Service (Amazon RDS) for Oracle ?

Brève description

Au cours de la phase de capture des modifications des données (CDC), Oracle fournit deux méthodes pour lire les journaux redo : Oracle LogMiner et Binary Reader. L'Oracle LogMiner est une interface SQL qui accède aux journaux redo en ligne et archivés. Le lecteur binaire est une fonctionnalité AWS DMS qui lit et analyse directement les journaux redo.

Lorsque vous utilisez Binary Reader pour des migrations comportant de nombreuses modifications, l'impact sur la source Oracle est moindre que celui d'Oracle LogMiner. Cela est dû au fait que les journaux d'archive sont copiés puis analysés sur l'instance de réplication. Pour les migrations qui ont un volume élevé de modifications, Binary Reader offre généralement de meilleures performances CDC qu'Oracle LogMiner. Veillez à allouer une bande passante du réseau suffisante pour éviter les goulots d'étranglement des performances réseau.

Si les prérequis ne sont pas respectés lors de l'utilisation de Binary Reader, vous pouvez recevoir deux types d'erreurs :

  • Erreurs d'autorisations
  • Erreurs d'attribut de connexion supplémentaires

Solution

Erreurs d'autorisations

AWS DMS utilise Binary Reader en créant des répertoires sur la base de données source. Par conséquent, le compte utilisateur AWS DMS doit disposer des privilèges requis pour accéder au point de terminaison Oracle source et créer les répertoires nécessaires. Si AWS DMS ne dispose pas des autorisations nécessaires, vous voyez des entrées de journal similaires à ce qui suit:

Messages

"[SOURCE_CAPTURE ]E: OCI error 'ORA-00604: Une erreur s'est produite at rMeecursive SQL level 1 ORA-20900: Chemin invalide utilisé pour le répertoire /rdsdbdata/log/arch ORA-06512: at "RDSADMIN.RDSADMIN", line 321 ORA-06512: at line 2' [1022307] (oradcdc_bfilectx.c:164)"

Pour résoudre ces erreurs, utilisez l'utilisateur principal d'Amazon RDS en tant qu'utilisateur AWS DMS. Les répertoires sont créés automatiquement lorsqu'une tâche AWS DMS commence à s'exécuter. Si les répertoires ne sont pas créés, connectez-vous à la base de données Oracle à l'aide de l'utilisateur principal. Exécutez ensuite les commandes suivantes pour tester si ces répertoires peuvent être créés:

SQL> exec rdsadmin.rdsadmin_master_util.create_archivelog_dir; 
SQL> exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;

Vérifiez les résultats en interrogeant la table all_directories :

SQL> select directory_path from all_directories where directory_name in ('ONLINELOG_DIR','ARCHIVELOG_DIR');
DIRECTORY_PATH
--------------------------------------------------------------------------------
/rdsdbdata/log/arch
/rdsdbdata/log/onlinelog

Une fois que vous avez créé les répertoires obligatoires ONLINELOG_DIR et ARCHIVELOG_DIR, redémarrez votre tâche AWS DMS.

Erreurs d'attribut de connexion supplémentaires

Si vous utilisez Binary Reader, mais que les attributs de connexion supplémentaires nécessaires sont manquants pour votre source Oracle, vous voyez l'entrée de journal suivante:

Messages

"[TASK_MANAGER ]E: ORA-00604: Une erreur s'est produite lors de la récurrence SQL level 1 ORA-20900: Chemin invalide utilisé pour le répertoire : awsdms_dir_test ORA-06512: at "RDSADMIN.RDSADMIN", line 321 ORA-06512: at line 2 ; Invalid RDS Oracle binary reader db settings, replacePathPrefix doit être défini comme VRAI and usePathPrefix should be set to '/rdsdbdata/log/'; Invalide RDS Oracle binary reader db settings, useAlternateFolderForOnline doivent être défini comme VRAI; Invalid RDS Oracle binary reader db setting, oraclePathPrefix ne doit pas être vide; Invalid RDS Oracle binary reader db settings; Échec lors de la préparation du composant de flux'st_0_4MGMBIOJCILNOU3UHICCDBCNFQ'.; Impossible d'initialiser la sous-tâche; Stream component 'st_0_4MGMBIOJCILNOU3UHICCDBCNFQ' terminated [1020418] (replicationtask.c:2680)"

Pour utiliser Binary Reader afin de capturer les modifications des données pour une source Amazon RDS for Oracle, ajoutez les attributs de connexion supplémentaires suivants au point de terminaison source :

useLogMinerReader=N;useBfile=Y;replacePathPrefix=true;usePathPrefix=/rdsdbdata/log/;useAlternateFolderForOnline=true;oraclePathPrefix=/rdsdbdata/db/ORCL_A/;accessAlternateDirectly=false