Por que minha tarefa do AWS DMS falhou ao usar o Binary Reader para Amazon RDS para Oracle?
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
Conteúdo relevante
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 2 anos