Carga datos de Oracle en BigQuery

Para programar transferencias de datos recurrentes desde tu base de datos de Oracle a BigQuery, crea una configuración de transferencia para especificar qué objetos de datos transferir y con qué frecuencia programar la transferencia de datos. Después de configurar la configuración de transferencia, el Servicio de transferencia de datos de BigQuery transfiere los datos más recientes a una tabla de BigQuery según la programación especificada.

Para obtener información general sobre las transferencias de Oracle, incluidas las opciones de configuración, consulta Introducción a las transferencias de datos de Oracle.

Limitaciones

Las transferencias de Oracle están sujetas a las siguientes limitaciones:

  • La cantidad máxima de conexiones simultáneas a una base de datos de Oracle es limitada y, como resultado, la cantidad de ejecuciones de transferencias simultáneas a una sola base de datos de Oracle se limita a esa cantidad máxima.
  • Debes configurar un adjunto de red en los casos en que una IP pública no esté disponible para una conexión de base de datos de Oracle, con los siguientes requisitos:
    • Se debe poder acceder a la fuente de datos desde la subred en la que reside el adjunto de red.
    • El adjunto de red no debe estar en la subred dentro del rango 240.0.0.0/24.
    • Los adjuntos de red no se pueden borrar si hay conexiones activas con el adjunto. Para borrar un adjunto de red, comunícate con la Atención al cliente de Cloud.
    • Para la multirregión us, el adjunto de red debe estar en la región us-central1. Para la multirregión eu, el adjunto de red debe estar en la europe-west4 región.
  • El tiempo de intervalo mínimo entre transferencias recurrentes de Oracle es de 15 minutos. El intervalo predeterminado para una transferencia recurrente es de 24 horas.
  • Una sola configuración de transferencia solo puede admitir una ejecución de transferencia de datos en un momento determinado. En el caso de que se programe una segunda transferencia de datos para que se ejecute antes de que se complete la primera, solo se completará la primera transferencia de datos, mientras que se omitirá cualquier otra transferencia de datos que se superponga con la primera.
    • Para evitar transferencias omitidas dentro de una sola configuración de transferencia, te recomendamos que aumentes la duración entre las transferencias de datos grandes configurando la Frecuencia de repetición.
  • Durante una transferencia de datos, el conector de Oracle identifica las columnas de clave indexadas y particionadas para transferir tus datos en lotes paralelos. Por este motivo, te recomendamos que especifiques columnas de clave primaria o que uses columnas indexadas en tu tabla para mejorar el rendimiento y reducir la tasa de errores en tus transferencias de datos.
    • Si tienes restricciones de clave primaria o indexada, solo se admiten los siguientes tipos de columnas para crear lotes paralelos:
      • INTEGER
      • TINYINT
      • SMALLINT
      • FLOAT
      • REAL
      • DOUBLE
      • NUMERIC
      • BIGINT
      • DECIMAL
      • DATE
    • Las transferencias de datos de Oracle que no usan columnas de clave primaria o indexadas no pueden admitir más de 2,000,000 de registros por tabla.
  • Si el adjunto de red configurado y la instancia de máquina virtual (VM) se encuentran en regiones diferentes, es posible que haya movimiento de datos entre regiones cuando transfieras datos desde Oracle.

Limitaciones de las transferencias incrementales

Las transferencias incrementales de Oracle están sujetas a las siguientes limitaciones:

  • Solo puedes elegir columnas TIMESTAMP como columnas de marca de agua.
  • La transferencia incremental solo se admite para los recursos con columnas de marca de agua válidas.
  • Los valores de una columna de marca de agua deben aumentar de forma monótona.
  • Las transferencias incrementales no pueden sincronizar las operaciones de eliminación en la tabla de origen.
  • Una sola configuración de transferencia solo puede admitir la transferencia incremental o completa.
  • No puedes actualizar objetos en la lista asset después de la primera ejecución de transferencia incremental.
  • No puedes cambiar el modo de escritura en una configuración de transferencia después de la primera ejecución de transferencia incremental.
  • No puedes cambiar la columna de marca de agua ni la clave primaria después de la primera ejecución de transferencia incremental.
  • La tabla de BigQuery de destino se agrupa con la clave primaria proporcionada y está sujeta a las limitaciones de la tabla agrupada.
  • Cuando actualizas una configuración de transferencia existente al modo de transferencia incremental por primera vez, la primera transferencia de datos después de esa actualización transfiere todos los datos disponibles de tu fuente de datos. Cualquier transferencia de datos incremental posterior transferirá solo las filas nuevas y actualizadas de tu fuente de datos.

Para obtener información sobre cómo funcionan las transferencias incrementales, consulta Transferencias completas o incrementales.

Antes de comenzar

En las siguientes secciones, se describen los pasos que debes seguir antes de crear una transferencia de Oracle.

Requisitos previos de Oracle

También debes tener la siguiente información de base de datos de Oracle cuando crees una transferencia de Oracle.

Nombre del parámetro Descripción
database Es el nombre de la base de datos.
host

Nombre de host o dirección IP de la base de datos.

port

Número de puerto de la base de datos.

username

Nombre de usuario para acceder a la base de datos.

password

Contraseña para acceder a la base de datos.

Requisitos previos de BigQuery

Roles de BigQuery requeridos

Para obtener los permisos que necesitas para crear una transferencia de datos del Servicio de transferencia de datos de BigQuery, pídele a tu administrador que te otorgue el rol de IAM de administrador de BigQuery (roles/bigquery.admin) en tu proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para crear una transferencia de datos del Servicio de transferencia de datos de BigQuery. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para crear una transferencia de datos del Servicio de transferencia de datos de BigQuery:

  • Permisos del Servicio de transferencia de datos de BigQuery:
    • bigquery.transfers.update
    • bigquery.transfers.get
  • Permisos de BigQuery:
    • bigquery.datasets.get
    • bigquery.datasets.getIamPolicy
    • bigquery.datasets.update
    • bigquery.datasets.setIamPolicy
    • bigquery.jobs.create

También puedes obtener estos permisos con roles personalizados o otros roles predefinidos.

Para obtener más información, consulta Otorga acceso bigquery.admin.

Carga datos de Oracle en BigQuery

Para agregar datos de Oracle a BigQuery, configura una configuración de transferencia con una de las siguientes opciones:

Console

  1. Ve a la página Transferencia de datos en la Google Cloud consola.

    Ir a Transferencia de datos

  2. Haz clic en Crear transferencia.

  3. En la sección Tipo de fuente, para Fuente, selecciona Oracle.

  4. En la sección Detalles de la fuente de datos, haz lo siguiente:

    • En Adjunto de red, selecciona un adjunto de red existente o haz clic en Crear adjunto de red.
    • En Host, ingresa el nombre de host o la IP de la base de datos.
    • En Puerto, ingresa el número de puerto que usa la base de datos de Oracle para las conexiones entrantes, como 1521.
    • En Nombre de la base de datos, ingresa el nombre de la base de datos de Oracle.
    • En Tipo de conexión, ingresa el tipo de URL de conexión, ya sea SERVICE, SID o TNS.
    • En Nombre de usuario, ingresa el nombre del usuario que inicia la conexión de la base de datos de Oracle.
    • En Contraseña, ingresa la contraseña del usuario que inicia la conexión de la base de datos de Oracle.
    • En Modo TLS, selecciona una opción en el menú desplegable. Para obtener más información sobre los modos de TLS, consulta Configuración de TLS.
    • En Certificado PEM de confianza, ingresa el certificado público de la autoridad certificadora (AC) que emitió el certificado TLS del servidor de la base de datos. Para obtener más información, consulta Certificado de servidor de confianza (PEM).
    • En Ingestion type, selecciona Full o Incremental.
    • En Oracle objects to transfer, haz clic en Browse:
      • Selecciona los objetos que se transferirán al conjunto de datos de destino de BigQuery. También puedes ingresar de forma manual cualquier objeto que quieras incluir en la transferencia de datos en este campo.
      • Si seleccionaste Append como modo de escritura incremental, debes seleccionar una columna como columna de marca de agua.
      • Si seleccionaste Upsert como modo de escritura incremental, debes seleccionar una columna como columna de marca de agua y, luego, seleccionar una o más columnas como clave primaria.
  5. En la sección Configuración de destino, en Conjunto de datos, selecciona el conjunto de datos que creaste para almacenar tus datos.

  6. En la sección Nombre de configuración de la transferencia (Transfer config name), en Nombre visible (Display name), ingresa un nombre para la transferencia de datos.

  7. En la sección Opciones de programación, haz lo siguiente:

    • En la lista Frecuencia de repetición, selecciona una opción para especificar la frecuencia con la que se ejecuta esta transferencia de datos. Para especificar una frecuencia de repetición personalizada, selecciona Personalizado. Si seleccionas Según demanda, esta transferencia se ejecuta cuando activas la transferencia de forma manual.
    • Si corresponde, selecciona Comenzar ahora o Comenzar a la hora definida y detalla una fecha de inicio y una hora de ejecución.
  8. Opcional: En la sección Opciones de notificación, haz lo siguiente:

    • Para habilitar las notificaciones por correo electrónico, haz clic en el botón de activación Notificación por correo electrónico. Si habilitas esta opción, el administrador de transferencias recibirá una notificación por correo electrónico cuando falle la ejecución de una transferencia.
    • Si quieres habilitar las notificaciones de ejecución de transferencias de Pub/Sub para esta transferencia, haz clic en el botón de activación Notificaciones de Pub/Sub. Puedes seleccionar el nombre del tema o hacer clic en Crear un tema para crear uno.
  9. Haz clic en Guardar.

bq

Ingresa el comando bq mk y suministra la marca de creación de transferencias --transfer_config.

bq mk
    --transfer_config
    --project_id=PROJECT_ID
    --data_source=DATA_SOURCE
    --display_name=DISPLAY_NAME
    --target_dataset=DATASET
    --params='PARAMETERS'

Aquí:

  • PROJECT_ID (opcional): Tu Google Cloud ID del proyecto. Si no se proporciona --project_id para especificar un proyecto en particular, se usa el proyecto predeterminado.
  • DATA_SOURCE: La fuente de datos: oracle.
  • DISPLAY_NAME es el nombre visible de la configuración de transferencia. El nombre de la transferencia de datos puede ser cualquier valor que te permita identificarla si es necesario hacerle modificaciones más tarde.
  • DATASET es el conjunto de datos de destino para la configuración de transferencia.
  • PARAMETERS son los parámetros de la configuración de transferencia creada en formato JSON. Por ejemplo: --params='{"param":"param_value"}' Los siguientes son los parámetros para una transferencia de datos de Oracle:

    • connector.networkAttachment (opcional): nombre del adjunto de red para conectarse a la base de datos de Oracle.
    • connector.authentication.Username: el nombre de usuario de la cuenta de Oracle
    • connector.authentication.Password: la contraseña de la cuenta de Oracle.
    • connector.database: Es el nombre de la base de datos de Oracle.
    • connector.endpoint.host: El nombre de host o la IP de la base de datos.
    • connector.endpoint.port: El número de puerto que usa la base de datos de Oracle para las conexiones entrantes, como 1520.
    • connector.connectionType: Es el tipo de URL de conexión, ya sea SERVICE, SID o TNS.
    • connector.tls.mode: Especifica una configuración de TLS para usar con esta transferencia:
      • ENCRYPT_VERIFY_CA_AND_HOST para encriptar datos y verificar la AC y el nombre de host
      • ENCRYPT_VERIFY_CA para encriptar datos y verificar solo la AC
      • ENCRYPT_VERIFY_NONE solo para la encriptación de datos
      • DISABLE para no realizar encriptación ni verificación
    • connector.tls.trustedServerCertificate: (opcional) proporciona uno o más certificados codificados en PEM. Solo es obligatorio si connector.tls.mode es ENCRYPT_VERIFY_CA_AND_HOST o ENCRYPT_VERIFY_CA.
    • ingestionType: Especifica full o incremental. Las transferencias incrementales se admiten en la versión preliminar. Para obtener más información, consulta Transferencias completas o incrementales.
    • writeMode: Especifica WRITE_MODE_APPEND o WRITE_MODE_UPSERT.
    • watermarkColumns: Especifica columnas en tu tabla como columnas de marca de agua. Este campo es obligatorio para las transferencias incrementales.
    • primaryKeys: Especifica columnas en tu tabla como claves primarias. Este campo es obligatorio para las transferencias incrementales.
    • assets: La ruta de acceso a los objetos de Oracle que se transferirán a BigQuery, mediante el siguiente formato: DATABASE_NAME/SCHEMA_NAME/TABLE_NAME

Cuando se especifican varios recursos durante una transferencia incremental, los valores de los campos watermarkColumns y primaryKeys corresponden a la posición de los valores en el campo assets. En el siguiente ejemplo, dep_id corresponde a la tabla DB1/USER1/DEPARTMENT, mientras que report_by y report_title corresponden a la tabla DB1/USER1/EMPLOYEES.

      "primaryKeys":[['dep_id'], ['report_by','report_title']],
      "assets":["DB1/USER1/DEPARTMENT","DB1/USER1/EMPLOYEES"],
  

Por ejemplo, el siguiente comando crea una transferencia de datos de Oracle en el proyecto predeterminado con todos los parámetros obligatorios:

bq mk
    --transfer_config
    --target_dataset=mydataset
    --data_source=oracle
    --display_name='My Transfer'
    --params='{"assets":["DB1/USER1/DEPARTMENT","DB1/USER1/EMPLOYEES"],
        "connector.authentication.username": "User1",
        "connector.authentication.password":"ABC12345",
        "connector.database":"DB1",
        "connector.endpoint.host":"192.168.0.1",
        "connector.endpoint.port":1520,
        "connector.connectionType":"SERVICE",
        "connector.tls.mode": "ENCRYPT_VERIFY_CA_AND_HOST",
        "connector.tls.trustedServerCertificate": "PEM-encoded certificate",
        "connector.networkAttachment":
        "projects/dev-project1/regions/us-central1/networkattachments/na1"
        "ingestionType":"incremental",
        "writeMode":"WRITE_MODE_APPEND",
        "watermarkColumns":["createdAt","createdAt"],
        "primaryKeys":[['dep_id'], ['report_by','report_title']]}'

API

Usa el projects.locations.transferConfigs.create método y suministra una instancia del TransferConfig recurso.

Cuando guardas la configuración de transferencia, el conector de Oracle activa automáticamente una ejecución de transferencia según tu opción de programación. Con cada ejecución de transferencia, el conector de Oracle transfiere todos los datos disponibles de Oracle a BigQuery.

Para ejecutar manualmente una transferencia de datos fuera de tu programación habitual, puedes iniciar una ejecución de reabastecimiento.

Soluciona problemas con la configuración de una transferencia

Si tienes problemas para configurar tu transferencia de datos, consulta Problemas de transferencia de Oracle.

¿Qué sigue?