Charger des données Oracle dans BigQuery

Vous pouvez charger des données d'Oracle vers BigQuery à l'aide du connecteur du service de transfert de données BigQuery pour Oracle. Le service de transfert de données BigQuery vous permet de planifier des jobs de transfert récurrents qui ajoutent vos dernières données Oracle à BigQuery.

Limites

Les transferts Oracle sont soumis aux limitations suivantes :

  • Le nombre maximal de connexions simultanées à une base de données Oracle est limité. Par conséquent, le nombre d'exécutions de transfert simultanées vers une seule base de données Oracle est limité à cette quantité maximale.
  • Vous devez configurer un rattachement de réseau dans les cas où aucune adresse IP publique n'est disponible pour une connexion à la base de données Oracle, avec les exigences suivantes :
    • La source de données doit être accessible à partir du sous-réseau où réside le rattachement de réseau.
    • Le rattachement de réseau ne doit pas se trouver dans le sous-réseau compris dans la plage 240.0.0.0/24.
    • Les rattachements de réseau ne peuvent pas être supprimés s'il existe des connexions actives. Pour supprimer un rattachement de réseau, contactez l'assistance Cloud Customer Care.
    • Pour l'emplacement multirégional us, le rattachement de réseau doit se trouver dans la région us-central1. Pour l'emplacement multirégional eu, le rattachement de réseau doit se trouver dans la région europe-west4.
  • L'intervalle minimum entre deux transferts Oracle récurrents est de 15 minutes. L'intervalle par défaut entre transferts récurrents est de 24 heures.
  • Une seule exécution de transfert de données peut être active à la fois pour une configuration de transfert donnée. Si une deuxième exécution de transfert de données est planifiée avant la fin de la première, seule la première exécution de transfert de données sera effectuée. Toutes les autres exécutions de transfert de données qui chevauchent la première seront ignorées.
    • Pour éviter les transferts ignorés dans une même configuration de transfert, nous vous recommandons d'augmenter la durée entre les transferts de données volumineux en configurant la fréquence de répétition.
  • Lors d'un transfert de données, le connecteur Oracle identifie les colonnes clés indexées et partitionnées pour transférer vos données par lots en parallèle. C'est pourquoi nous vous recommandons de spécifier des colonnes de clé primaire ou d'utiliser des colonnes indexées dans votre tableau pour améliorer les performances et réduire le taux d'erreur dans vos transferts de données.
    • Si vous avez des contraintes de clé primaire ou d'index, seuls les types de colonnes suivants sont acceptés pour la création de lots parallèles :
      • INTEGER
      • TINYINT
      • SMALLINT
      • FLOAT
      • REAL
      • DOUBLE
      • NUMERIC
      • BIGINT
      • DECIMAL
      • DATE
    • Les transferts de données Oracle qui n'utilisent pas de clé primaire ni de colonnes indexées ne peuvent pas prendre en charge plus de 2 000 000 d'enregistrements par table.
  • Si votre instance de VM et votre association réseau configurée se trouvent dans des régions différentes, il est possible que des données soient transférées d'une région à l'autre lorsque vous transférez des données depuis Oracle.

Limites des transferts incrémentiels

Les transferts Oracle incrémentiels sont soumis aux limitations suivantes :

  • Vous ne pouvez choisir que TIMESTAMP colonnes comme colonnes de filigrane.
  • L'ingestion incrémentielle n'est possible que pour les composants dont les colonnes de filigrane sont valides.
  • Les valeurs d'une colonne de filigrane doivent augmenter de manière monotone.
  • Les transferts incrémentiels ne peuvent pas synchroniser les opérations de suppression dans la table source.
  • Une même configuration de transfert ne peut prendre en charge qu'une ingestion incrémentielle ou complète.
  • Vous ne pouvez pas mettre à jour les objets de la liste asset après la première exécution d'ingestion incrémentielle.
  • Vous ne pouvez pas modifier le mode d'écriture dans une configuration de transfert après la première exécution d'ingestion incrémentielle.
  • Vous ne pouvez pas modifier la colonne de filigrane ni la clé primaire après la première exécution d'ingestion incrémentielle.

Options d'ingestion de données

Les sections suivantes fournissent plus d'informations sur les options d'ingestion de données lorsque vous configurez un transfert de données Oracle.

Configuration TLS

Le connecteur Oracle est compatible avec la configuration de la sécurité au niveau du transport (TLS) pour chiffrer vos transferts de données vers BigQuery. Le connecteur Oracle est compatible avec les configurations TLS suivantes :

  • Chiffrer les données et valider l'autorité de certification et le nom d'hôte : ce mode effectue une validation complète du serveur à l'aide de TLS sur le protocole TCPS. Il chiffre toutes les données en transit et vérifie que le certificat du serveur de base de données est signé par une autorité de certification (CA) de confiance. Ce mode vérifie également que le nom d'hôte auquel vous vous connectez correspond exactement au nom commun (CN) ou à un autre nom de l'objet (SAN) du certificat du serveur. Ce mode empêche les pirates informatiques d'utiliser un certificat valide pour un autre domaine afin d'usurper l'identité de votre serveur de base de données.
    • Si votre nom d'hôte ne correspond pas au CN ou au SAN du certificat, la connexion échoue. Vous devez configurer une résolution DNS correspondant au certificat ou utiliser un autre mode de sécurité.
    • Utilisez ce mode pour bénéficier de l'option la plus sécurisée et éviter les attaques de type "man-in-the-middle" (MITM).
  • Chiffrer les données et valider uniquement l'autorité de certification : ce mode chiffre toutes les données à l'aide de TLS sur le protocole TCPS et vérifie que le certificat du serveur est signé par une autorité de certification à laquelle le client fait confiance. Toutefois, ce mode ne valide pas le nom d'hôte du serveur. Ce mode permet d'établir une connexion tant que le certificat est valide et émis par une autorité de validation de confiance, que le nom d'hôte du certificat corresponde ou non à celui auquel vous vous connectez.
    • Utilisez ce mode si vous souhaitez vous assurer de vous connecter à un serveur dont le certificat est signé par une autorité de certification de confiance, mais dont le nom d'hôte n'est pas vérifiable ou dont vous ne contrôlez pas la configuration.
  • Chiffrement uniquement : ce mode chiffre toutes les données transférées entre le client et le serveur à l'aide du chiffrement de réseau natif d'Oracle sur le port TCP standard. Il n'effectue aucune validation de certificat ni de nom d'hôte.
    • Ce mode offre un certain niveau de sécurité en protégeant les données en transit, mais il peut être vulnérable aux attaques PITM.
    • Utilisez ce mode si vous devez vous assurer que toutes les données sont chiffrées, mais que vous ne pouvez pas ou ne souhaitez pas vérifier l'identité du serveur. Nous vous recommandons d'utiliser ce mode lorsque vous travaillez avec des VPC privés.
  • Aucun chiffrement ni aucune validation : ce mode ne chiffre aucune donnée et n'effectue aucune validation de certificat ni de nom d'hôte. Toutes les données sont envoyées en texte brut.
    • Nous vous déconseillons d'utiliser ce mode dans un environnement où des données sensibles sont traitées.
    • Nous vous recommandons de n'utiliser ce mode qu'à des fins de test sur un réseau isolé où la sécurité n'est pas un problème.

Certificat serveur approuvé (PEM)

Si vous utilisez le mode Chiffrer les données et valider l'autorité de certification et le nom d'hôte ou le mode Chiffrer les données et valider l'autorité de certification, vous pouvez également fournir un ou plusieurs certificats encodés au format PEM. Ces certificats sont requis dans certains cas où le service de transfert de données BigQuery doit vérifier l'identité de votre serveur de base de données lors de la connexion TLS :

  • Si vous utilisez un certificat signé par une autorité de certification privée au sein de votre organisation ou un certificat autosigné, vous devez fournir la chaîne de certificats complète ou le certificat autosigné unique. Cela est nécessaire pour les certificats émis par les autorités de certification internes des services de fournisseurs de cloud gérés, tels qu'Amazon Relational Database Service (RDS).
  • Si le certificat de votre serveur de base de données est signé par une autorité de certification publique (par exemple, Let's Encrypt, DigiCert ou GlobalSign), vous n'avez pas besoin de fournir de certificat. Les certificats racine de ces autorités de certification publiques sont préinstallés et approuvés par le service de transfert de données BigQuery.

Vous pouvez fournir des certificats encodés au format PEM dans le champ Certificat PEM approuvé lorsque vous créez une configuration de transfert Oracle, en respectant les exigences suivantes :

  • Le certificat doit être une chaîne de certificats valide encodée au format PEM.
  • Le certificat doit être entièrement correct. Toute absence de certificat dans la chaîne ou tout contenu incorrect entraîne l'échec de la connexion TLS.
  • Pour un seul certificat, vous pouvez fournir un certificat autosigné unique à partir du serveur de base de données.
  • Pour une chaîne de certificats complète émise par une autorité de certification privée, vous devez fournir la chaîne de confiance complète. Cela inclut le certificat du serveur de base de données, ainsi que tous les certificats CA intermédiaires et racines.

Transferts complets ou incrémentiels

Vous pouvez spécifier la façon dont les données sont chargées dans BigQuery en sélectionnant la préférence d'écriture Complète ou Incrémentielle dans la configuration du transfert lorsque vous configurez un transfert Oracle. Les transferts incrémentiels sont disponibles en version preview.

Vous pouvez sélectionner Complète pour transférer toutes les données de vos ensembles de données Oracle à chaque transfert de données.

Vous pouvez également sélectionner Incrémentiel (Aperçu) pour ne transférer que les données qui ont été modifiées depuis le dernier transfert de données, au lieu de charger l'intégralité de l'ensemble de données à chaque transfert. Si vous sélectionnez Incrémentiel pour votre transfert de données, vous devez spécifier les modes d'écriture Ajouter ou Upsert pour définir la façon dont les données sont écrites dans BigQuery lors d'un transfert de données incrémentiel. Les sections suivantes décrivent les modes d'écriture disponibles.

Mode d'écriture Append

Le mode d'écriture Ajouter n'insère que de nouvelles lignes dans votre table de destination. Cette option ajoute strictement les données transférées sans vérifier s'il existe des enregistrements, ce qui peut entraîner une duplication des données dans la table de destination.

Lorsque vous sélectionnez le mode Ajouter, vous devez sélectionner une colonne de filigrane. Une colonne de filigrane est requise pour que le connecteur Oracle puisse suivre les modifications apportées à la table source.

Pour les transferts Oracle, nous vous recommandons de sélectionner une colonne qui n'est mise à jour que lors de la création de l'enregistrement et qui ne changera pas lors des mises à jour ultérieures. Par exemple, la colonne CREATED_AT.

Mode d'écriture Upsert

Le mode d'écriture Upsert met à jour une ligne ou en insère une nouvelle dans votre table de destination en vérifiant la présence d'une clé primaire. Vous pouvez spécifier une clé primaire pour permettre au connecteur Oracle de déterminer les modifications nécessaires pour que votre table de destination reste à jour par rapport à votre table source. Si la clé primaire spécifiée est présente dans la table BigQuery de destination lors d'un transfert de données, le connecteur Oracle met à jour cette ligne avec les nouvelles données de la table source. Si aucune clé primaire n'est présente lors d'un transfert de données, le connecteur Oracle insère une nouvelle ligne.

Lorsque vous sélectionnez le mode Upsert, vous devez sélectionner une colonne de filigrane et une clé primaire :

  • Une colonne de filigrane est requise pour que le connecteur Oracle puisse suivre les modifications apportées à la table source.
    • Sélectionnez une colonne de filigrane qui est mise à jour chaque fois qu'une ligne est modifiée. Nous vous recommandons d'utiliser des colonnes semblables à celles de type UPDATED_AT ou LAST_MODIFIED.
  • La clé primaire peut être une ou plusieurs colonnes de votre tableau. Elle est nécessaire pour que le connecteur Oracle puisse déterminer s'il doit insérer ou mettre à jour une ligne.
    • Sélectionnez les colonnes contenant des valeurs non nulles uniques pour toutes les lignes du tableau. Nous vous recommandons d'utiliser des colonnes qui incluent des identifiants générés par le système, des codes de référence uniques (par exemple, des ID à incrémentation automatique) ou des ID de séquence immuables basés sur le temps.
    • Pour éviter toute perte ou corruption de données, les colonnes de clé primaire que vous sélectionnez doivent contenir des valeurs uniques. Si vous avez des doutes sur l'unicité de la colonne de clé primaire choisie, nous vous recommandons d'utiliser le mode d'écriture Ajouter à la place.

Avant de commencer

Les sections suivantes décrivent les étapes à suivre avant de créer un transfert Oracle.

Prérequis pour Oracle

Vous devez également disposer des informations sur la base de données Oracle suivantes lors de la création d'un transfert Oracle.

Nom du paramètre Description
database Nom de la base de données.
host

Nom d'hôte ou adresse IP de la base de données.

port

Numéro de port de la base de données.

username

Nom d'utilisateur permettant d'accéder à la base de données.

password

Mot de passe permettant d'accéder à la base de données.

Prérequis pour BigQuery

Rôles BigQuery requis

Pour obtenir les autorisations nécessaires pour créer un transfert de données Service de transfert de données BigQuery, demandez à votre administrateur de vous accorder le rôle IAM Administrateur BigQuery (roles/bigquery.admin) sur votre projet. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Ce rôle prédéfini contient les autorisations requises pour créer un transfert de données du service de transfert de données BigQuery. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Les autorisations suivantes sont requises pour créer un transfert de données du service de transfert de données BigQuery :

  • Autorisations du service de transfert de données BigQuery :
    • bigquery.transfers.update
    • bigquery.transfers.get
  • Autorisations BigQuery :
    • bigquery.datasets.get
    • bigquery.datasets.getIamPolicy
    • bigquery.datasets.update
    • bigquery.datasets.setIamPolicy
    • bigquery.jobs.create

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Pour en savoir plus, consultez Accorder l'accès bigquery.admin.

Charger des données Oracle dans BigQuery

Ajoutez des données Oracle à BigQuery en configurant une configuration de transfert à l'aide de l'une des options suivantes :

Console

  1. Accédez à la page "Transferts de données" dans la console Google Cloud .

    Accéder à la page Transferts de données

  2. Cliquez sur Créer un transfert.

  3. Dans le champ Source de la section Type de source, sélectionnez Oracle.

  4. Dans la section Data source details (Détails de la source de données), procédez comme suit :

    • Dans le champ Rattachement de réseau, sélectionnez un rattachement de réseau existant ou cliquez sur Créer un rattachement de réseau.
    • Pour le champ Hôte, saisissez le nom d'hôte ou l'adresse IP de la base de données.
    • Pour le champ Port, saisissez le numéro de port utilisé par la base de données Oracle pour les connexions entrantes, tel que 1521.
    • Dans le champ Nom de la base de données, saisissez le nom de la base de données Oracle.
    • Dans le champ Type de connexion, saisissez le type d'URL de connexion : SERVICE, SID ou TNS.
    • Dans le champ Nom d'utilisateur, saisissez le nom de l'utilisateur qui établit la connexion à la base de données Oracle.
    • Dans le champ Mot de passe, saisissez le mot de passe de l'utilisateur qui établit la connexion à la base de données Oracle.
    • Pour Mode TLS, sélectionnez une option dans le menu déroulant. Pour en savoir plus sur les modes TLS, consultez Configuration TLS.
    • Pour Certificat PEM approuvé, saisissez le certificat public de l'autorité de certification qui a émis le certificat TLS du serveur de base de données. Pour en savoir plus, consultez Certificat de serveur approuvé (PEM).
    • Pour Type d'ingestion, sélectionnez Complet ou Incrémentiel.
      • Si vous sélectionnez Incrémentiel (Aperçu), pour Mode d'écriture, sélectionnez Ajouter ou Faire un upsert. Pour en savoir plus sur les différents modes d'écriture, consultez Transferts complets ou incrémentaux.
    • Pour Objets Oracle à transférer, cliquez sur Parcourir :
      • Sélectionnez les objets à transférer vers l'ensemble de données de destination BigQuery. Vous pouvez également saisir manuellement dans ce champ les objets à inclure dans le transfert de données.
      • Si vous avez sélectionné Ajouter comme mode d'écriture incrémentielle, vous devez sélectionner une colonne comme colonne de filigrane.
      • Si vous avez sélectionné Faire un upsert comme mode d'écriture incrémentielle, vous devez sélectionner une colonne comme colonne de filigrane, puis sélectionner une ou plusieurs colonnes comme clé primaire.
  5. Dans la section Paramètres de destination, pour le champ Ensemble de données, sélectionnez l'ensemble de données que vous avez créé pour stocker vos données.

  6. Dans la section Nom de la configuration de transfert, sous Nom à afficher, saisissez le nom du transfert de données.

  7. Dans la section Schedule options (Options de programmation) :

    • Dans la liste Fréquence de répétition, sélectionnez une option pour spécifier la fréquence d'exécution de ce transfert de données. Pour spécifier une fréquence de répétition personnalisée, sélectionnez Personnalisée. Si vous sélectionnez À la demande, le transfert s'exécute lorsque vous le déclenchez manuellement.
    • Le cas échéant, sélectionnez Commencer ou Commencer à l'heure définie, puis indiquez une date de début et une heure d'exécution.
  8. Facultatif : dans la section Options de notification, procédez comme suit :

    • Pour activer les notifications par e-mail, cliquez sur le bouton Notification par e-mail. Lorsque vous activez cette option, l'administrateur de transfert reçoit une notification par e-mail en cas d'échec de l'exécution du transfert.
    • Pour activer les notifications d'exécution de transfert Pub/Sub pour ce transfert, cliquez sur le bouton Notifications Pub/Sub. Vous pouvez sélectionner le nom de votre sujet ou cliquer sur Créer un sujet pour en créer un.
  9. Cliquez sur Enregistrer.

bq

Saisissez la commande bq mk, puis spécifiez l'indicateur de création de transfert --transfer_config.

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

Où :

  • PROJECT_ID (facultatif) : ID de votre projet Google Cloud . Si vous ne fournissez pas de --project_id afin de spécifier un projet particulier, le projet par défaut est utilisé.
  • DATA_SOURCE. La source de données – oracle.
  • DISPLAY_NAME : nom à afficher de la configuration de transfert. Ce nom peut correspondre à toute valeur permettant d'identifier le transfert de données si vous devez le modifier ultérieurement.
  • DATASET : ensemble de données cible de la configuration de transfert.
  • PARAMETERS correspond aux paramètres de la configuration de transfert créée, au format JSON. Exemple : --params='{"param":"param_value"}'. Voici les paramètres d'un transfert de données Oracle :

    • connector.networkAttachment (facultatif) : nom du rattachement de réseau permettant de se connecter à la base de données Oracle.
    • connector.authentication.Username : nom d'utilisateur du compte Oracle.
    • connector.authentication.Password : mot de passe du compte Oracle.
    • connector.database : nom de la base de données Oracle.
    • connector.endpoint.host : nom d'hôte ou adresse IP de la base de données.
    • connector.endpoint.port : numéro de port utilisé par la base de données Oracle pour les connexions entrantes, telles que 1520.
    • connector.connectionType : type d'URL de connexion, SERVICE, SID ou TNS.
    • connector.tls.mode : spécifiez une configuration TLS à utiliser avec ce transfert :
      • ENCRYPT_VERIFY_CA_AND_HOST pour chiffrer les données et valider l'autorité de certification et le nom d'hôte
      • ENCRYPT_VERIFY_CA pour chiffrer les données et valider uniquement l'autorité de certification
      • ENCRYPT_VERIFY_NONE pour le chiffrement des données uniquement
      • DISABLE pour aucune vérification ni aucun chiffrement
    • connector.tls.trustedServerCertificate : (facultatif) fournissez un ou plusieurs certificats encodés au format PEM. Obligatoire uniquement si connector.tls.mode est ENCRYPT_VERIFY_CA_AND_HOST ou ENCRYPT_VERIFY_CA.
    • ingestionType : spécifiez FULL ou INCREMENTAL. Les transferts incrémentiels sont disponibles en preview. Pour en savoir plus, consultez Transferts complets ou incrémentiels.
    • writeMode : spécifiez WRITE_MODE_APPEND ou WRITE_MODE_UPSERT.
    • watermarkColumns : spécifiez les colonnes de votre tableau comme colonnes de filigrane. Ce champ est obligatoire pour les transferts incrémentaux.
    • primaryKeys : spécifiez les colonnes de votre tableau comme clés primaires. Ce champ est obligatoire pour les transferts incrémentaux.
    • assets : chemin d'accès aux objets Oracle à transférer vers BigQuery, au format suivant : DATABASE_NAME/SCHEMA_NAME/TABLE_NAME

Lorsque vous spécifiez plusieurs composants lors d'un transfert incrémentiel, les valeurs des champs watermarkColumns et primaryKeys correspondent à la position des valeurs dans le champ assets. Dans l'exemple suivant, dep_id correspond à la table DB1/USER1/DEPARTMENT, tandis que report_by et report_title correspondent à la table DB1/USER1/EMPLOYEES.

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

Par exemple, la commande suivante crée un transfert de données Oracle dans le projet par défaut avec tous les paramètres requis :

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

Utilisez la méthode projects.locations.transferConfigs.create et fournissez une instance de la ressource TransferConfig.

Lorsque vous enregistrez la configuration du transfert, le connecteur Oracle déclenche automatiquement une exécution du transfert en fonction de l'option de programmation que vous avez choisie. À chaque exécution du transfert, le connecteur Oracle transfère toutes les données disponibles d'Oracle vers BigQuery.

Pour exécuter manuellement un transfert de données en dehors de votre calendrier habituel, vous pouvez lancer une exécution de remplissage.

Mappage des types de données

Le tableau suivant mappe les types de données Oracle aux types de données BigQuery correspondants.

Type de donnée Oracle Type de données 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

Résoudre les problèmes liés à la configuration d'un transfert

Si vous rencontrez des problèmes lors de la configuration de votre transfert de données, consultez la section Problèmes de transfert Oracle.

Tarifs

Pour en savoir plus sur les tarifs des transferts Oracle, consultez la page Tarifs du service de transfert de données.

Étape suivante