¿Cómo soluciono los errores “ERROR: No tables were found at task initialization” (ERROR: No se han encontrado tablas en la inicialización de la tarea) en mi tarea de AWS DMS cuando sí hay tablas en la base de datos de origen?

Última actualización: 27-07-2022

He recibido el error “ERROR: No tables were found at task initialization” (ERROR: No se encontraron tablas en la inicialización de la tarea) cuando intenté migrar mis datos mediante AWS Database Migration Service (AWS DMS). Sin embargo, las tablas están presentes en mi base de datos de origen. ¿Por qué he recibido este error y cómo puedo resolver el problema?

Descripción corta

Existen varios motivos por los que puede recibir el error “No tables were found at task initialization” (No se encontraron tablas al inicializar la tarea), según el motor de base de datos que esté utilizando. Algunos motores de bases de datos que AWS DMS admite para usarlos como origen distinguen entre mayúsculas y minúsculas, como Oracle o DB2. Por lo tanto, cuando usa Oracle o DB2 como origen de AWS DMS, los nombres de las tablas, los nombres de las vistas y los nombres de las columnas deben usar MAYÚSCULAS.

Comparativamente, los motores de bases de datos como MySQL y PostgreSQL usan MINÚSCULAS para todos los objetos, de forma predeterminada. Para obtener más información, consulte Uso de filtros de origen.

Las reglas de asignación y la configuración de los puntos de conexión de AWS DMS se diseñaron para funcionar con una variedad de motores de origen, por eso distinguen entre mayúsculas y minúsculas. Si los nombres de objeto especificados en una tarea de AWS DMS son diferentes de los nombres de la base de datos de origen, la tarea de AWS DMS no se puede ejecutar y arroja el error “No tables were found at task initialization” (No se encontraron tablas en la inicialización de la tarea).

Resolución

Para resolver este error:

1.FSPAsegúrese de que las tablas existan en el origen y de que no se hayan eliminado antes de que se iniciara la tarea.

2.FSPSi las tablas existen en el origen, asegúrese de que los nombres de los objetos coincidan exactamente con el nombre de la base de datos de origen.

Por ejemplo, cuando utiliza una base de datos Oracle como origen, Oracle utiliza nombres de objeto como estos:

  • SID de la base de datos de origen: ORCL: utilícelo para configurar el nombre de la base de datos de punto de conexión de origen de Oracle.
  • Nombre del esquema de la base de datos de origen: ADMIN: utilícelo para las reglas de asignación de selección.
  • Nombre de la tabla de la base de datos de origen: TEST: utilícelo para las reglas de asignación de selección.

Este ejemplo utiliza nombres de objeto en minúsculas en las reglas de asignación con Oracle como origen. Por lo tanto, dado que Oracle requiere nombres de objeto en mayúsculas, la tarea de AWS DMS falla y aparece el error “No tables were found at task initialization” (No se encontraron tablas en la inicialización de la tarea).

{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "admin",
        "table-name": "test"
      },
      "rule-action": "include",
      "filters": [

      ]
    }

Este ejemplo utiliza nombres de objetos en mayúsculas en las reglas de asignación con Oracle como origen, y la tarea de AWS DMS no falla.

{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "ADMIN",
        "table-name": "TEST"
      },
      "rule-action": "include",
      "filters": [

      ]
    }

¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?