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

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

Erros de trabalho de migração

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

  • Alguns erros, como uma senha incorreta no banco de dados de origem, são recuperáveis. A tarefa de migração será retomada automaticamente após a correção desses erros.
  • Alguns erros são irrecuperáveis, como erros na replicação de dados. Você deve reiniciar o trabalho de migração após a correção desses erros.

Quando ocorre um erro, o status da tarefa de migração muda para Failed e o substatus reflete o último status antes da falha. Para solucionar um erro, navegue até a tarefa de migração com falha para visualizá-la e siga as etapas descritas na mensagem de erro. Para ver mais detalhes sobre o erro, navegue até o Cloud Monitoring usando o link na tarefa de migração. Os logs são filtrados para a tarefa de migração específica.

Na tabela a seguir, você pode encontrar alguns exemplos de problemas e como eles podem ser resolvidos:

Sintoma Possíveis causas Coisas para 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 do 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 a partir do 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 obter mais informações.

Mensagem de erro: Archiving mode is not ARCHIVELOG . Seu banco de dados de origem não está sendo executado no modo ARCHIVELOG . Configure seu banco de dados de origem para usar o modo ARCHIVELOG . Para obter 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 . Seu banco de dados de origem não tem dados de log suplementares habilitados. Habilite dados de log suplementares e defina seu modo como ALL . Para obter 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 lê apenas logs de arquivo fechados e nenhum log foi encontrado no banco de dados de origem.
  1. Execute o seguinte comando no banco de dados de origem para fechar o arquivo de log atual: ALTER SYSTEM SWITCH LOGFILE .
  2. Tente encontrar os logs novamente.

Se o banco de dados não tiver nenhuma operação de gravação ativa, talvez seja necessário executar pelo menos uma operação INSERT para acionar a criação do log.

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 Serviço de Migração de Banco de Dados se conecta à sua origem como a conta de usuário configurada 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 seu banco de dados de origem.

Certifique-se de que a conta de usuário da migração tenha os privilégios necessários. Para obter 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 conectar ao banco de dados de destino. Verifique se você consegue acessar o banco de dados de destino a partir do seu projeto. Verifique as configurações relacionadas ao seu 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 seu 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 configurados incorretamente. Certifique-se de que o perfil de conexão do PostgreSQL de destino esteja 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 possuem 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 as têm quando você converte o esquema.

Se você usar espaços de trabalho de conversão legados, precisará criar as chaves primárias manualmente no seu destino. Para obter 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 estrangeiras.

O Serviço de Migração de Banco de Dados não replica dados de forma transacional, portanto, as tabelas podem ser migradas fora de ordem. Se houver chaves estrangeiras presentes e uma tabela filha que usa uma chave estrangeira for migrada antes da tabela pai, você poderá encontrar erros de replicação.

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

Mensagem de erro: Unable to resume replication as log position is lost . Esse erro pode ocorrer quando o processo de replicação é pausado por um longo período, levando à perda da posição do log. Uma tarefa de migração não deve ser pausada por mais tempo (ou próximo) do período de retenção do log. Se a posição do log for perdida, você precisará recriar a tarefa de migração.
Mensagem de erro: ORA-00942: table or view does not exist . Esse erro pode ocorrer como resultado do cache no servidor Oracle. Recrie o usuário do banco de dados para corrigir o problema de cache.
O trabalho de migração permanece na fase de despejo completo e não avança para a fase de captura de dados alterados (CDC). O Serviço de Migração de Banco de Dados ainda está executando o despejo completo para algumas tabelas, ou uma ou mais tabelas não conseguem concluir o despejo completo devido a erros.
  • Verifique os erros do trabalho de migração e corrija os erros que se aplicam às tabelas ou remova as tabelas associadas do trabalho.
  • Verifique os logs do Serviço de Migração de Banco de Dados para ver se há atividade de despejo completo 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 para possíveis problemas de conectividade de rede.

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

Executar um teste de conectividade retorna a mensagem de erro [DATABASE] unable to connect to the destination database: EOF .

Possível causa: O anexo de serviço está configurado incorretamente.

O que tentar: Certifique-se de que enable_proxy_protocol esteja definido como false no arquivo de configuração do Terraform anexado ao serviço . O protocolo proxy é compatível apenas com servidores HTTP, como NGINX e Apache.

Ao usar gcloud para criar a configuração do Private Service Connect, o protocolo proxy é desabilitado 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 roteamento mal configurado na configuração do Private Service Connect. Pode haver vários motivos para esse problema.

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

O que tentar: certifique-se de que a política da sua organização não restrinja as regras de firewall internas, como a regra de firewall psc_sp_in_fw definida no script Terraform de exemplo para configurar a conectividade de IP privado de destino para instâncias do Cloud SQL não habilitadas para PSC .

Possível causa: O proxy está inativo. Não há ouvinte na porta fornecida e, portanto, a conexão trava.

Coisas para tentar: Você pode tentar estabelecer uma conexão SSH com a VM bastion 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ê receberá a seguinte mensagem:

      Status: install ok installed

    • Se o proxy não estiver instalado, o problema provável é a ausência de um roteador. Adicione um roteador e verifique se é possível baixar o proxy executando apt-get install dante-server .

  • Se o proxy estiver em execução e 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ê será solicitado a digitar a senha).

      Substitua o seguinte:

      • PORT : número da porta do banco de dados.
      • DBUSERNAME : o nome de usuário usado para 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 conseguirem abrir uma conexão, tente consultar os logs 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 via telnet, mas travar no cliente, o problema provável é o roteamento do endereço IP do bastion. Na sua VM, digite ip route no terminal. Veja se você consegue localizar uma regra de roteamento que roteie conexões para o endereço IP privado da instância do Cloud SQL usando o nic secundário ( nic1 , o endereço IP DB_SUBNETWORK_GATEWAY ).

Possível causa: O anexo de serviço não aceita a conexão de endpoint proveniente do Serviço de Migração de Banco de Dados. 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 para tentar: Para resolver o problema, tente uma das seguintes opções:

  • No Google Cloud console, vá para Private Service Connect .

    Acesse o Private Service Connect

    Na guia Serviços publicados , aceite a conexão do Serviço de Migração de Banco de Dados para seu anexo de serviço (se estiver pendente).

  • Adicione o projeto solicitante aos projetos permitidos no anexo de serviço (se 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.

Solucionar 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 é possível estabelecer conectividade com um banco de dados Oracle SCAN

A execução do teste de conectividade falha ou o tempo limite é atingido.

Possível causa: Você pode estar tentando estabelecer conectividade diretamente com seu banco de dados de origem Oracle SCAN. O Database Migration Service não oferece suporte à conectividade direta com bancos de dados usando o recurso SCAN em ambientes Oracle RAC.

Coisas para 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.