Diagnosticar problemas nas migrações do Oracle para o Cloud SQL para PostgreSQL

Esta página lista erros conhecidos e etapas de solução de problemas recomendadas para:

Erros de jobs de migração

O processo de job de migração pode apresentar erros durante o tempo de execução.

  • Alguns erros, como uma senha incorreta no banco de dados de origem, são recuperáveis. O job de migração será retomado automaticamente após a correção desses erros.
  • Alguns erros não podem ser recuperados, como erros na replicação de dados. É necessário reiniciar o job de migração depois que esses erros forem corrigidos.

Quando ocorre um erro, o status do job de migração muda para Failed, e o substatus reflete o último status antes da falha. Para resolver um problema, acesse o job de migração com falha para conferir o erro e siga as etapas descritas na mensagem de erro. Para conferir mais detalhes sobre o erro, acesse o Cloud Monitoring usando o link no job de migração. Os registros são filtrados para o job de migração específico.

Na tabela a seguir, confira alguns exemplos de problemas e como resolvê-los:

Sintoma Causas possíveis O que você pode tentar
Mensagem de erro: Database Migration Service can't set up a tunnel to be connected to the bastion host O serviço de migração de banco de dados não conseguiu acessar o Bastion Host ou o Bastion Host não está aceitando conexões. Verifique as configurações do túnel SSH de encaminhamento no perfil de conexão de origem e na configuração do servidor de túnel SSH e tente novamente.
Mensagem de erro: Database Migration Service can't connect to the database ou Database Migration Service private connectivity error, cannot connect to the database. O Database Migration Service não conseguiu estabelecer conectividade com o banco de dados Oracle de origem.

Verifique se você consegue acessar o banco de dados de origem no seu projeto. Verifique as configurações relacionadas ao seu método de configuração de conectividade de origem.

Se houver um código de erro específico do Oracle incluído, por exemplo, ORA-12170: TNS:Connect timeout occurred, consulte a documentação do Oracle para mais informações.

Mensagem de erro: Archiving mode is not ARCHIVELOG O banco de dados de origem não está sendo executado no modo ARCHIVELOG. Configure o banco de dados de origem para usar o modo ARCHIVELOG. Para mais informações, consulte Configurar seu banco de dados Oracle de origem.
Mensagem de erro: Supplemental logging ("ALL COLUMN LOGGING") isn't turned on for the tables listed below O banco de dados de origem não tem dados de registro complementares ativados. Ative os dados de registro complementares e defina o modo como ALL. Para mais informações, consulte Configurar seu banco de dados Oracle de origem.
Mensagem de erro: No Archive Log Files were found in the source O Database Migration Service só lê registros de arquivo fechados, e nenhum registro foi encontrado no banco de dados de origem.
  1. Execute o comando a seguir no banco de dados de origem para fechar o arquivo de registro atual: ALTER SYSTEM SWITCH LOGFILE.
  2. Tente encontrar os registros novamente.

Se o banco de dados não tiver operações de gravação ativas, talvez seja necessário realizar pelo menos uma operação INSERT para acionar a criação de registros.

Mensagem de erro: We're missing the necessary permissions to read from the source A conta de usuário de migração no seu banco de dados de origem não tem as permissões necessárias.

O Database Migration Service se conecta à origem como a conta de usuário que você configura no perfil de conexão de origem. Essa conta precisa de um conjunto específico de permissões (por exemplo, SELECT ANY TABLE) para ler dados no banco de dados de origem.

Verifique se a conta de usuário de migração tem os privilégios necessários. Para mais informações, consulte Configurar seu banco de dados Oracle de origem.

Mensagem de erro: Unable to connect to the destination database Ocorreu um problema ao se conectar ao banco de dados de destino. Verifique se você consegue acessar o banco de dados de destino no seu projeto. Verifique as configurações relacionadas ao método de configuração de conectividade de destino.
Mensagem de erro: The following tables don't exist in the destination database: {table_names} As tabelas listadas que você está tentando migrar não existem no banco de dados de destino. O Database Migration Service cria a tabela e as definições necessárias quando você converte o esquema de origem.
Mensagem de erro: password authentication failed for user {username} O nome de usuário ou a senha do banco de dados de destino estão incorretamente configurados. Verifique se o perfil de conexão de destino do PostgreSQL está configurado corretamente com o nome de usuário e a senha corretos.
Mensagem de erro: The following tables in the destination database don't have primary keys: {table_names} As tabelas listadas na mensagem de erro existem no banco de dados de destino, mas não têm chaves primárias.

Os espaços de trabalho de conversão do Database Migration Service adicionam automaticamente chaves primárias para tabelas que não têm essas chaves quando você converte o esquema.

Se você usa espaços de trabalho de conversão legados, é necessário criar as chaves principais manualmente no destino. Para mais informações, consulte Espaços de trabalho de conversão legados.

Aviso: The following tables have foreign keys: {table_names}. As tabelas listadas na mensagem de erro existem no banco de dados de destino, mas têm chaves externas.

O Database Migration Service não replica dados de forma transacional. Por isso, as tabelas podem ser migradas fora de ordem. Se as chaves estrangeiras estiverem presentes e uma tabela filha que usa uma chave estrangeira for migrada antes da mãe, você poderá encontrar erros de replicação.

Para evitar esses problemas de integridade de dados, pule as chaves externas usando a opção REPLICATION para o usuário da migração. Para mais informações, consulte Considerações sobre gatilhos e chaves externas.

Mensagem de erro: Unable to resume replication as log position is lost Esse erro pode ocorrer quando o processo de replicação é pausado por muito tempo, o que leva à perda da posição do registro. Um job de migração não pode ser pausado por mais tempo (ou próximo) do período de retenção de registros. Se a posição do registro for perdida, será necessário recriar o job de migração.
Mensagem de erro: ORA-00942: table or view does not exist Esse erro pode ocorrer como resultado do armazenamento em cache no servidor Oracle. Recrie o usuário do banco de dados para corrigir o problema de armazenamento em cache.
O job de migração permanece na fase de despejo completo e não avança para a fase de captura de dados alterados (CDC). O Database Migration Service ainda está realizando um despejo completo para algumas das tabelas, ou uma ou mais das tabelas não consegue concluir o despejo completo devido a erros.
  • Verifique os erros do job de migração e corrija os que se aplicam às tabelas ou remova as tabelas associadas do job.
  • Verifique os registros do Database Migration Service para verificar se há uma atividade de despejo completa em andamento e aguarde até que ela seja concluída.

Problemas de conectividade

Esta seção lista e descreve as etapas de solução de problemas de possíveis problemas de conectividade de rede.

Não foi possível se conectar ao banco de dados de destino: EOF

A execução de um teste de conectividade retorna a mensagem de erro [DATABASE] unable to connect to the destination database: EOF.

Causa possível:o anexo de serviço está configurado incorretamente.

Coisas a tentar:verifique se enable_proxy_protocol está definido como false no arquivo de configuração do Terraform do anexo do serviço. O protocolo de proxy é aceito apenas para servidores HTTP, como NGINX e Apache.

Ao usar gcloud para criar a configuração do Private Service Connect, o protocolo de proxy é desativado por padrão.

Tempo limite de conexão, conexão recusada

A execução do teste de conectividade falha ou expira. Isso provavelmente é causado por um roteamento configurado incorretamente na configuração do Private Service Connect. Esse problema pode ter vários motivos.

Possível causa:há uma regra de firewall ausente que permite que o intervalo CIDR do Private Service Connect acesse a sub-rede do Private Service Connect em que o Bastion está localizado, especificamente a interface nic0 da VM do Bastion.

Coisas a tentar:verifique se a política da sua organização não restringe regras de firewall internas, como a regra psc_sp_in_fw definida no exemplo de script do Terraform para configurar a conectividade de IP privado de destino para instâncias do Cloud SQL que não têm PSC ativada.

Causa possível:o proxy está inativo. Não há um listener na porta fornecida, portanto, a conexão trava.

Coisas a tentar:é possível tentar estabelecer uma conexão SSH com a VM de bastião e procurar o proxy usando o seguinte comando:

  • netstat -tunalp | grep PORT

Analise as respostas ao comando:

  • Se você receber uma resposta vazia, o proxy está inativo. Tente executar os seguintes comandos:

    sudo su; cd / e verifique se o servidor Dante está instalado executando sudo dpkg -s dante-server:

    • Se o proxy estiver instalado, você vai receber a seguinte mensagem:

      Status: install ok installed

    • Se o proxy não estiver instalado, o problema provavelmente é um roteador ausente. Adicione um roteador e verifique se é possível fazer o download do proxy executando apt-get install dante-server.

  • Se o proxy estiver em execução e estiver escutando na porta fornecida, tente abrir uma conexão com ele fazendo o seguinte:

    1. Instale o cliente PostgreSQL:

      sudo apt-get install postgresql-client

    2. Conecte-se ao banco de dados PostgreSQL:

      psql -h 127.0.0.1 -p PORT -U DBUSERNAME -W (você vai receber uma solicitação para inserir a senha).

      Substitua:

      • PORT: o número da porta do banco de dados.
      • DBUSERNAME: o nome de usuário usado para se conectar ao banco de dados PostgreSQL.
    3. Instale o cliente telnet:

      sudo apt-get install telnet

    4. Conecte-se ao cliente telnet:

      telnet 127.0.0.1 PORT

      Substitua PORT pelo número da porta do banco de dados.

    Dependendo dos resultados dos comandos:

    • Se os comandos não abrirem uma conexão, tente verificar os registros do proxy para localizar a causa raiz. A causa raiz pode variar dependendo da configuração da instância do Cloud SQL.

    • Se a conexão for aberta usando o telnet, mas travar no cliente, o problema provavelmente será o roteamento do endereço IP do Bastion. Na VM, digite ip route no terminal. Verifique se é possível localizar uma regra de roteamento que roteie as conexões para o endereço IP particular da instância do Cloud SQL usando o nic secundário (nic1, o endereço IP DB_SUBNETWORK_GATEWAY).

Causa possível:o anexo de serviço não aceita a conexão de endpoint proveniente do Database Migration Service. O anexo de serviço contém uma lista de projetos aceitos, e o projeto do serviço de migração de banco de dados não está incluído na lista.

Coisas a tentar:para resolver o problema, tente uma das seguintes opções:

  • No Console do Google Cloud, acesse Private Service Connect.

    Acessar a página "Private Service Connect"

    Na guia Serviços publicados, aceite a conexão do Database Migration Service para o anexo de serviço (se estiver pendente).

  • Adicione o projeto solicitante à lista de permissões no anexo de serviço (se ele for rejeitado).

    Se isso não resolver o problema, recrie o perfil de conexão.

  • Exclua o perfil de conexão associado à conectividade do Private Service Connect e recrie-o.

Resolver erros do Oracle SCAN

Esta seção descreve possíveis problemas que você pode ter ao migrar de origens do Oracle Real Application Clusters (RAC) usando o recurso Single Client Access Name (SCAN).

Não foi possível estabelecer conectividade com um banco de dados SCAN do Oracle.

A execução do teste de conectividade falha ou expira.

Causa possível:talvez você esteja tentando estabelecer a conectividade diretamente com o banco de dados de origem do Oracle SCAN. O Database Migration Service não oferece suporte à conectividade direta com bancos de dados que usam o recurso SCAN em ambientes do Oracle RAC.

Coisas a tentar:para resolver o problema, tente uma das seguintes opções:

  • Conecte-se diretamente a um dos nós.

  • Use o Oracle Connection Manager.

  • Crie uma configuração de conectividade privada usando uma solução de proxy reverso, como o HAProxy.