Migrer une base de données Oracle vers Cloud SQL pour PostgreSQL à l'aide de Striim

Last reviewed 2021-06-28 UTC

Dans ce tutoriel, vous allez utiliser Striim pour migrer Oracle® Database Enterprise Edition 18c ou une version ultérieure depuis un environnement sur site ou un environnement cloud vers une instance Cloud SQL pour PostgreSQL hébergée sur Google Cloud. Le tutoriel utilise des tables de l'exemple de schéma de ressources humaines d'Oracle.

Ce tutoriel est destiné aux architectes de bases de données d'entreprise, aux ingénieurs de bases de données et aux propriétaires de données qui souhaitent utiliser Striim pour migrer ou répliquer des bases de données Oracle vers Cloud SQL pour PostgreSQL. Vous devez posséder des connaissances de base sur l'utilisation de Striim pour créer des pipelines. Vous devez également connaître les concepts clés et l'interface Web Striim, mais aussi savoir créer une application à l'aide de l'outil Flow Designer de Striim.

Striim est un partenaire technologique Google Cloud dédié à la migration de bases de données. Striim simplifie les migrations en ligne grâce à une interface par glisser-déposer qui permet de configurer un transfert continu de données entre des bases de données. Pour les migrations vers Google Cloud, Striim offre une plate-forme de streaming non-intrusive, efficace et facile à itérer pour les opérations d'extraction, de transformation et de chargement (ETL). Pour créer le pipeline de migration dans le cadre de ce tutoriel, vous utiliserez l'outil Flow Designer de Striim.

Si vous n'êtes pas familiarisé avec la migration de base de données, consultez cette conférence technique enregistrée lors de Cloud Next 2019.

Architecture

La migration de bases de données à l'aide de Striim implique deux étapes de déplacement séquentiel des données :

  • Étape 1 : Réplication unique initiale de la base de données Oracle.
  • Étape 2 : Réplication continue de chaque modification validée sur le système de base de données source à l'aide de la capture des données modifiées (CDC).

Le schéma suivant illustre une architecture de déploiement de base :

L'architecture de déploiement se connecte à une base de données Oracle et écrit des données dans une instance Cloud SQL pour PostgreSQL sur Google Cloud.

Cette architecture implique l'exécution de l'application Striim sur une instance Compute Engine. L'application se connecte à une base de données Oracle hébergée sur site ou dans le cloud et écrit des données sur une instance Cloud SQL pour PostgreSQL sur Google Cloud.

Pour éviter tout problème de réseau ou de connectivité entre les instances Striim et Cloud SQL, utilisez le même réseau pour les deux instances. Vous pouvez déployer Striim depuis Google Cloud Marketplace sur une instance Compute Engine ou, si vous avez besoin d'une haute disponibilité, vous pouvez déployer Striim en tant que cluster.

Pour ce tutoriel, déployez à partir de Cloud Marketplace.

L'avantage à déployer Striim à partir Cloud Marketplace est que cela vous permet de vous connecter à diverses bases de données et sources de données à l'aide des adaptateurs intégrés correspondants. Vous pouvez connecter les adaptateurs à l'aide de Flow Designer, l'interface interactive de glisser-déposer de Striim, de manière à former un graphe acyclique. Ce graphique est également appelé pipeline Striim ou application Striim.

Le cas d'utilisation de migration du présent tutoriel utilise trois adaptateurs Striim :

  • Lecteur de base de données : lit les données de la base de données source Oracle lors de l'étape du chargement initial.
  • Lecteur Oracle : lit les données de la base de données source Oracle pendant la phase de réplication continue en utilisant LogMiner.
  • Rédacteur de base de données : écrit les données dans la base de données Cloud SQL pour PostgreSQL lors du chargement initial et pendant la réplication continue des données.

Objectifs

  • Préparer votre base de données Oracle en tant que base de données source pour la migration ou la réplication.

  • Préparer une base de données Cloud SQL pour PostgreSQL en tant que base de données cible pour la migration ou la réplication.

  • Satisfaire les conditions préalables à l'installation et à l'exécution de Striim.

  • Convertir le schéma de la base de données Oracle en schéma correspondant dans PostgreSQL.

  • Effectuer le chargement initial de votre base de données Oracle vers Cloud SQL pour PostgreSQL.

  • Configurer la réplication continue de votre base de données Oracle vers Cloud SQL pour PostgreSQL.

Coûts

Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :

Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

La solution Striim disponible dans Cloud Marketplace est accompagnée d'une licence d'essai gratuit à durée limitée. À la fin de l'essai, les frais d'utilisation sont facturés sur votre compte Google Cloud. Vous pouvez également obtenir des licences Striim directement auprès de Striim pour les déploiements sur site et sur machine virtuelle (VM) Compute Engine. Des coûts liés à l'exécution d'une base de données Oracle en dehors de Google Cloud peuvent également s'appliquer.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Vérifiez que la facturation est activée pour votre projet Google Cloud.

Ce tutoriel suppose que vous disposez déjà des éléments suivants :

  • Une base de données Oracle Database Enterprise Edition 18c ou ultérieure pour Linux x86-64 que vous souhaitez migrer.
  • Une machine Compute Engine CentOS sur laquelle Striim est installé. Vous pouvez déployer Striim en utilisant la solution Google Cloud Marketplace.

Préparer la base de données Oracle

Les sections suivantes décrivent les modifications de configuration que vous devrez peut-être effectuer pour vous connecter à votre base de données Oracle et la migrer avec Striim. Pour en savoir plus sur la configuration, consultez la page Tâche de configuration Oracle de base.

Choisir la source pour Oracle CDC

Bien qu'il existe différentes sources Oracle CDC, ce tutoriel utilise LogMiner. Pour en savoir plus sur les autres options, consultez la page Autres sources Oracle CDC.

Préparer Oracle Database Enterprise Edition 18c (ou version ultérieure)

Pour préparer la base de données Oracle, suivez les instructions de la page Documentation Striim pour effectuer les étapes suivantes :

  1. Activez l'option archivelog de Striim.
  2. Activez les données de journaux supplémentaires dans Striim.
  3. Activez la journalisation des clés primaires dans Striim.
  4. Créez un utilisateur Oracle disposant des droits LogMiner pour Striim.

    Que la migration porte sur une base de données de conteneurs (CDB) ou sur une base de données connectable (PDB), vous devez être connecté à la base de données de conteneurs (CDB) pour effectuer ces étapes. Nous vous recommandons d'installer et d'utiliser SQL*Plus pour interagir avec la base de données Oracle.

  5. Créez une table quiescemarker dans Striim.

    L'adaptateur de lecteur Oracle pour CDC de Striim a besoin d'une table pour stocker les métadonnées lorsqu'il suspend une application. Si vous utilisez LogMiner comme source pour la CDC (comme dans le présent tutoriel), vous avez besoin de la table des repères de suspension "quiescemarker". Vous devez être connecté à la CDB lorsque vous suivez les étapes de création de la table.

  6. Établissez une connectivité réseau entre votre base de données Oracle et l'instance Striim.

    Par défaut, l'écouteur Oracle se trouve sur le port 1521. Vérifiez que l'adresse IP de l'instance Striim est autorisée à se connecter au port de l'écouteur Oracle et qu'aucune règle de pare-feu ne la bloque. Le port sur lequel l'écouteur Oracle est configuré se trouve dans le fichier $ORACLE_HOME/network/admin/tnsnames.ora.

  7. Notez le numéro de modification système (SCN) de la base de données Oracle.

    Le SCN est un horodatage interne utilisé pour référencer les modifications apportées à une base de données.

    Dans votre base de données Oracle, obtenez le SCN le plus ancien :

    SELECT MIN(start_scn) FROM gv$transaction;
    

    Copiez ce numéro. Vous en aurez besoin plus tard dans les étapes s'appliquant au pipeline de réplication continue.

Préparer l'instance Striim

Pour en savoir plus sur les systèmes d'exploitation compatibles avec Striim, consultez la configuration système requise. Pour utiliser le lecteur Oracle avec LogMiner, insérez le pilote JDBC Oracle dans le chemin de classe Java de votre instance Striim. Appliquez les étapes suivantes sur chaque serveur Striim qui exécute un adaptateur de lecteur Oracle :

  1. Connectez-vous à votre compte Oracle, puis téléchargez le fichier ojdbc8.jar sur votre ordinateur local.
  2. Cliquez sur le lien Télécharger du fichier ojdbc8.jar.

    • Si vous acceptez les conditions de licence, cliquez sur J'ai lu et j'accepte le contrat de licence Oracle pour télécharger le fichier.
  3. Dans Cloud Shell, créez un bucket Cloud Storage et importez-y le fichier .jar :

    gsutil mb -b on -l REGION gs://BUCKET_NAME
    gsutil cp PATH/ojdbc8.jar gs://BUCKET_NAME
    

    Remplacez l'élément suivant :

    • REGION : région dans laquelle vous souhaitez créer le bucket Cloud Storage.
    • BUCKET_NAME : nom du bucket Cloud Storage dans lequel vous souhaitez stocker le fichier ojdbc8.jar.
    • PATH : chemin d'accès où vous avez téléchargé le fichier ojdbc8.jar.

    Une fois le fichier enregistré sur votre ordinateur local, nous vous recommandons de télécharger le fichier .jar vers un bucket Cloud Storage afin de pouvoir le télécharger sur n'importe quelle instance.

  4. Ouvrez une session SSH avec votre instance Striim, puis téléchargez le fichier .jar sur votre instance Striim et placez-le dans le répertoire /opt/striim/lib :

    sudo su - striim gsutil cp gs://BUCKET_NAME/ojdbc8.jar /opt/striim/lib
    
  5. Vérifiez que le fichier ojdbc8.jar dispose des autorisations appropriées :

     sudo ls -l /opt/striim/lib/ojdbc8.jar
    

    Le résultat doit se présenter comme suit :

    -rwxrwx--- striim striim

  6. (Facultatif) Si le fichier .jar ne dispose pas des autorisations précédentes, définissez les autorisations appropriées :

    sudo chmod 770 /opt/striim/lib/ojdbc8.jar
    sudo chown striim /opt/striim/lib/ojdbc8.jar
    sudo chgrp striim /opt/striim/lib/ojdbc8.jar
    
  7. Arrêtez et redémarrez Striim.

    Après avoir apporté des modifications à la configuration (telles que les modifications d'autorisations précédentes), vous devez redémarrer Striim.

    • Si vous utilisez la distribution Linux CentOS 7, arrêtez Striim :

      sudo systemctl stop striim-node
      sudo systemctl stop striim-dbms
      
    • Si vous utilisez la distribution Linux CentOS 7, démarrez Striim :

      sudo systemctl start striim-dbms
      sudo systemctl start striim-node
      

    Pour en savoir plus sur l'arrêt et le redémarrage de Striim pour un autre système d'exploitation, consultez la section Démarrer et arrêter Striim.

  8. Installer le client psql sur l'instance Striim.

    Vous utiliserez ce client pour vous connecter à l'instance Cloud SQL et créer des schémas plus loin dans ce tutoriel.

Préparer le schéma Cloud SQL pour PostgreSQL

Lorsque vous copiez ou répliquez en continu des données tabulaires d'une base de données à une autre, Striim exige généralement que la base de données cible contienne les tables correspondantes avec le schéma approprié. Google Cloud n'a pas d'utilitaire pour préparer le schéma, mais vous pouvez utiliser l'utilitaire de conversion de schéma de Striim ou un utilitaire Open Source tel que ora2pg.

Conserver les clés étrangères pendant le chargement initial

Pendant la phase de chargement initial, faites attention au traitement des clés étrangères. Les clés étrangères établissent la relation entre les tables d'une base de données relationnelle. La création ou l'insertion hors ordre d'une clé étrangère dans la base de données cible peut détruire la relation entre les deux tables. Si l'intégrité entre les deux bases de données est compromise, des erreurs peuvent se produire. Par conséquent, il est important de générer toutes les déclarations de clé étrangère dans un fichier distinct lors de l'exportation du schéma (plus loin dans cette section).

Lors de la réplication continue dans les pipelines CDC, les événements de la base de données source sont propagés dans la base de données cible dans l'ordre dans lequel ils se produisent. Si vous gérez correctement les clés étrangères sur votre source, les opérations de clé étrangère sont répliquées depuis la source vers la base de données cible dans le même ordre.

En revanche, le pipeline de chargement initial utilise par défaut le chargement des tables dans l'ordre alphabétique. Si vous ne désactivez pas les clés étrangères avant le chargement initial, des erreurs de violation de clé étrangère se produisent. Pour répliquer des données lors du chargement initial des tables de base de données sources vers les tables cibles sur Cloud SQL pour PostgreSQL, vous devez désactiver les contraintes de clé étrangère sur les tables. Sinon, les contraintes risquent d'être enfreintes pendant le processus de réplication.

Depuis juin 2021, Cloud SQL pour PostgreSQL n'accepte plus les options de configuration permettant de désactiver les contraintes de clé étrangère.

Pour gérer les contraintes de clé étrangère, procédez comme suit :

  1. Renvoyez toutes les déclarations de clé étrangère dans un fichier distinct lors de l'exportation du schéma.
  2. Créez les schémas de table dans la base de données Cloud SQL pour PostgreSQL sans les contraintes de clé étrangère.
  3. Terminez la réplication initiale des données.
  4. Appliquez les contraintes de clé étrangère aux tables.
  5. Créez le pipeline de réplication continue.

Ce tutoriel propose deux options de conversion de schéma qui sont expliquées dans les sections suivantes :

Convertir le schéma à l'aide de l'utilitaire de conversion de schéma de Striim

L'utilitaire de conversion de schéma Striim prépare Cloud SQL pour PostgreSQL afin d'intégrer les données au schéma cible et de créer des tables reflétant la base de données Oracle source.

L'outil de conversion de schéma Striim convertit les objets sources suivants en objets cibles équivalents :

  • Tables
  • Clés primaires
  • Types de données
  • Contraintes uniques
  • Contraintes NOT NULL
  • Clés étrangères

L'utilitaire de conversion de schéma Striim vous permet d'analyser la base de données source et de générer des scripts LDD pour créer des schémas équivalents dans la base de données cible.

Nous vous recommandons de créer manuellement le schéma dans la base de données cible à l'aide des scripts LDD générés. Il est plus simple de sélectionner un sous-ensemble de vos tables, d'exporter le schéma, puis d'importer le schéma dans votre base de données cible Cloud SQL pour PostgreSQL.

L'exemple suivant montre comment préparer votre base de données Cloud SQL pour PostgreSQL cible pour le chargement initial en important votre schéma à l'aide de l'utilitaire de conversion de schéma Striim :

  1. Ouvrez une connexion SSH sur votre instance Striim.

  2. Accédez au répertoire /opt/striim :

    cd /opt/striim
    
  3. Répertoriez tous les arguments :

    bin/schemaConversionUtility.sh --help
    
  4. Exécutez l'utilitaire de conversion de schéma et incluez les indicateurs appropriés pour votre cas d'utilisation :

    bin/schemaConversionUtility.sh \
    -s=oracle \
    -d=SOURCE_DATABASE_CONNECTION_URL \
    -u=SOURCE_DATABASE_USERNAME \
    -p=SOURCE_DATABASE_PASSWORD \
    -b=SOURCE_TABLES_TO_CONVERT \
    -t=postgres \
    -f=false
    

    Remplacez les éléments suivants :

    • SOURCE_DATABASE_CONNECTION_URL : URL de connexion pour la base de données Oracle (par exemple, "jdbc:oracle:thin:@12.123.123.12:1521/APPSPDB.WORLD" ou "jdbc:oracle:thin:@12.123.123.12:1521:XE")
    • SOURCE_DATABASE_USERNAME : nom d'utilisateur Oracle à utiliser pour se connecter à la base de données Oracle.
    • SOURCE_DATABASE_PASSWORD : mot de passe Oracle à utiliser pour se connecter à la base de données Oracle.
    • SOURCE_TABLES_TO_CONVERT : noms de table de la base de données source utilisés pour convertir des schémas.

    Assurez-vous d'utiliser l'argument -f=false. Cet argument exporte les déclarations de clé étrangère dans un fichier distinct.

    Le dossier de sortie peut contenir tout ou partie des fichiers suivants. Pour en savoir plus sur ces fichiers, consultez la documentation de l'utilitaire de conversion de schéma Striim.

    Nom du fichier de sortie Description
    converted_tables.sql Contient toutes les tables converties qui ne nécessitent aucune coercition.
    converted_tables_with_striim_intelligence.sql Contient toutes les tables converties qui ont été converties avec une coercition.
    conversion_failed_tables.sql Contient les tables pour lesquelles une tentative de conversion a été effectuée mais aucun mappage n'a été obtenu.
    converted_foreignkey.sql Contient toutes les déclarations de contrainte de clé étrangère.
    conversion_failed_foreignkey.sql Contient toutes les conversions de clés étrangères ayant échoué.
    conversion_report.txt Contient un rapport détaillé sur la conversion de schéma.

    Dans ce tutoriel, vous utilisez le fichier converted_tables.sql pour créer des tables équivalentes dans la base de données Cloud SQL pour PostgreSQL sans les contraintes de clé étrangère. Après la réplication initiale, vous utilisez le fichier converted_foreignkey.sql pour appliquer les contraintes de clé étrangère.

Convertir le schéma à l'aide d'Ora2Pg

L'utilitaire Ora2Pg est une autre option pour convertir des schémas de table Oracle en schémas PostgreSQL équivalents. Vous pouvez installer cet utilitaire sur une VM Google Cloud distincte.

L'utilitaire Ora2Pg convertit le schéma Oracle et exporte les instructions DDL requises pour créer des tables équivalentes dans la base de données PostgreSQL. Ces instructions LDD sont exportées dans un fichier de sortie nommé output.sql.

Lors de l'exportation du schéma, vous exportez et enregistrez toutes les déclarations de clé étrangère dans un fichier distinct en utilisant l'option suivante dans le fichier de configuration Ora2Pg :

FILE_PER_FKEYS 1

Par défaut, les clés étrangères sont exportées dans le fichier de sortie principal (output.sql). Lorsque vous activez l'option FILE_PER_FKEYS (1), les clés étrangères sont exportées dans un fichier distinct nommé FKEYS_output.sql.

Dans ce tutoriel, vous utilisez le fichier output.sql pour créer des tables équivalentes dans la base de données Cloud SQL pour PostgreSQL, sans les contraintes de clé étrangère. Après la réplication initiale, vous utilisez le fichier FKEY_output.sql pour appliquer les contraintes de clé étrangère.

Préparer l'instance Cloud SQL pour PostgreSQL

Pour permettre à Striim d'écrire des données sur une instance Cloud SQL pour PostgreSQL, vous devez créer une instance Cloud SQL. Vous devez également créer les tables de base de données et le schéma dans lequel Striim écrira :

  1. Dans Cloud Shell, créez une instance Cloud SQL pour PostgreSQL. Nous vous recommandons de configurer Cloud SQL pour utiliser une adresse IP privée. Utilisez le paramètre --network pour configurer cette adresse :

    $INSTANCE_NAME=INSTANCE_NAME
    
    gcloud beta sql instances create INSTANCE_NAME \
        --database-version=POSTGRES_12 \
        --network=NETWORK \
        --cpu=NUMBER_CPUS \
        --memory=MEMORY_SIZE \
        --region=REGION
    

    Remplacez l'élément suivant :

    • INSTANCE_NAME : nom de l'instance
    • NETWORK : nom du réseau VPC que vous utilisez pour cette instance.
    • NUMBER_CPUS : nombre de processeurs virtuels de l'instance.
    • MEMORY_SIZE : quantité de mémoire pour l'instance. Par exemple, 3072 Mio ou 9 Gio. Gio est la valeur par défaut si vous ne spécifiez pas l'unité.
    • REGION : région dans laquelle vous avez créé le bucket Cloud Storage.
  2. Créez un nom d'utilisateur et un mot de passe sur l'instance Cloud SQL :

    CLOUD_SQL_USERNAME=CLOUD_SQL_USERNAME
    
    gcloud sql users create $CLOUD_SQL_USERNAME \
      --instance=$INSTANCE_NAME \
      --password=CLOUD_SQL_PASSWORD
    

    Remplacez l'élément suivant :

    • CLOUD_SQL_USERNAME : nom d'utilisateur pour votre instance Cloud SQL.
    • CLOUD_SQL_PASSWORD : mot de passe associé au nom d'utilisateur Cloud SQL.

    Cet utilisateur est propriétaire des tables PostgreSQL. Striim utilise également les identifiants de cet utilisateur pour se connecter à la base de données Cloud SQL pour PostgreSQL.

    Les fichiers de schéma exportés lors de l'étape de conversion de schéma peuvent comporter une instruction LDD qui accorde la propriété à un utilisateur, comme dans l'exemple suivant :

    CREATE SCHEMA <SCHEMA_NAME>;
    ALTER SCHEMA <SCHEMA_NAME> OWNER TO <USER>;
    

    Vous devrez peut-être remplacer SCHEMA_NAME par CLOUD_SQL_SCHEMA et USER par le CLOUD_SQL_USERNAME créé précédemment.

  3. Créer une base de données PostgreSQL

    CLOUD_SQL_DATABASE_NAME=CLOUD_SQL_DATABASE_NAME
    
    gcloud sql databases create $CLOUD_SQL_DATABASE_NAME \
      --instance=$INSTANCE_NAME
    

    Remplacez l'élément suivant :

    • CLOUD_SQL_DATABASE_NAME : nom de la base de données PostgreSQL
  4. Configurez la base de données Cloud SQL pour PostgreSQL afin d'autoriser l'accès à partir de l'instance Striim. Les options de connectivité varient selon que vous avez configuré l'instance Cloud SQL pour qu'elle utilise une adresse IP publique ou privée.

    1. Si vous avez configuré une adresse IP publique, ajoutez-la en tant qu'adresse autorisée sur l'instance Cloud SQL. La capture d'écran suivante montre comment procéder depuis Google Cloud Console :

      Configurez la base de données Cloud SQL pour PostgreSQL afin d'autoriser l'accès à partir de l'instance Striim.

    2. Si vous avez configuré une adresse IP privée, les options de connectivité disponibles varient selon que l'instance Cloud SQL et l'instance Striim utilisées se trouvent ou non sur le même réseau VPC.

      1. Si votre instance Striim se trouve sur le même réseau VPC que votre instance Cloud SQL, l'instance Striim peut établir une connexion avec l'instance Cloud SQL.

        La capture d'écran suivante montre que l'instance Cloud SQL est associée au réseau VPC par défaut. Si l'instance Striim a également été créée sur le réseau VPC par défaut, elle peut se connecter en mode privé à l'instance Cloud SQL.

        L'instance Cloud SQL est associée au réseau VPC par défaut.

      2. Si votre instance Striim se trouve sur un réseau VPC différent de celui de votre instance Cloud SQL, configurez l'accès aux services privés sur le réseau VPC de votre instance Striim.

  5. Créez des schémas de table sans contraintes de clé étrangère dans la base de données Cloud SQL pour PostgreSQL

    1. Pour exporter output.sql lors de l'étape de conversion du schéma, utilisez le fichier output.sql pour créer les schémas.

    2. Pour exporter converted_tables.sql lors de l'étape de conversion du schéma, utilisez le fichier converted_tables.sql pour créer les schémas.

      Vous pouvez exécuter l'un ou l'autre de ces scripts à l'aide de n'importe quel client PostgreSQL connecté à l'instance Cloud SQL pour PostgreSQL. Cependant, nous vous recommandons d'utiliser le client PostgreSQL que vous avez installé précédemment sur l'instance Striim.

    3. Ouvrez une session SSH avec votre instance Striim.

    4. Créez les schémas :

      psql -h HOSTNAME -p CLOUD_SQL_PORT -d CLOUD_SQL_DATABASE_NAME -U CLOUD_SQL_USERNAME -f PATH_TO_MAIN_SQL_FILE
      

      Remplacez l'élément suivant :

      • HOSTNAME : adresse IP de l'instance Cloud SQL.
      • CLOUD_SQL_PORT : port de l'instance Cloud SQL à laquelle se connecter. Par défaut, ce port est 5432.
      • PATH_TO_MAIN_SQL_FILE : chemin d'accès au script principal sur l'instance Striim.

      Exemple :

      psql -h 12.123.123.123 -d testdb -U hr -p 5432 -f output.sql

  6. Vérifiez que les tables ont été créées :

    1. Connectez-vous à la base de données Cloud SQL pour PostgreSQL :

      psql -h HOSTNAME -p 5432 -d CLOUD_SQL_DATABASE_NAME -U
      CLOUD_SQL_USERNAME
      
    2. Répertoriez les tables de cette base de données :

      \dt
      

      La sortie est une liste de tables que le script de conversion de schéma de table a créées à l'étape précédente.

  7. Créez une table de points de contrôle sur la base de données Cloud SQL pour PostgreSQL :

    1. Connectez-vous à la base de données Cloud SQL pour PostgreSQL :

      psql -h HOSTNAME -p 5432 -d CLOUD_SQL_DATABASE_NAME -U
      CLOUD_SQL_USERNAME
      
    2. Créez la table :

      CREATE TABLE chkpoint (
      id character varying(100) primary key,
      sourceposition bytea,
      pendingddl numeric(1),
      ddl text);
      

      Striim a besoin de cette table pour gérer les points de contrôle pendant le processus de réplication continue.

Charger la base de données Oracle dans la base de données Cloud SQL pour PostgreSQL

Cette section décrit la réplication unique initiale de la base de données Oracle vers la base de données Cloud SQL pour PostgreSQL.

Établir une connexion à Oracle à partir de Striim

Suivez les instructions de la page Exécuter Striim dans Google Cloud. Pour le chargement initial, utilisez l'adaptateur de lecteur de base de données Striim pour vous connecter à Oracle à partir de Striim. Vous pouvez également utiliser l'assistant CDC de Striim.

  1. Dans l'adaptateur du lecteur de bases de données Striim, accédez à Sources puis recherchez et sélectionnez Base de données dans la liste.

  2. Définissez les propriétés suivantes dans la fenêtre Database (Base de données) :

    • Nom : identifie ce composant du pipeline de migration.
    • Adaptateur : DatabaseReader.
    • URL de connexion : saisissez une chaîne unique pour vous connecter à la base de données Oracle :

      jdbc:oracle:thin:@HOSTNAME:ORACLE_PORT:SID
      

      OU

      jdbc:oracle:thin:@HOSTNAME:ORACLE_PORT/PDB_OR_CDB_SERVICE_NAME
      

      Remplacez l'élément suivant :

      • ORACLE_PORT : port de la base de données Oracle (1521 par défaut)
      • SID : SID de la base de données Oracle
      • PDB_OR_CDB_SERVICE_NAME : nom du service PDB ou CDB : si vos tables se trouvent dans une PDB, utilisez PDB_SERVICE_NAME. Si elles se trouvent dans une CDB, utilisez CDB_SERVICE_NAME.

      Vous trouverez le nom du port et du service dans le fichier tnsnames.ora situé à l'emplacement $ORACLE_HOME/network/admin/tnsnames.ora sur l'instance Oracle.

    • Nom d'utilisateur et mot de passe : utilisez l'utilisateur Oracle (utilisateur c##striim) que vous avez créé lors des étapes précédentes. Striim utilise ce nom d'utilisateur et ce mot de passe pour se connecter à votre base de données Oracle et lire les tables.

    • Tables : pour Oracle, le lecteur de base de données a également besoin d'une liste de noms de tables à répliquer. Cette propriété est spécifiée dans le champ "Tables" sous Afficher les propriétés facultatives. Le format de cette propriété est le suivant :

      ORACLE_SCHEMA.ORACLE_TABLE_NAME
      

      Remplacez l'élément suivant :

      • ORACLE_SCHEMA : nom du schéma Oracle.
      • ORACLE_TABLE_NAME : noms des tables Oracle dans ce schéma.

      Vous pouvez également spécifier une liste incluant plusieurs tables et vues matérialisées séparées par un point-virgule ou par les caractères génériques suivants :

      % : toute série de caractères.

      _ : n'importe quel caractère.

      Par exemple, HR.% lit toutes les tables du schéma des ressources humaines. Au moins une table doit correspondre au caractère générique. Dans le cas contraire, le lecteur de base de données échoue avec l'erreur suivante :

      Could not find tables specified in the database

      • Suspendre une fois le chargement initial terminé : faites passer ce champ en vert en le faisant glisser vers la droite pour mettre en pause le pipeline une fois le chargement initial est terminé.

      • Sortie vers : nom de la sortie de cet adaptateur. Utilisez une chaîne sensible à la casse sans caractères spéciaux ni espaces.

  3. Cliquez sur Enregistrer. Les propriétés de l'adaptateur s'affichent :

    Propriétés de l'adaptateur de lecteur de base de données Striim.

Tester la connexion

Maintenant que vous êtes connecté à Oracle depuis Striim, testez la connexion.

  1. Cliquez sur la liste déroulante Créé pour tester la connectivité de Striim à la base de données Oracle.

  2. Cliquez sur Déployer l'application.

  3. Sélectionnez la sortie de cet adaptateur, puis cliquez sur Aperçu pour afficher les données en temps réel au fur et à mesure que Striim les lit à partir de la source.

    Affichage en temps réel des données sources dans l'interface Striim.

  4. Cliquez sur la liste déroulante Déployé, puis sur Démarrer l'application.

  5. (Facultatif) Cliquez sur la liste déroulante Déployé puis sur Annuler le déploiement de l'application pour corriger les erreurs qui surviennent.

  6. (Facultatif) Cliquez sur Réactiver l'application une fois toutes les erreurs corrigées pour redémarrer l'application.

  7. Cliquez sur le groupe de déploiement default (par défaut).

  8. Vérifiez que l'option Valider les mappages de table est activée, puis cliquez sur Déployer.

    Le volet des données d'aperçu et l'état du pipeline passent à Suspendu.

À ce stade du tutoriel, vous avez vérifié que Striim est en mesure d'établir une connexion à votre base de données Oracle et de lire les données qu'elle contient.

Ajouter une base de données Cloud SQL pour PostgreSQL en tant que cible

Pour cette migration, vous écrivez des données dans l'instance Cloud SQL pour PostgreSQL. Striim fournit un adaptateur de rédacteur de base de données générique appelé Rédacteur de base de données que vous pouvez utiliser pour la migration.

  1. Dans l'outil Flow Designer de Striim, accédez à Cibles. Recherchez et sélectionnez Cloud SQL Postgres dans la liste.
  2. Faites glisser Rédacteur de base de données vers le pipeline.
  3. Définissez les propriétés suivantes :

    • Adaptateur : DatabaseWriter.

    • URL de connexion : saisissez une chaîne unique pour établir une connexion à l'instance Cloud SQL :

      jdbc:postgresql://CLOUD_SQL_IP_ADDRESS:CLOUD_SQL_PORT/CLOUD_SQL_DATABASE_NAME?stringtype=unspecified
      

      Remplacez l'élément suivant :

      • CLOUD_SQL_IP_ADDRESS : adresse IP de l'instance Cloud SQL.

      Exemple :

      jdbc:postgresql://12.123.12.12:5432/postgres?stringtype=unspecified
      
    • Nom d'utilisateur et mot de passe : saisissez le nom d'utilisateur et le mot de passe Cloud SQL que vous avez créés précédemment.

    • Tables : créez un mappage entre les noms de vos tables de base de données Oracle et les noms des tables Cloud SQL. Indiquez quelle table de base de données Oracle est écrite dans quelle table Cloud SQL. Ce mappage utilise le format suivant :

      ORACLE_SCHEMA.ORACLE_TABLE_NAME,CLOUD_SQL_SCHEMA.CLOUD_SQL_TABLE_NAME
      

      Remplacez l'élément suivant :

      • CLOUD_SQL_SCHEMA : nom du schéma PostgreSQL.
      • CLOUD_SQL_TABLE_NAME : nom de la table PostgreSQL.

      Pour mapper plusieurs tables, vous pouvez utiliser le symbole générique (%) dans le champ Tables. Par exemple :

      HR.%,hr.%
      

      Les champs obligatoires pour le rédacteur de bases de données sont marqués dans la capture d'écran suivante : Champs obligatoires pour le rédacteur de bases de données.

Déployer le pipeline de migration

Une fois le pipeline de migration prêt, déployez-le à partir de l'outil Flow Designer de Striim et démarrez l'application. Vous pouvez également prévisualiser les données répliquées en temps réel. Utilisez Surveiller les rapports pour suivre la progression de la réplication. Pour suivre la progression, sélectionnez l'icône de progression de l'application.

Cliquez sur l'icône de progression de l'application pour afficher la progression de la réplication des données.

  1. Dans l'outil Flow Designer de Striim, déployez le pipeline de migration. Cliquez sur la liste déroulante Créé, puis sur Déployer l'application. Une fois le chargement initial terminé, l'état du pipeline passe à Quiesced.

  2. Cliquez sur Annuler le déploiement de l'application pour annuler le déploiement.

  3. Vérifiez que le chargement des données a réussi en vérifiant le nombre de lignes :

    SELECT COUNT(*) FROM <TARGET CLOUD SQL TABLE>;
    

    Un résultat différent de zéro doit s'afficher. Si ce n'est pas le cas, le chargement des données a échoué.

Le chargement initial des données de la base de données Oracle dans Cloud SQL pour PostgreSQL est atomique. Soit l'intégralité du chargement des données réussit, soit l'intégralité du chargement des données échoue. Si le chargement initial échoue, vous devez recharger les données.

Activer des contraintes de clé étrangère sur les tables Cloud SQL pour PostgreSQL

Une fois le chargement initial terminé, activez les contraintes de clé étrangère sur les tables cibles. Utilisez le fichier contenant les déclarations de clé étrangère (FKEY_output.sql ou converted_foreignkey.sql) que vous avez créé lors de la conversion de schéma.

  1. Dans Striim, ouvrez une session SSH.

  2. Créez des contraintes de clé étrangère sur les tables :

    psql -h HOSTNAME -d CLOUD_SQL_DATABASE_NAME -U CLOUD_SQL_USERNAME -p
    CLOUD_SQL_PORT -f PATH_TO_FOREIGN_KEY_FILE
    

    Remplacez l'élément suivant :

    • CLOUD_SQL_USERNAME : nom d'utilisateur Cloud SQL pour PostgreSQL.
    • PATH_TO_FOREIGN_KEY_FILE : chemin d'accès au script avec des contraintes de clé étrangère sur l'instance Striim.

      Exemple :

      psql -h 12.123.123.123 -d testdb -U hr -p 5432 -f output.sql

Répliquer en continu la base de données Oracle vers Cloud SQL pour PostgreSQL

Une fois le chargement initial des données terminé, créez un pipeline distinct pour répliquer les modifications apportées à la base de données Oracle. Tant qu'il reste en cours d'exécution, ce pipeline maintient la synchronisation de la base de données cible avec la base de données source.

Établir une connexion à Oracle à partir de Striim

Pour une réplication continue, vous utilisez l'adaptateur de lecteur Oracle Striim pour vous connecter à partir de Striim à la base de données Oracle. Cet adaptateur Striim peut lire les données CDC à partir d'Oracle.

  1. Dans l'adaptateur de lecteur Striim Oracle, accédez à Sources.
  2. Recherchez Oracle, puis sélectionnez Oracle CDC dans la liste qui s'affiche.

  3. Définissez les propriétés suivantes :

    1. URL de connexion :

      HOSTNAME:ORACLE_PORT/SID
      

      OU

      HOSTNAME:ORACLE_PORT/CDB_SERVICE_NAME
      

      Remplacez l'élément suivant :

      • CDB_SERVICE_NAME : nom du service CDB d'Oracle.

      L'URL de connexion est une chaîne unique utilisée pour se connecter à la base de données Oracle. Contrairement à l'adaptateur de lecteur de base de données utilisé pour le chargement initial, vous utilisez le nom de service CDB indifféremment du fait que vos tables de base de données se trouvent dans une PDB ou une CDB.

      Exemple : 12.123.123.12:1521/ORCLCDB.WORLD.

    2. Nom d'utilisateur/Mot de passe : utilisez le nom d'utilisateur Oracle (utilisateur c##striim) que vous avez créé lors des étapes précédentes.

      Cet utilisateur Oracle doit disposer des droits nécessaires pour lire vos tables.

    3. Tables : vous devez également disposer d'une liste de noms de tables à répliquer. Le nom est spécifié au format suivant selon que les tables sont dans une CDB ou une PDB.

      Pour les tables situées dans une CDB :

      ORACLE_SCHEMA.ORACLE_TABLE_NAME
      

      Pour les tables situées dans une PDB :

      PDB_NAME.ORACLE_SCHEMA.ORACLE_TABLE_NAME
      

      Remplacez l'élément suivant :

      • PDB_NAME : nom PDB Oracle.

      Cette commande réplique vos tables CDB ou PDB. Votre fichier PDB_NAME se trouve dans le fichier tnsnames.ora situé à l'emplacement $ORACLE_HOME/network/admin/tnsnames.ora sur l'instance Oracle.

      Rappelez-vous que PDB_NAME et PDB_SERVICE_NAME sont différents. Vous avez utilisé le paramètre PDB_SERVICE_NAME plus haut dans la section. Affichez le fichier tnsnames.ora pour obtenir le nom PDB :

      sudo su - oracle // Login as oracle user
      cat  ORACLE_HOME/network/admin/tnsnames.ora
      

      Voici un exemple de PDB_NAME (APPSPDB) dans le fichier tnsnames.ora :

        APPSPDB =
          (DESCRIPTION =
            (ADDRESS_LIST =
              (ADDRESS = (PROTOCOL = TCP) (HOST = orainst) (PORT = 1521))
            )
            (CONNECT_DATA =
              (SERVICE NAME = APPSPDB.WORLD)
            )
          )
      

      Pour spécifier plusieurs tables et vues matérialisées sous forme de liste, séparez les noms des tables ou des vues par des points-virgules ou des caractères génériques. Au moins une des tables doit correspondre au caractère générique. Dans le cas contraire, le lecteur Oracle échoue avec l'erreur Could not find tables specified in the database.

    4. SCN de départ : pour le pipeline continu, vous devez fournir le SCN de la base de données Oracle. Striim en a besoin pour commencer à répliquer toutes les transactions. Saisissez la valeur SCN que vous avez générée précédemment

      1. Compatibilité avec les PDB et CDB : vous pouvez utiliser une CDB ou une PDB. Développez Afficher les propriétés facultatives et faites glisser le bouton vers la droite.

      2. Table des repères de suspension : utilisez le nom de la table que vous avez créée précédemment.

        La capture d'écran suivante présente les champs obligatoires de l'adaptateur de lecteur Oracle :

        Champs obligatoires pour l'adaptateur Oracle Reader.

  4. Tester la connexion : cliquez sur Tester la connexion. L'URL de connexion, le nom d'utilisateur et le mot de passe sont requis pour tester la connectivité de la base de données. Si Striim est à même d'établir une connexion, une coche verte apparaît.

  5. Testez la capacité de Striim à lire les tables de base de données Oracle :

    1. Dans l'adaptateur de lecteur Oracle, sélectionnez Déployer l'application.
    2. Sélectionnez le groupe de déploiement default (par défaut).
    3. Cliquez sur Déployer.
  6. Cliquez sur l'icône de vague (Sortie) pour cet adaptateur. L'icône en forme d'œil (Aperçu) qui s'affiche permet de prévisualiser les données en temps réel au fur et à mesure que Striim les lit à partir de la source.

  7. Cliquez sur Démarrer l'application dans la liste déroulante Déployé.

    En cas d'erreur, sélectionnez Annuler le déploiement de l'application dans la même liste déroulante et corrigez les erreurs. Une fois les erreurs corrigées, cliquez sur Réactiver l'application pour redémarrer l'application.

    Lorsque le pipeline démarre, son état est défini comme En cours d'exécution. Toutes les nouvelles modifications apportées à la table source s'affichent dans la fenêtre d'aperçu. Étant donné que l'adaptateur Oracle Reader utilise un flux CDC, les seules modifications de table affichées dans le volet des données d'aperçu sont celles qui ont lieu après le lancement de l'application.

    L'onglet "Aperçu des données" affiche les nouvelles modifications de la table source en temps réel.

Vérifier la capacité de lecture des données CDC à partir d'Oracle

Pour vérifier que l'adaptateur parvient bien à lire les nouvelles modifications, procédez comme suit :

  1. Utilisez des instructions SQL pour insérer de nouvelles transactions dans les tables sources Oracle.
  2. Vérifiez que les nouvelles transactions apparaissent dans l'onglet Données d'aperçu de l'adaptateur Oracle Reader.
  3. Arrêtez l'application et cliquez sur Annuler le déploiement. Vous êtes maintenant prêt à passer à l'étape suivante.

Jusqu'à présent, vous n'avez pas ajouté d'adaptateur cible au pipeline. Aucune donnée n'est copiée, sauf si vous ajoutez un adaptateur cible. Dans la section suivante, vous allez ajouter un adaptateur cible.

Ajouter une base de données Cloud SQL pour PostgreSQL en tant que cible

Pour écrire des données dans la base de données Cloud SQL pour PostgreSQL, vous devez ajouter un adaptateur de rédacteur de base de données à votre pipeline. Pour le pipeline de réplication continue, vous utilisez le même adaptateur que celui utilisé dans le pipeline de chargement initial.

  1. Dans l'outil Flow Designer de Striim, accédez à Cibles puis recherchez et sélectionnez Cloud SQL Postgres dans la liste.
  2. Faites glisser Rédacteur de base de données vers le pipeline.
  3. Définissez les propriétés suivantes :

    • Adaptateur : DatabaseWriter.

    • URL de connexion : saisissez l'URL de connexion que vous avez saisie pour établir une connexion à l'instance Cloud SQL :

    jdbc:postgresql://CLOUD_SQL_IP_ADDRESS:CLOUD_SQL_PORT/CLOUD_SQL_DATABASE_NAME?stringtype=unspecified
    

    Exemple :

    jdbc:postgresql://12.123.12.12:5432/postgres?stringtype=unspecified
    
    • Nom d'utilisateur et mot de passe : saisissez le nom d'utilisateur et le mot de passe Cloud SQL que vous avez créés précédemment.

    • Tables : créez un mappage entre les noms de vos tables de base de données Oracle et les noms des tables Cloud SQL. Indiquez quelle table de base de données Oracle est écrite dans quelle table Cloud SQL. Ce mappage utilise le format suivant :

    ORACLE_SCHEMA.ORACLE_TABLE_NAME,CLOUD_SQL_SCHEMA.CLOUD_SQL_TABLE_NAME
    

    Pour mapper plusieurs tables, vous pouvez utiliser le caractère générique (%) dans le champ Tables. Exemple :

    HR.%,hr.%
    

    Outre ces propriétés, vous devez également définir les propriétés suivantes pour le pipeline de réplication continue :

  4. Cliquez sur Afficher les propriétés facultatives.

  5. Sélectionnez la valeur suivante pour le champ Code d'exception pouvant être ignoré :

    23505,NO_OP_UPDATE,NO_OP_DELETE
    

    Puisque vous démarrez le pipeline CDC à partir d'un point historique, il peut y avoir des doublons. Striim se déduplique sur votre cible en utilisant les propriétés du code d'exception qui pouvaient précédemment être ignorées. Vous trouverez des informations détaillées sur les codes d'exceptions dans le tableau suivant :

    Code d'exception Détails
    23505 La valeur de clé primaire dupliquée enfreint une contrainte unique.
    NO_OP_UPDATE Impossible de mettre à jour une ligne dans la cible (généralement parce qu'il n'y a pas de clé primaire correspondante).
    NO_OP_DELETE Impossible de supprimer une ligne dans la cible (généralement parce qu'il n'y a pas de clé primaire correspondante).
  6. Saisissez chkpoint dans le champ Table de points de contrôle. Striim utilise cette table pour stocker les métadonnées associées aux points de contrôle du pipeline de réplication continue.

Activer la récupération et le chiffrement

Avant de déployer le pipeline CDC, nous vous recommandons vivement d'activer la récupération. Si l'application Striim ou la VM tombe en panne, l'activation de la récupération permet de garantir que Striim peut poursuivre le traitement. Cette étape permet également de garantir une sémantique de traitement de type "exactement une fois". Cette sémantique suit le dernier point de contrôle de lecture correct connu sur la base de données source et le dernier point de contrôle d'écriture correct connu sur la base de données cible. En cas de défaillance d'une application ou d'une VM, Striim coordonne les deux points de contrôle pour garantir qu'aucune donnée n'a été perdue ou dupliquée. La récupération ne s'applique pas aux applications de chargement initial.

Activer la récupération

  1. Dans l'outil Flow Designer de Striim, cliquez sur l'icône Configuration, puis sélectionnez Paramètres de l'application.
  2. Cliquez sur Intervalle de récupération.
  3. Saisissez 5 puis sélectionnez Deuxième dans la liste déroulante.
  4. Cliquez sur Activer le chiffrement. Striim chiffre tous les flux qui déplacent des données entre des serveurs Striim ou depuis un agent de transfert vers un serveur Striim.

Activer le chiffrement

  • Dans l'outil Flow Designer de Striim, cliquez sur l'icône Configuration, sélectionnez Paramètres des applications, puis cochez la case située sous Chiffrement.

Pour en savoir plus sur les méthodes de récupération de Striim, consultez le site Web de Striim.

Activer les exceptions de journalisation

Avant de déployer le pipeline de réplication continue, nous vous recommandons d'activer le magasin d'exceptions dans Striim. Dans le cadre de l'application CDC, des doublons peuvent être écrits par l'application de chargement initial. L'application Striim ignore ces erreurs, les écrit dans un magasin (pour que vous puissiez les examiner et les traiter) et poursuit le traitement.

  1. Dans l'outil Flow Designer de Striim, sélectionnez l'icône Exceptions. L'icône représente un point d'exclamation entre deux flèches courbes.
  2. Cliquez sur Activer.

Déployer le pipeline

Une fois le pipeline prêt, vous pouvez le déployer et démarrer l'application. Vous pouvez également prévisualiser les données à mesure qu'elles sont répliquées en temps réel et afficher les rapports de surveillance. Lorsque le pipeline démarre correctement la réplication continue, son état devient En cours d'exécution.

  1. Dans l'adaptateur de lecteur Oracle, sélectionnez Déployer l'application.
  2. Sélectionnez le groupe de déploiement default (par défaut).
  3. Cliquez sur Déployer.

Vous pouvez continuer à exécuter le pipeline tant que vous souhaitez que les tables Oracle soient synchronisées avec les tables Cloud SQL.

Vous avez terminé le tutoriel. Si vous souhaitez en savoir plus sur d'autres sources Oracle CDC, elles seront abordées dans la section suivante.

Sources Oracle CDC alternatives

En plus de LogMiner, l'adaptateur de Striim peut lire les bases de données Oracle à partir de XStream ou de fichiers de pistes Oracle Golden Gate.

Pour lire des données à partir de XStream, utilisez l'adaptateur de lecture Oracle. XStream peut offrir de meilleures performances, mais il nécessite une licence Golden Gate et n'est compatible qu'avec Oracle Database 11.2.0.4.

Pour lire les fichiers de piste Golden Gate, utilisez l'adaptateur GG Trail Reader de Striim.

Le tableau suivant décrit les différences entre LogMiner et XStream :

Fonctionnalités CDC de la base de données Oracle
Compatible avec
LogMiner ?
Compatible avec
XStream Out ?
Lecture du langage de définition de données (LDD), ROLLBACK et des transactions non validées. Oui Non
Utilisation des fonctions DATA() et BEFORE(). Oui Non
Utilisation de QUIESCE (voir Commandes de la console). Oui Non
Réception d'événements CDC. Reçoit les événements par lots, comme défini par la propriété FetchSize d'Oracle Reader. Réception continue des événements de données de modification.
Lecture de tables contenant des types non-compatibles. La table ne sera pas lue. Lit les colonnes des types compatibles.

Nettoyer

Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Étapes suivantes

Oracle, Java et MySQL sont des marques déposées d'Oracle et/ou de ses sociétés affiliées. Les autres noms peuvent être des marques de leurs propriétaires respectifs.