Charger des données Oracle dans BigQuery

Pour planifier des transferts de données récurrents de votre base de données Oracle vers BigQuery, vous créez une configuration de transfert afin de spécifier les objets de données à transférer et la fréquence de planification du transfert de données. Une fois la configuration de transfert configurée, le service de transfert de données BigQuery transfère les dernières données dans une table BigQuery selon la planification spécifiée.

Pour obtenir des informations générales sur les transferts Oracle, y compris les options de configuration, consultez la section Présentation des transferts de données Oracle.

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 europe-west4 région.
  • 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 configuration de transfert ne peut accepter qu'une seule exécution de transfert de données à un moment donné. Si une deuxième exécution de transfert de données est programmée avant la fin de la première, seule la première exécution de transfert de données se termine, tandis que toutes les autres exécutions de transfert de données qui chevauchent la première sont ignorées.
    • Pour éviter les transferts ignorés dans une seule 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 de clé indexées et partitionnées pour transférer vos données par lots parallèles. Pour cette raison, nous vous recommandons de spécifier des colonnes de clé primaire ou d'utiliser des colonnes indexées dans votre table afin d'améliorer les performances et de réduire le taux d'erreur dans vos transferts de données.
    • Si vous avez des contraintes de clé primaire ou indexée, seuls les types de colonnes suivants sont compatibles avec 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 accepter plus de 2 000 000 d'enregistrements par table.
  • Si le rattachement de réseau et l'instance de machine virtuelle (VM) que vous avez configurés se trouvent dans des régions différentes, il est possible que les données soient déplacées entre les régions lorsque vous les transférez depuis Oracle.

Limites des transferts incrémentiels

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

  • Vous ne pouvez choisir que des colonnes TIMESTAMP comme colonnes de filigrane.
  • L'ingestion incrémentielle n'est compatible qu'avec les éléments comportant des colonnes de filigrane 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 seule configuration de transfert ne peut accepter qu'une ingestion incrémentielle ou complète.
  • Vous ne pouvez pas mettre à jour les objets dans 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.
  • La table BigQuery de destination est mise en cluster à l'aide de la clé primaire fournie et est soumise aux limites des tables en cluster.
  • Lorsque vous mettez à jour une configuration de transfert existante vers le mode d'ingestion incrémentielle pour la première fois, le premier transfert de données après cette mise à jour transfère toutes les données disponibles à partir de votre source de données. Tous les transferts de données incrémentiels suivants ne transféreront que les lignes nouvelles et mises à jour de votre source de données.

Pour en savoir plus sur le fonctionnement des transferts incrémentiels, consultez la section Transferts complets ou incrémentiels.

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 du service de transfert de données BigQuery, demandez à votre administrateur de vous accorder le rôle IAM Administrateur BigQuery (roles/bigquery.admin) dans votre projet. Pour en savoir plus sur l'attribution de rôles, consultez 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 la section Accorder l'accès bigquery.admin.

Charger des données Oracle dans BigQuery

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

Console

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

    Accéder aux 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.
    • Dans le champ Mode TLS, sélectionnez une option dans le menu déroulant. Pour en savoir plus sur les modes TLS, consultez Configuration TLS.
    • Dans le champ 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émentiels.
    • Dans le champ 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 un nom pour le 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 Google Cloud projet. 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 vérifier l'autorité de certification et le nom d'hôte
      • ENCRYPT_VERIFY_CA pour chiffrer les données et vérifier 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 compatibles avec la version preview. Pour en savoir plus, consultez la section Transferts complets ou incrémentiels.
    • writeMode : spécifiez WRITE_MODE_APPEND ou WRITE_MODE_UPSERT.
    • watermarkColumns : spécifiez des colonnes dans votre table comme colonnes de filigrane. Ce champ est obligatoire pour les transferts incrémentiels.
    • primaryKeys : spécifiez des colonnes dans votre table comme clés primaires. Ce champ est obligatoire pour les transferts incrémentiels.
    • 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 éléments 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 projects.locations.transferConfigs.create méthode et fournissez une instance de la TransferConfig ressource.

Lorsque vous enregistrez la configuration de transfert, le connecteur Oracle déclenche automatiquement une exécution de transfert en fonction de votre option de planification. À chaque exécution de 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 planification régulière, vous pouvez démarrer une exécution de remplissage.

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.

Étape suivante