Perché la mia attività AWS DMS non è riuscita quando ho utilizzato Binary Reader per Amazon RDS per Oracle?

4 minuti di lettura
0

Perché la mia attività su AWS Database Migration Service (AWS DMS) non è riuscita quando ho utilizzato Binary Reader for Amazon Relational Database Service (Amazon RDS) per Oracle?

Breve descrizione

Durante la fase di acquisizione dei dati delle modifiche (CDC), Oracle fornisce due metodi per leggere i redo log: Oracle LogMiner e lettore binario. Oracle LogMiner è un'interfaccia SQL che accede ai redo log online e archiviati. Binary Reader è una funzionalità AWS DMS che legge e analizza direttamente i redo log.

Quando si utilizza Binary Reader per migrazioni con molte modifiche, l'impatto sull'origine Oracle è inferiore rispetto all'utilizzo di Oracle LogMiner. Questo perché i log di archivio vengono copiati e quindi analizzati sull'istanza di replica. Per le migrazioni che presentano molte modifiche, Binary Reader di solito offre prestazioni CDC migliori rispetto a Oracle LogMiner. Assicurati di fornire una larghezza di banda di rete sufficiente per evitare problemi nelle prestazioni della rete.

Se i prerequisiti non vengono soddisfatti quando usi Binary Reader, puoi ricevere due tipi di errori:

  • Errori relativi alle autorizzazioni
  • Errori aggiuntivi relativi agli attributi di connessione

Risoluzione

Errori relativi alle autorizzazioni

AWS DMS utilizza Binary Reader per creare directory nel database di origine. Pertanto, l'account utente AWS DMS deve disporre dei privilegi necessari per accedere all'endpoint Oracle di origine e creare le directory necessarie. Se AWS DMS non dispone di autorizzazioni, vengono visualizzate voci di registro simili a questa:

Messaggi

"[SOURCE_CAPTURE]E: Errore OCI 'ORA-00604: si è verificato un errore al livello 1 di rMeecursive SQL ORA-20900: Percorso non valido utilizzato per la directory: /rdsdbdata/log/arch ORA-06512: a "RDSADMIN.RDSADMIN", riga 321 ORA-06512: alla riga 2' [1022307] (oradcdc_bfilectx.c:164)"

Per risolvere questi errori, utilizza l'utente principale di Amazon RDS come utente AWS DMS. Le directory vengono create automaticamente all'avvio di un'attività AWS DMS. Se le directory non vengono create, accedi prima al database Oracle utilizzando l'utente principale. Quindi, esegui questi comandi per verificare se è possibile creare queste directory:

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

Controlla i risultati interrogando la tabella 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

Dopo aver creato le directory richieste ONLINELOG_DIR e ARCHIVELOG_DIR, riavvia l'attività di AWS DMS.

Errori aggiuntivi relativi agli attributi di connessione

Se usi Binary Reader ma non hai gli attributi di connessione aggiuntivi necessari per la tua sorgente Oracle, vedrai questa voce di registro:

Messaggi

"[TASK_MANAGER]E: ORA-00604: si è verificato un errore a SQL ricorsivo di livello 1 ORA-20900: Percorso non valido utilizzato per la directory: awsdms\dir_test ORA-06512: in "RDSADMIN. RDSADMIN", riga 321 ORA-06512: alla riga 2 ; Impostazioni del lettore binario RDS Oracle non valide, replacePathPrefix deve essere impostato su TRUE e usePathPrefix deve essere impostato su '/rdsdbdata/log/'; Impostazioni del lettore binario RDS Oracle non valide, useAlternateFolderForOnline deve essere impostato su TRUE; Impostazioni non valide del db del lettore binario RDS Oracle, oraclePathPrefix non deve essere vuoto; Impostazioni non valide del db del lettore binario RDS Oracle; Fallimento nella preparazione del componente stream 'st_0_4MGMBIOJCILNOU3UHICCDBCNFQ'. Impossibile inizializzare il sottotask; Il componente di flusso 'st\0_4MGMBIOJCILNOU3UHICCDBCNFQ' è terminato [1020418] (replicationtask.c:2680)"

Per utilizzare Binary Reader per acquisire i dati di modifica per una fonte Amazon RDS for Oracle, aggiungi questi attributi di connessione aggiuntivi all'endpoint di origine:

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

Informazioni correlate

Privilegi dell'account utente richiesti su una fonte Oracle gestita da AWS per AWS DMS

Accesso ai redo log online e archiviati

Esegui la migrazione di un database Oracle locale su Amazon RDS per PostgreSQL utilizzando un bystander Oracle e AWS DMS

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa