Cargar datos de Oracle en BigQuery
Puedes cargar datos de Oracle en BigQuery mediante el conector de BigQuery Data Transfer Service para Oracle. Con BigQuery Data Transfer Service, puede programar tareas de transferencia periódicas que añadan sus datos más recientes de Oracle a BigQuery.
Limitaciones
Las transferencias de Oracle están sujetas a las siguientes limitaciones:
- El número máximo de conexiones simultáneas a una base de datos de Oracle es limitado, por lo que el número de ejecuciones de transferencia simultáneas a una sola base de datos de Oracle también está limitado a ese máximo.
- Debes configurar un adjunto de red en los casos en los que no haya disponible una IP pública para una conexión de base de datos Oracle, con los siguientes requisitos:
- Se debe poder acceder a la fuente de datos desde la subred en la que se encuentra el archivo adjunto de red.
- El archivo de red no debe estar en la subred dentro del intervalo
240.0.0.0/24. - Los archivos adjuntos de red no se pueden eliminar si hay conexiones activas al archivo adjunto. Para eliminar un adjunto de red, póngase en contacto con el servicio de asistencia de Google Cloud.
- En el caso de la multirregión
us, la conexión de red debe estar en la regiónus-central1. En el caso de la multirregióneu, la conexión de red debe estar en la regióneurope-west4.
- El intervalo mínimo entre transferencias periódicas de Oracle es de 15 minutos. El intervalo predeterminado de una transferencia periódica es de 24 horas.
- Una configuración de transferencia solo puede admitir una ejecución de transferencia de datos a la vez. Si se programa una segunda transferencia de datos para que se ejecute antes de que se complete la primera, solo se completará la primera transferencia de datos y se omitirán las demás transferencias de datos que se solapen con la primera.
- Para evitar que se omitan transferencias en una misma configuración de transferencia, le recomendamos que aumente el tiempo que transcurre entre las transferencias de grandes cantidades de datos configurando la frecuencia de repetición.
- Si la vinculación de red y la instancia de máquina virtual (VM) configuradas se encuentran en regiones diferentes, puede que haya movimiento de datos entre regiones al transferir datos de Oracle.
Opciones de ingestión de datos
En las secciones siguientes se ofrece información sobre las opciones de ingestión de datos al configurar una transferencia de datos de Oracle.
Configuración de TLS
El conector de Oracle admite la configuración de la seguridad a nivel de transporte (TLS) para cifrar las transferencias de datos a BigQuery. El conector de Oracle admite las siguientes configuraciones de TLS:
- Encriptar datos y verificar la CA y el nombre de host: este modo realiza una validación completa del servidor mediante TLS a través del protocolo TCPS. Encripta todos los datos en tránsito y verifica que el certificado del servidor de la base de datos esté firmado por una autoridad de certificación (CA) de confianza. Este modo también comprueba que el nombre de host al que te conectas coincide exactamente con el nombre común o con un nombre alternativo del sujeto del certificado del servidor. Este modo evita que los atacantes usen un certificado válido para un dominio diferente con el fin de suplantar la identidad de tu servidor de base de datos.
- Si el nombre de host no coincide con el nombre común o el nombre alternativo del sujeto del certificado, la conexión fallará. Debes configurar una resolución de DNS que coincida con el certificado o usar otro modo de seguridad.
- Usa este modo para disfrutar de la opción más segura y evitar ataques de intermediario (PITM).
- Cifrar datos y verificar solo la autoridad de certificación: este modo cifra todos los datos mediante TLS a través del protocolo TCPS y verifica que el certificado del servidor esté firmado por una autoridad de certificación en la que confíe el cliente. Sin embargo, este modo no verifica el nombre de host del servidor. Este modo se conecta correctamente siempre que el certificado sea válido y lo haya emitido una VA de confianza, independientemente de si el nombre de host del certificado coincide con el nombre de host al que te estás conectando.
- Usa este modo si quieres asegurarte de que te conectas a un servidor cuyo certificado esté firmado por una CA de confianza, pero el nombre de host no se puede verificar o no tienes control sobre la configuración del nombre de host.
- Solo cifrado: este modo cifra todos los datos transferidos entre el cliente y el servidor mediante el cifrado de red nativo de Oracle a través del puerto TCP estándar. No realiza ninguna validación de certificados ni de nombres de host.
- Este modo proporciona cierto nivel de seguridad al proteger los datos en tránsito, pero puede ser vulnerable a ataques PITM.
- Usa este modo si necesitas asegurarte de que todos los datos estén cifrados, pero no puedes o no quieres verificar la identidad del servidor. Te recomendamos que uses este modo cuando trabajes con VPCs privadas.
- Sin cifrado ni verificación: en este modo no se cifra ningún dato y no se realiza ninguna verificación de certificado ni de nombre de host. Todos los datos se envían como texto sin formato.
- No recomendamos usar este modo en un entorno en el que se gestionen datos sensibles.
- Solo recomendamos usar este modo para hacer pruebas en una red aislada en la que la seguridad no sea un problema.
Certificado de servidor de confianza (PEM)
Si usas el modo Encriptar datos y verificar AC y nombre de host o el modo Encriptar datos y verificar AC, también puedes proporcionar uno o varios certificados codificados en PEM. Estos certificados son necesarios en algunos casos en los que el servicio BigQuery Data Transfer Service debe verificar la identidad de tu servidor de bases de datos durante la conexión TLS:
- Si usas un certificado firmado por una AC privada de tu organización o un certificado autofirmado, debes proporcionar la cadena de certificados completa o el certificado autofirmado. Esto es necesario para los certificados emitidos por las AC internas de los servicios gestionados de proveedores de servicios en la nube, como Amazon Relational Database Service (RDS).
- Si el certificado de tu servidor de bases de datos está firmado por una autoridad de certificación pública (por ejemplo, Let's Encrypt, DigiCert o GlobalSign), no tienes que proporcionar ningún certificado. Los certificados raíz de estas autoridades de certificación públicas están preinstalados y son de confianza para BigQuery Data Transfer Service.
Puede proporcionar certificados codificados en PEM en el campo Certificado PEM de confianza al crear una configuración de transferencia de Oracle, con los siguientes requisitos:
- El certificado debe ser una cadena de certificados válida codificada en PEM.
- El certificado debe ser totalmente correcto. Si falta algún certificado en la cadena o el contenido es incorrecto, la conexión TLS fallará.
- En el caso de un solo certificado, puedes proporcionar un certificado autofirmado único desde el servidor de la base de datos.
- En el caso de una cadena de certificados completa emitida por una CA privada, debes proporcionar la cadena de confianza completa. Esto incluye el certificado del servidor de la base de datos y los certificados de CA intermedios y raíz.
Antes de empezar
En las siguientes secciones se describen los pasos que debes seguir antes de crear una transferencia de Oracle.
Requisitos previos de Oracle
- Crea una credencial de usuario en la base de datos de Oracle.
- Concede privilegios del sistema
Create Sessional usuario para permitir la creación de sesiones. - Asigna un espacio de tabla a la cuenta de usuario.
También debe tener la siguiente información de la base de datos de Oracle al crear una transferencia de Oracle.
| Nombre del parámetro | Descripción |
|---|---|
database |
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
- Comprueba que has completado todas las acciones necesarias para habilitar BigQuery Data Transfer Service.
- Crea un conjunto de datos de BigQuery para almacenar tus datos.
- Si tienes previsto configurar notificaciones de ejecuciones de transferencia para Pub/Sub, comprueba que tienes el permiso de
pubsub.topics.setIamPolicyGestión de Identidades y Accesos (IAM). No se necesitan permisos de Pub/Sub si solo configuras notificaciones por correo electrónico. Para obtener más información, consulta el artículo sobre las notificaciones de ejecución de BigQuery Data Transfer Service.
Roles de BigQuery necesarios
Para obtener los permisos que necesitas para crear una transferencia de datos de BigQuery Data Transfer Service,
pide a tu administrador que te asigne el rol de gestión de identidades y accesos Administrador de BigQuery (roles/bigquery.admin) en tu proyecto.
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene los permisos necesarios para crear una transferencia de datos de BigQuery Data Transfer Service. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Para crear una transferencia de datos de BigQuery Data Transfer Service, se necesitan los siguientes permisos:
-
Permisos de BigQuery Data Transfer Service:
-
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 u otros roles predefinidos.
Para obtener más información, consulta Conceder acceso a bigquery.admin.
Cargar datos de Oracle en BigQuery
Añada datos de Oracle a BigQuery configurando una configuración de transferencia con una de las siguientes opciones:
Consola
Ve a la página Transferencias de datos de la Google Cloud consola.
Haz clic en Crear transferencia.
En la sección Tipo de fuente, en Fuente, selecciona Oracle.
En la sección Detalles de la fuente de datos, haga lo siguiente:
- En Red adjunta, selecciona una red adjunta que ya tengas o haz clic en Crear red adjunta.
- En Host, introduce el nombre de host o la IP de la base de datos.
- En Puerto, introduce 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, introduce el nombre de la base de datos de Oracle.
- En Tipo de conexión, introduce el tipo de URL de conexión:
SERVICE,SIDoTNS. - En Nombre de usuario, introduce el nombre de usuario del usuario que inicia la conexión a la base de datos de Oracle.
- En Contraseña, introduce la contraseña del usuario que inicia la conexión a la base de datos de Oracle.
- En Modo TLS, seleccione una opción del menú desplegable. Para obtener más información sobre los modos de TLS, consulta Configuración de TLS.
- En Certificado PEM de confianza, introduce el certificado público de la autoridad de certificación (CA) 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 Objetos de Oracle que se van a transferir, haga clic en BUSCAR para seleccionar las tablas que se van a transferir al conjunto de datos de destino de BigQuery. También puedes introducir manualmente los objetos que quieras incluir en la transferencia de datos en este campo.
En la sección Configuración de destino, en Conjunto de datos, seleccione el conjunto de datos que haya creado para almacenar sus datos.
En la sección Nombre de la configuración de transferencia, en Nombre visible, indica un nombre para la transferencia de datos.
En la sección Opciones de programación:
- En la lista Frecuencia de repetición, selecciona una opción para especificar con qué frecuencia se ejecuta esta transferencia de datos. Para especificar una frecuencia de repetición personalizada, seleccione Personalizada. Si seleccionas Bajo demanda, la transferencia se realizará cuando la inicies manualmente.
- Si procede, selecciona Empezar ahora o Empezar a una hora determinada y proporciona una fecha de inicio y un tiempo de ejecución.
Opcional: En la sección Opciones de notificación, haz lo siguiente:
- Para habilitar las notificaciones por correo, haz clic en el interruptor Notificación por correo. Si habilitas esta opción, el administrador de las transferencias recibirá una notificación por correo cuando falle una ejecución de transferencia.
- Para habilitar las notificaciones de Pub/Sub sobre la transferencia, haz clic en el interruptor Notificaciones de Pub/Sub. Puedes seleccionar el nombre del tema o hacer clic en Crear un tema para crear uno.
Haz clic en Guardar.
bq
Introduce el comando bq mk
y proporciona la marca de creación de transferencia
--transfer_config:
bq mk --transfer_config --project_id=PROJECT_ID --data_source=DATA_SOURCE --display_name=DISPLAY_NAME --target_dataset=DATASET --params='PARAMETERS'
Donde:
- PROJECT_ID (opcional): su ID de proyecto. Google Cloud
Si no se proporciona
--project_idpara especificar un proyecto concreto, se usará el proyecto predeterminado. - DATA_SOURCE: la fuente de datos
oracle. - DISPLAY_NAME: el nombre visible de la configuración de la transferencia. El nombre de la transferencia de datos puede ser cualquier valor que te permita identificar la transferencia si necesitas modificarla más adelante.
- DATASET: el conjunto de datos de destino de la configuración de la transferencia.
PARAMETERS: los parámetros de la configuración de la transferencia creada en formato JSON. Por ejemplo:
--params='{"param":"param_value"}'. Estos son los parámetros de una transferencia de datos de Oracle:connector.networkAttachment(opcional): nombre del archivo de red para conectarse a la base de datos de Oracle.connector.authentication.Username: nombre de usuario de la cuenta de Oracle.connector.authentication.Password: contraseña de la cuenta de Oracle.connector.database: 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: número de puerto que usa la base de datos de Oracle para las conexiones entrantes, como1520.connector.connectionType: el tipo de URL de conexión, que puede serSERVICE,SIDoTNS.connector.tls.mode: especifica una configuración de TLS que se va a usar con esta transferencia:ENCRYPT_VERIFY_CA_AND_HOSTpara cifrar los datos y verificar la AC y el nombre de hostENCRYPT_VERIFY_CApara cifrar datos y verificar solo la ACENCRYPT_VERIFY_NONEsolo para el cifrado de datosDISABLEsi no quieres usar cifrado ni verificación
connector.tls.trustedServerCertificate: (opcional) proporcione uno o varios certificados codificados en PEM. Obligatorio solo siconnector.tls.modeesENCRYPT_VERIFY_CA_AND_HOSToENCRYPT_VERIFY_CA.assets: ruta a los objetos de Oracle que se van a transferir a BigQuery. El formato es el siguiente:DATABASE_NAME/SCHEMA_NAME/TABLE_NAME
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"}'
API
Usa el método projects.locations.transferConfigs.create y proporciona una instancia del recurso TransferConfig.
Para ejecutar manualmente una transferencia de datos fuera de tu programación habitual, puedes iniciar una ejecución de rellenado.
Asignación de tipos de datos
En la siguiente tabla se asignan los tipos de datos de Oracle a los tipos de datos de BigQuery correspondientes.
| Tipo de datos de Oracle | Tipo de datos de BigQuery |
|---|---|
BFILE |
BYTES |
BINARY_DOUBLE |
FLOAT |
BINARY_FLOAT |
FLOAT |
BLOB |
BYTES |
CHAR |
STRING |
CLOB |
STRING |
DATE |
DATETIME |
FLOAT |
FLOAT |
INTERVAL DAY TO SECOND |
STRING |
INTERVAL YEAR TO MONTH |
STRING |
LONG |
STRING |
LONG RAW |
BYTES |
NCHAR |
STRING |
NCLOB |
STRING |
NUMBER (without precision and scale) |
STRING |
NUMBER (with precision and scale lower than the BigQuery Numeric range) |
NUMERIC |
NUMBER (with precision and scale lower than the BigQuery BigNumeric range) |
BIGNUMERIC |
NUMBER (with precision and scale greater than the BigQuery BigNumeric range) |
STRING |
NVARCHAR2 |
STRING |
RAW |
BYTES |
ROWID |
STRING |
TIMESTAMP |
DATETIME |
TIMESTAMP WITH LOCAL TIME ZONE |
DATETIME |
TIMESTAMP WITH TIME ZONE |
TIMESTAMP |
UROWID |
STRING |
VARCHAR |
STRING |
VARCHAR2 |
STRING |
Solucionar problemas de configuración de transferencias
Si tienes problemas para configurar la transferencia de datos, consulta Problemas con la transferencia de datos de Oracle.
Precios
La transferencia de datos de Oracle a BigQuery no tiene ningún coste mientras esta función esté en vista previa.
Siguientes pasos
- Para obtener una descripción general de BigQuery Data Transfer Service, consulta el artículo Introducción a BigQuery Data Transfer Service.
- Para obtener información sobre cómo usar las transferencias, como obtener información sobre una configuración de transferencia, enumerar configuraciones de transferencia y ver el historial de ejecuciones de una transferencia, consulta el artículo Trabajar con transferencias.
- Consulta cómo cargar datos con operaciones entre nubes.