Por que minha tarefa do AWS DMS falhou ao usar o Binary Reader para Amazon RDS para Oracle?

4 minuto de leitura
0

Por que minha tarefa do AWS Database Migration Service (AWS DMS) falhou ao usar o Binary Reader para Amazon Relational Database Service (Amazon RDS) para Oracle?

Breve descrição

Durante a fase de captura de dados de alteração (CDC), a Oracle fornece dois métodos para ler os redo logs: Oracle LogMiner e Binary Reader. O Oracle LogMiner é uma interface SQL que acessa os redo logs on-line e arquivados. O Binary Reader é um recurso do AWS DMS que lê e analisa os redo logs diretamente.

Ao usar o Binary Reader para migrações com muitas alterações, há um impacto menor na origem Oracle quando comparado ao uso do Oracle LogMiner. Isso ocorre porque os logs de arquivamento são copiados e depois analisados na instância de replicação. Para migrações que têm muitas alterações, o Binary Reader geralmente tem melhor desempenho de CDC do que o Oracle LogMiner. Certifique-se de fornecer largura de banda da rede suficiente para evitar gargalos no desempenho da rede.

Se os pré-requisitos não forem atendidos ao usar o Binary Reader, você poderá receber dois tipos de erros:

  • Erros de permissões
  • Erros de atributos de conexão extras

Resolução

Erros de permissões

O AWS DMS usa o Binary Reader criando diretórios no banco de dados de origem. Portanto, a conta de usuário do AWS DMS deve ter os privilégios necessários para acessar o endpoint da Oracle de origem e criar os diretórios necessários. Se o AWS DMS não tiver permissões, você verá entradas de log semelhantes a esta:

Mensagens

"[SOURCE_CAPTURE]E: Erro OCI 'ORA-00604: ocorreu um erro no nível 1 de rMeecursive SQL ORA-20900: Caminho inválido usado para o diretório: /rdsdbdata/log/arch ORA-06512: em "RDSADMIN.RDSADMIN", linha 321 ORA-06512: na linha 2' [1022307] (oradcdc_bfilectx.c:164)"

Para resolver esses erros, use o usuário principal do Amazon RDS como usuário do AWS DMS. Os diretórios são criados automaticamente quando uma tarefa do AWS DMS começa a ser executada. Se os diretórios não forem criados, primeiro faça login no banco de dados Oracle usando o usuário principal. Em seguida, execute estes comandos para testar se esses diretórios podem ser criados:

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

Verifique os resultados consultando a tabela 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

Depois de criar os diretórios necessários ONLINELOG_DIR e ARCHIVELOG_DIR, reinicie sua tarefa do AWS DMS.

Erros de atributos de conexão extras

Se você usa o Binary Reader, mas não tem os atributos de conexão extras necessários para sua fonte Oracle, você verá esta entrada de registro:

Mensagens

"[TASK_MANAGER]E: ORA-00604: ocorreu um erro no nível 1 de SQL recursivo ORA-20900: Caminho inválido usado para o diretório: awsdms_dir_test ORA-06512: em "RDSADMIN.RDSADMIN", linha 321 ORA-06512: na linha 2 ; configurações inválidas do banco de dados do Oracle binary reader do RDS, replacePathPrefix deve ser definido como TRUE e usePathPrefix deve ser definido como '/rdsdbdata/log/'; configurações inválidas do banco de dados do Oracle binary reader do RDS, useAlternateFolderForOnline deve ser definido como TRUE; configuração inválida do banco de dados do Oracle binary reader do RDS, oraclePathPrefix não deve estar vazio; configurações inválidas do banco de dados do Oracle binary reader do RDS; falha ao preparar o componente de stream 'st_0_4MGMBIOJCILNOU3UHICCDBCNFQ'.; Não é possível inicializar a subtarefa; Componente de stream 'st_0_4MGMBIOJCILNOU3UHICCDBCNFQ' encerrado [1020418] (replicationtask.c:2680)"

Para usar o Binary Reader para capturar dados de alteração para uma origem do Amazon RDS para Oracle, adicione esses atributos de conexão extras ao endpoint de origem:

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

Informações relacionadas

Privilégios de conta de usuário exigidos em uma origem Oracle gerenciada pela AWS para AWS DMS

Acesso a redo logs on-line e arquivados

Migrar um banco de dados Oracle on-premises para o Amazon RDS para PostgreSQL usando um bystander da Oracle e o AWS DMS

AWS OFICIAL
AWS OFICIALAtualizada há um ano