Diagnostica problemas en las migraciones de Oracle a Cloud SQL para PostgreSQL

En esta página, se enumeran los errores conocidos y los pasos recomendados para solucionar problemas relacionados con lo siguiente:

Errores de los trabajos de migración

Es posible que el proceso de trabajo de migración genere errores durante el tiempo de ejecución.

  • Algunos errores, como una contraseña incorrecta en la base de datos de origen, se pueden recuperar. El trabajo de migración se reanuda automáticamente después de corregir estos errores.
  • Algunos errores son irrecuperables, como los errores en la replicación de datos. Debes reiniciar el trabajo de migración después de corregir estos errores.

Cuando se produce un error, el estado del trabajo de migración cambia a Failed, y el estado secundario refleja el último estado antes de la falla. Para solucionar un error, navega al trabajo de migración que falló para verlo y sigue los pasos que se indican en el mensaje de error. Para ver más detalles sobre el error, navega a Cloud Monitoring con el vínculo del trabajo de migración. Los registros se filtran según la tarea de migración específica.

En la siguiente tabla, encontrarás algunos ejemplos de problemas y cómo resolverlos:

Síntoma Causas posibles Solución
Mensaje de error: Database Migration Service can't set up a tunnel to be connected to the bastion host. El servicio de migración de bases de datos no pudo acceder al host de bastión o este no acepta conexiones. Verifica la configuración del túnel SSH de reenvío en el perfil de conexión de origen y la configuración del servidor de túnel SSH y vuelve a intentarlo.
Mensaje de error: Database Migration Service can't connect to the database o Database Migration Service private connectivity error, cannot connect to the database Database Migration Service no pudo establecer conectividad con la base de datos de Oracle de origen.

Verifica que puedas acceder a la base de datos de origen desde tu proyecto. Verifica la configuración relacionada con tu método de configuración de conectividad de la fuente.

Si se incluye un código de error específico de Oracle, por ejemplo, ORA-12170: TNS:Connect timeout occurred, consulta la documentación de Oracle para obtener más información.

Mensaje de error: Archiving mode is not ARCHIVELOG. Tu base de datos de origen no se ejecuta en el modo ARCHIVELOG. Configura tu base de datos de origen para usar el modo ARCHIVELOG. Para obtener más información, consulta Configura tu base de datos de Oracle de origen.
Mensaje de error: Supplemental logging ("ALL COLUMN LOGGING") isn't turned on for the tables listed below. Tu base de datos de origen no tiene habilitados los datos de registro complementarios. Habilita los datos de registro complementarios y establece su modo en ALL. Para obtener más información, consulta Configura tu base de datos de Oracle de origen.
Mensaje de error: No Archive Log Files were found in the source. Database Migration Service solo lee registros de archivo cerrados y no se encontraron registros en la base de datos de origen.
  1. Ejecuta el siguiente comando en la base de datos de origen para cerrar el archivo de registro actual: ALTER SYSTEM SWITCH LOGFILE.
  2. Vuelve a buscar los registros.

Si la base de datos no tiene operaciones de escritura activas, es posible que debas realizar al menos una operación INSERT para activar la creación de registros.

Mensaje de error: We're missing the necessary permissions to read from the source. La cuenta de usuario de migración en tu base de datos de origen no tiene los permisos necesarios.

Database Migration Service se conecta a tu fuente como la cuenta de usuario que configures en el perfil de conexión de la fuente. Esa cuenta necesita un conjunto específico de permisos (por ejemplo, SELECT ANY TABLE) para leer datos en tu base de datos de origen.

Asegúrate de que la cuenta de usuario de migración tenga los privilegios necesarios. Para obtener más información, consulta Configura tu base de datos de Oracle de origen.

Mensaje de error: Unable to connect to the destination database. Se produjo un problema al conectarse a la base de datos de destino. Verifica que puedas acceder a la base de datos de destino desde tu proyecto. Verifica la configuración relacionada con tu método de configuración de conectividad de destino.
Mensaje de error: The following tables don't exist in the destination database: {table_names}. Las tablas que intentas migrar no existen en la base de datos de destino. Database Migration Service crea la tabla y las definiciones necesarias cuando conviertes tu esquema de origen.
Mensaje de error: password authentication failed for user {username}. El nombre de usuario o la contraseña de la base de datos de destino están mal configurados. Asegúrate de que el perfil de conexión de PostgreSQL de destino esté configurado correctamente con el nombre de usuario y la contraseña correctos.
Mensaje de error: The following tables in the destination database don't have primary keys: {table_names}. Las tablas que se indican en el mensaje de error existen en la base de datos de destino, pero les faltan claves primarias.

Los lugares de trabajo de conversión de Database Migration Service agregan automáticamente claves primarias para las tablas que no las tienen cuando conviertes el esquema.

Si usas espacios de trabajo de conversión heredados, debes crear las claves principales de forma manual en tu destino. Para obtener más información, consulta Lugares de trabajo de conversiones heredados.

Advertencia: The following tables have foreign keys: {table_names}. Las tablas que se indican en el mensaje de error existen en la base de datos de destino, pero tienen claves externas.

Database Migration Service no replica los datos de forma transaccional, por lo que es posible que las tablas se migren fuera de orden. Si hay claves externas y se migra una tabla secundaria que usa una clave externa antes que su tabla superior, es posible que se produzcan errores de replicación.

Para evitar estos problemas de integridad de los datos, omite las claves externas con la opción REPLICATION para el usuario de migración. Para obtener más información, consulta Consideraciones sobre claves externas y activadores.

Mensaje de error: Unable to resume replication as log position is lost. Este error puede ocurrir cuando el proceso de replicación se pausa durante mucho tiempo, lo que genera la pérdida de la posición del registro. Un trabajo de migración no debe detenerse durante más tiempo (o cerca) del período de retención de registros. Si se pierde la posición de registro, debes volver a crear el trabajo de migración.
Mensaje de error: ORA-00942: table or view does not exist. Este error puede ocurrir como resultado de la caché en el servidor de Oracle. Vuelve a crear el usuario de la base de datos para solucionar el problema de almacenamiento en caché.
La tarea de migración permanece en la fase de volcado completo y no avanza a la fase de captura de datos modificados (CDC). Database Migration Service aún está realizando un volcado completo de algunas de las tablas, o bien una o más de ellas no pueden terminar el volcado completo debido a errores.
  • Verifica los errores de la tarea de migración y corrige los errores que se aplican a las tablas o quita las tablas asociadas de la tarea.
  • Verifica los registros de Database Migration Service para ver si hay una actividad de volcado completa en curso y espera a que finalice.

Problemas de conectividad

En esta sección, se enumeran y describen los pasos para solucionar posibles problemas de conectividad de red.

No se puede conectar a la base de datos de destino: EOF

Cuando se ejecuta una prueba de conectividad, se muestra el mensaje de error [DATABASE] unable to connect to the destination database: EOF.

Posible causa: El archivo adjunto del servicio está configurado de forma incorrecta.

Qué puedes probar: Asegúrate de que enable_proxy_protocol esté configurado como false en el archivo de configuración de Terraform del archivo adjunto del servicio. El protocolo de proxy solo es compatible con servidores HTTP, como NGINX y Apache.

Cuando se usa gcloud para crear la configuración de Private Service Connect, el protocolo de proxy se inhabilita de forma predeterminada.

Se agotó el tiempo de espera de la conexión, se rechazó la conexión

La ejecución de la prueba de conectividad falla o se agota el tiempo de espera. Es probable que esto se deba a una configuración de enrutamiento incorrecta en la configuración de Private Service Connect. Este problema puede deberse a varios motivos.

Posible causa: Falta una regla de firewall que permita que el rango de CIDR de NAT de Private Service Connect acceda a la subred de Private Service Connect en la que se encuentra el bastión, específicamente, la interfaz nic0 de la VM de bastión.

Qué puedes probar: Asegúrate de que la política de tu organización no restrinja las reglas de firewall internas, como la regla de firewall psc_sp_in_fw definida en la secuencia de comandos de Terraform de ejemplo para configurar la conectividad de IP privada de destino para instancias de Cloud SQL que no están habilitadas para PSC.

Causa posible: El proxy no está disponible. No hay un objeto de escucha en el puerto proporcionado y, por lo tanto, la conexión se bloquea.

Qué puedes probar: Puedes intentar establecer una conexión SSH a la VM de bastión y buscar el proxy con el siguiente comando:

  • netstat -tunalp | grep PORT

Analiza las respuestas al comando:

  • Si obtienes una respuesta vacía, significa que el proxy no está disponible. Intenta ejecutar los siguientes comandos:

    sudo su; cd / y, luego, ejecuta sudo dpkg -s dante-server para verificar si el servidor Dante está instalado:

  • Si el proxy se está ejecutando y está escuchando en el puerto proporcionado, intenta abrir una conexión a él de la siguiente manera:

    1. Instala el cliente de PostgreSQL:

      sudo apt-get install postgresql-client

    2. Conéctate a la base de datos de PostgreSQL:

      psql -h 127.0.0.1 -p PORT -U DBUSERNAME -W (se te pedirá que ingreses la contraseña).

      Reemplaza lo siguiente:

      • PORT: Es el número de puerto de la base de datos.
      • DBUSERNAME: Es el nombre de usuario que se usa para conectarse a la base de datos de PostgreSQL.
    3. Instala el cliente telnet:

      sudo apt-get install telnet

    4. Conéctate al cliente telnet:

      telnet 127.0.0.1 PORT

      Reemplaza PORT por el número de puerto de la base de datos.

    Según los resultados de los comandos, ocurrirá lo siguiente:

    • Si los comandos no abren una conexión, intenta consultar los registros del proxy para ubicar la causa raíz. La causa raíz puede variar según la configuración de la instancia de Cloud SQL.

    • Si la conexión se abre con telnet, pero se bloquea en el cliente, es probable que el problema sea el enrutamiento de la dirección IP del bastión. En la VM, escribe ip route en la terminal. Comprueba si puedes encontrar una regla de enrutamiento que enrute las conexiones a la dirección IP privada de la instancia de Cloud SQL con el nic secundario (nic1, la dirección IP DB_SUBNETWORK_GATEWAY).

Causa posible: El adjunto de servicio no acepta la conexión de extremo que proviene de Database Migration Service. El archivo adjunto del servicio contiene una lista de los proyectos aceptados, y el proyecto del servicio de migración de bases de datos no se incluye en la lista.

Qué puedes probar: Para resolver el problema, prueba una de las siguientes opciones:

  • En la consola de Google Cloud, ve a Private Service Connect.

    Ir a Private Service Connect

    En la pestaña Servicios publicados, acepta la conexión de Database Migration Service para el archivo adjunto del servicio (si está pendiente).

  • Agrega el proyecto solicitante a los proyectos de la lista de entidades permitidas en el adjunto de servicio (si se rechaza).

    Si el problema persiste, vuelve a crear el perfil de conexión.

  • Borra el perfil de conexión asociado con la conectividad de Private Service Connect y vuelve a crearlo.

Soluciona problemas de errores de Oracle SCAN

En esta sección, se describen los posibles problemas que podrías tener cuando migres desde fuentes de Oracle Real Application Clusters (RAC) con la función Nombre de acceso de cliente único (SCAN).

No se puede establecer la conectividad a una base de datos de Oracle SCAN

La ejecución de la prueba de conectividad falla o se agota el tiempo de espera.

Posible causa: Es posible que estés intentando establecer conectividad directamente con tu base de datos de origen de Oracle SCAN. Database Migration Service no admite la conectividad directa a bases de datos con la función SCAN en entornos de Oracle RAC.

Qué puedes probar: Para resolver el problema, prueba una de las siguientes opciones:

  • Conéctate directamente a uno de los nodos.

  • Usa el Oracle Connection Manager.

  • Crea una configuración de conectividad privada con una solución de proxy inverso, como HAProxy.