À propos de Openflow Connector for Oracle

Note

Ce connecteur est soumis aux conditions d’utilisation de Snowflake Connector.

Note

L’Openflow Connector for Oracle est également soumis à des conditions de service supplémentaires en plus des conditions de service standard du connecteur. Pour plus d’informations, consultez le Complément du connecteur Openflow pour Oracle.

Cette rubrique décrit les concepts de base de Openflow Connector for Oracle, son flux de travail et ses limites.

À propos de Openflow Connector for Oracle

Le site Openflow Connector for Oracle connecte une instance de base de données Oracle à Snowflake et réplique les données des tables sélectionnées en temps quasi réel ou selon une planification spécifique. Le connecteur crée également un journal de toutes les modifications de données, qui est disponible avec l’état actuel des tables répliquées.

Cas d’utilisation

Le connecteur prend en charge le cas d’utilisation suivant :

  • Répliquez les tables de la base de données Oracle dans Snowflake pour obtenir un rapport complet et centralisé.

Modèles de licence et contraintes critiques

Le site Openflow Connector for Oracle prend en charge deux modèles de licence distincts. Vous devez sélectionner le modèle correct avant l’installation. Si vous ne sélectionnez pas le modèle correct, vous risquez d’entraîner un échec du déploiement ou des engagements financiers imprévus.

Pour des conditions de licence détaillées, des comparaisons et des instructions de configuration, voir Octroi de licence XStream Oracle.

1. Licence intégrée (fournie par Snowflake)

Snowflake vous fournit directement la licence Oracle XStream moyennant des frais. Ce modèle vous permet d’utiliser la réplication XStream sans contrat direct avec Oracle. Pour plus d’informations, voir Détails de la licence intégrée et le Complément du connecteur Openflow pour Oracle.

Période

Détails

Facturation

Les frais de licence et d’assistance et maintenance (S&M) sont prélevés sur votre capacité Snowflake.

Engagement

L’activation déclenche une période de 36 mois non résiliable (après la période d’essai de 60 jours).

Cycle de vie

  • Après la période (36+ mois) : Après la période initiale de 36 mois, les frais de licence tombent à 0 $, mais les frais S&M continuent d’être facturés chaque année.

  • Risque de blocage : Si vous refusez le renouvellement S&M, le connecteur sera définitivement verrouillé à la fin de la couverture S&M. Le déverrouillage du connecteur nécessite l’achat d’une nouvelle licence intégrée, ce qui déclenche un nouvel engagement de 36 mois à plein tarif.

Gestion de UI

Toutes les actions de licence (Démarrer/Annuler l’essai, Utilisation de la surveillance, Désactiver) sont effectuées par l’ORGADMIN dans Snowsight sous Admin » Terms » Openflow for Oracle. Pour des instructions étape par étape, consultez Openflow Connector for Oracle : Activer et gérer les conditions commerciales.

Restrictions

Les clients suivants ne sont pas éligibles :

  • Entités du secteur public.

  • Les clients qui achètent Snowflake via la marketplace GCP.

  • Clients ayant conclu un contrat avec Snowflake via un revendeur tiers.

2. Licence indépendante (Bring Your Own License - BYOL)

Vous fournissez votre propre licence Oracle qui inclut XStream (par exemple, licence Oracle GoldenGate). Pour plus d’informations, voir Détails relatifs aux licences indépendantes (BYOL).

Période

Détails

Facturation

Aucuns frais de licence supplémentaire de la part de Snowflake. Les coûts de stockage et de calcul standard (par exemple, Openflow Compute) s’appliquent.

Conformité

Vous êtes seul responsable de la conformité de votre licence Oracle.

Utilisation

Obligatoire pour le secteur public, la marketplace GCP et les clients revendeurs.

Choisir un modèle de licence Oracle XStream

L’Openflow Connector for Oracle exige une licence payante pour les services Oracle XStream. Deux modèles de licence sont disponibles :

  • Licence Oracle intégrée

  • Licence Oracle indépendante (Bring Your Own License - BYOL)

Utilisez le tableau suivant pour déterminer le modèle approprié à votre organisation.

Considération

Licence intégrée

Licence indépendante (BYOL)

À qui cela s’adresse-t-il ?

Clients ayant besoin d’une licence pour la technologie Oracle XStream et souhaitent l’acheter directement dans le cadre de leur contrat Snowflake.

Clients qui possèdent déjà une licence Oracle GoldenGate ou un autre contrat Oracle qui prévoit un droit pour XStream.

Facturation

Facturé via Snowflake en fonction du nombre de cœurs de processeur sur votre source Oracle DB. Comporte un engagement non résiliable de 36 mois. Également facturé pour les services d’assistance et de maintenance.

En outre, les coûts de stockage et de calcul standard (par exemple, Openflow Compute) s’appliquent.

Pas de frais de licence supplémentaires ni de frais d’assistance et de maintenance pour les services Oracle XStream de la part de Snowflake. Vous êtes responsable de l’ensemble des licences et de la conformité directement auprès d’Oracle.

Les coûts de stockage et de calcul standard (par exemple, Openflow Compute) s’appliquent.

Configuration

Nécessite que vous saisissiez le nombre de cœurs de CPU de votre DB Oracle et un facteur de multiplicateur de processeur dans les paramètres du connecteur.

Ne nécessite pas que vous fournissiez les informations de cœurs de CPU à Snowflake.

Période d’essai

Comprend un essai gratuit de 60 jours pour un maximum de 16 cœurs sous licence. La facturation commence automatiquement le 61e jour.

Aucune période d’essai n’est proposée via Snowflake. Votre utilisation est soumise à votre contrat Oracle existant.

Détails de la licence intégrée

En choisissant cette option, vous obtenez le droit d’utiliser la technologie Oracle XStream avec le connecteur via Snowflake. Soyez attentif aux conditions essentielles suivantes :

Facturation

Les services Oracle XStream sont facturés mensuellement et prélevés sur votre solde de capacité Snowflake. Les frais comportent deux éléments : des frais de licence et des frais d’assistance et de maintenance (S&M). Les frais de licence sont calculés en fonction du nombre de cœurs de processeur dans votre base de données source Oracle, multipliés par le facteur de cœur de processeur Oracle.

Engagement (la règle du « 61e jour »)

Les 60 premiers jours sont gratuits pour un maximum de 16 cœurs sous licence. Toutefois, l’activation du connecteur au-delà de la période d’essai de 60 jours déclenche une période de facturation de 36 mois non résiliable (« Condition initiale »).

  • Conversion automatique : La facturation commence automatiquement le jour 61. Pour éviter les frais, vous devez annuler l’essai dans le tableau de bord Admin » Terms » Openflow for Oracle avant le jour 60.

  • Verrouillé : Si votre contrat Snowflake est résilié pendant cette période initiale, le solde restant dû pour la période initiale devient immédiatement exigible.

Renouvellement après la période initiale et pénalités

Après la période initiale, les frais de licence s’élèvent à 0 $, mais les frais d’assistance et de maintenance (S&M) sont toujours en vigueur.

  • Conséquences de la désactivation : Vous pouvez désactiver le renouvellement S&M via le tableau de bord dans Admin » Terms » Openflow for Oracle. Toutefois, si la couverture S&M s’arrête, les processeurs du connecteur sont bloqués. Pour reprendre les opérations, vous devez acheter une NEW licence intégrée (réinitialisation de l’engagement de 36 mois à plein tarif).

Exigences

Vous êtes responsable de la déclaration précise du nombre de cœurs de processeur et du facteur de cœur correct dans la configuration du connecteur. Ces informations doivent être actualisées si le matériel de votre base de données source change.

Restrictions

Si cette option n’est pas disponible :

  • Entités du secteur public (par exemple, entités gouvernementales et de l’éducation).

  • Les clients qui achètent Snowflake via la marketplace GCP.

  • Clients ayant conclu un contrat avec Snowflake via un revendeur tiers (par exemple ,CDW, Optiv).

Configuration

Pour configurer la licence intégrée :

  • Vérifiez et acceptez les conditions du Complément du connecteur Openflow pour Oracle présentées dans l’UI.

  • Sélectionnez le type de Embedded License.

  • Saisissez les détails du nombre de cœurs de CPU pour votre base de données Oracle source : Nombre total de cœurs (le nombre total de cœurs physiques sur le serveur de la base de données source) et Facteur de cœur (le facteur de cœur de processeur Oracle, par exemple, 0,5 pour les processeurs Intel). Consultez la table des facteurs de base du processeur Oracle pour connaître la valeur correcte.

Détails relatifs à la licence indépendante (BYOL)

Cette option est destinée aux clients qui ont déjà obtenu la licence de la technologie Oracle nécessaire.

Exigences

Vous êtes seul responsable de vous assurer que votre utilisation du connecteur est conforme aux conditions de votre contrat de licence Oracle existant. Snowflake ne valide ni ne vérifie vos droits Oracle.

Configuration

Pour configurer la licence indépendante (BYOL) :

Lors de la configuration du connecteur, procédez sans saisir le nombre de cœurs ni les informations relatives à la facturation.

Exigences Openflow

Les exigences suivantes en matière d’exécution Openflow s’appliquent à Openflow Connector for Oracle :

  • La taille du runtime doit être au moins Medium. Utilisez un environnement d’exécution plus grand lorsque vous répliquez de grands volumes de données, en particulier lorsque la taille des lignes est importante.

  • Le connecteur ne prend pas en charge les environnements d’exécution Openflow à plusieurs nœuds. Configurez l’environnement d’exécution de ce connecteur avec Min nodes et Max nodes définis sur 1.

Versions et plateformes Oracle prises en charge

Les versions et plateformes suivantes de la base de données Oracle sont prises en charge :

  • Versions de la base de données Oracle 12cR2 et ultérieures

  • Serveurs sur site

  • Oracle Exadata

  • OCI VM/Bare Metal

  • RDS AWS personnalisé pour Oracle

  • RDS standard à locataire unique AWS pour Oracle

Limitations

Les limitations suivantes s’appliquent à l’Openflow Connector for Oracle :

  • RDS standard à locataire unique AWS pour Oracle n’est pas pris en charge.

  • Les bases de données autonomes Oracle (ATP/ADW) ne sont pas prises en charge.

  • Les offres SaaS Oracle telles que Oracle Fusion Cloud Applications et NetSuite ne sont pas prises en charge.

  • Le connecteur nécessite la version de déploiement Openflow 0.55.0 ou ultérieure pour BYOC.

  • Le runtime Openflow doit être créé après l’installation de la version de déploiement Openflow requise.

  • Seules les tables de base de données contenant des clés primaires peuvent être répliquées.

  • Le connecteur fonctionne dans une seule base de données/un seul conteneur (PDB ouCDB). Pour répliquer des tables provenant de plusieurs conteneurs, vous devez configurer des instances de connecteur distinctes pour chaque conteneur.

  • Le connecteur ne prend pas en charge le nouvel ajout d’une colonne après sa suppression.

  • Le connecteur ne réplique pas les valeurs individuelles supérieures à 16 MB. Par défaut, le traitement d’une telle valeur entraîne le marquage définitif de l’échec de la table associée. Pour éviter les échecs de table, modifiez le paramètre de destination Stratégie de valeur surdimensionnée.

Fonctionnement du connecteur

Les sections suivantes décrivent comment le connecteur fonctionne dans différents contextes, notamment la réplication, les modifications de schéma et la conservation des données.

Comment les tables sont-elles répliquées ?

Les tables sont répliquées dans les zones de préparation suivantes :

  1. Introspection du schéma : le connecteur découvre les colonnes de la table source, y compris les noms et les types de colonnes, puis les valide par rapport aux limites de Snowflake et du connecteur. Les échecs de validation entraînent l’échec de cette préparation et le cycle s’achève. Les échecs de validation entraînent l’échec de cette phase et le cycle se terminera. Une fois cette zone de préparation correctement terminée, le connecteur crée une table de destination vide dans Snowflake.

  2. Chargement d’un instantané : le connecteur copie toutes les données disponibles dans la table source dans la table de destination. Si cette zone de préparation échoue, plus aucune donnée n’est répliquée. Une fois l’opération réussie, les données de la table source sont disponibles dans la table de destination.

  3. Chargement incrémentiel : le connecteur suit les modifications apportées à la table source et applique ces modifications à la table de destination. Ce processus se poursuit jusqu’à ce que la table soit retirée de la réplication. Ce processus se poursuit jusqu’à ce que la table soit retirée de la réplication. L’échec à ce stade arrête définitivement la réplication de la table source, jusqu’à ce que le problème soit résolu.

Statut de réplication de la table

Les défaillances intermédiaires, telles que les erreurs de connexion, n’empêchent pas la réplication de la table. Toutefois, les défaillances permanentes, telles que les types de données non pris en charge, empêchent la réplication de la table.

Pour résoudre les problèmes de réplication ou vérifier qu’une table a été correctement supprimée du flux de réplication, consultez le magasin d’états des tables (Table State Store) :

  1. Dans le canevas de l’environnement d’exécution Openflow, cliquez avec le bouton droit de la souris sur un groupe de processeurs et choisissez Controller Services. Une table répertoriant les services du contrôleur s’affiche.

  2. Localisez la ligne intitulée Table State Store, cliquez sur le bouton More Trois points verticaux indiquant plus d'options sur le côté droit de la ligne, puis choisissez View State.

Une liste des tables et de leurs états actuels s’affiche. Renseignez le champ de recherche pour filtrer la liste par nom de table. Les états possibles sont :

  • NEW : La table est planifiée pour la réplication, mais la réplication n’a pas commencé.

  • SNAPSHOT_REPLICATION : Le connecteur copie des données existantes. Cet état s’affiche jusqu’à ce que tous les enregistrements soient stockés dans la table de destination.

  • INCREMENTAL_REPLICATION : Le connecteur réplique activement les modifications. Cet état s’affiche après la fin de la réplication des instantanés et continue de s’afficher indéfiniment jusqu’à ce qu’une table soit supprimée de la réplication ou que la réplication échoue.

  • FAILED : La réplication s’est définitivement arrêtée en raison d’une erreur.

Note

Le canevas de l’environnement d’exécution Openflow n’affiche pas les modifications de l’état de la table, mais uniquement l’état actuel de la table. Toutefois, les modifications de l’état des tables sont enregistrées dans les journaux lorsqu’elles se produisent. Recherchez le message de journal suivant :

Replication state for table <database_name>.<schema_name>.<table_name> changed from <old_state> to <new_state>
Copy

Si une défaillance permanente empêche la réplication d’une table, supprimez la table de la réplication. Après avoir résolu le problème à l’origine de l’échec, vous pouvez ajouter à nouveau la table à la réplication. Pour plus d’informations, consultez Redémarrer la réplication des tables.

Conservation des données

Comprendre la conservation des données

Le connecteur suit une logique de conservation des données où les données client ne sont jamais automatiquement supprimées. Vous conservez la propriété et le contrôle total de vos données répliquées, et le connecteur préserve les informations historiques au lieu de les supprimer définitivement.

Cette approche a les implications suivantes :

  • Les lignes supprimées de la table source sont supprimées logiciellement dans la table de destination plutôt que d’être supprimées physiquement.

  • Les colonnes supprimées de la table source sont renommées dans la table de destination au lieu d’être supprimées.

  • Les tables de journal sont conservées indéfiniment et ne sont pas automatiquement nettoyées.

Colonnes de métadonnées de la table de destination

Chaque table de destination comprend les colonnes de métadonnées suivantes qui suivent les informations de réplication :

Nom de la colonne

Type

Description

_SNOWFLAKE_INSERTED_AT

TIMESTAMP_NTZ

Horodatage du moment où la ligne a été initialement insérée dans la table de destination.

_SNOWFLAKE_UPDATED_AT

TIMESTAMP_NTZ

Horodatage de la dernière mise à jour de la ligne dans la table de destination.

_SNOWFLAKE_DELETED

BOOLEAN

Indique si la ligne a été supprimée de la table source. Lorsque true, la ligne a été supprimée logiciellement et n’existe plus dans la source.

Lignes supprimées logiciellement

Lorsqu’une ligne est supprimée de la table source, le connecteur ne la supprime pas physiquement de la table de destination. Au lieu de cela, la ligne est marquée comme supprimée en définissant la colonne de métadonnées _SNOWFLAKE_DELETED sur true.

Cette approche vous permet de :

  • Conserver les données historiques à des fins d’audit ou de conformité.

  • Interroger les enregistrements supprimés lorsque cela est nécessaire.

  • Décider quand et comment supprimer définitivement des données en fonction de vos besoins.

Pour interroger uniquement les lignes actives (non supprimées), filtrez sur la colonne _SNOWFLAKE_DELETED :

SELECT * FROM my_table WHERE _SNOWFLAKE_DELETED = FALSE;
Copy

Pour interroger les lignes supprimées :

SELECT * FROM my_table WHERE _SNOWFLAKE_DELETED = TRUE;
Copy

Colonnes supprimées

Lorsqu’une colonne est supprimée de la table source, le connecteur ne supprime pas la colonne correspondante de la table de destination. Au lieu de cela, la colonne est renommée en ajoutant le suffixe __SNOWFLAKE_DELETED pour préserver les valeurs historiques.

Par exemple, si une colonne nommée EMAIL est supprimée de la table source, elle est renommée en EMAIL__SNOWFLAKE_DELETED dans la table de destination. Les lignes qui existaient avant la suppression de la colonne conservent leurs valeurs d’origine, tandis que les lignes ajoutées après la suppression affichent NULL dans cette colonne.

Vous pouvez toujours interroger les valeurs historiques à partir de la colonne renommée :

SELECT EMAIL__SNOWFLAKE_DELETED FROM my_table;
Copy

Colonnes renommées

En raison de limitations dans les mécanismes CDC (Change Data Capture), le connecteur ne peut pas faire la distinction entre une colonne renommée et une colonne supprimée, suivie de l’ajout d’une nouvelle colonne. Par conséquent, lorsque vous renommez une colonne dans la table source, le connecteur traite cela comme deux opérations distinctes : supprimer la colonne d’origine et ajouter une nouvelle colonne avec le nouveau nom.

Par exemple, si vous renommez une colonne A en B dans la table source, la table de destination contiendra :

  • A__SNOWFLAKE_DELETED : Contient les valeurs d’avant le changement de nom. Les lignes ajoutées après le changement de nom affichent NULL dans cette colonne.

  • B : Contient les valeurs d’après le changement de nom. Les lignes qui existaient avant le changement de nom affichent NULL dans cette colonne.

Interrogation de colonnes renommées

Pour récupérer les données des colonnes d’origine et des colonnes renommées en une seule colonne unifiée, utilisez une expression COALESCE ou CASE :

SELECT
    COALESCE(B, A__SNOWFLAKE_DELETED) AS A_RENAMED_TO_B
FROM my_table;
Copy

Vous pouvez également utiliser une expression CASE :

SELECT
    CASE
        WHEN B IS NOT NULL THEN B
        ELSE A__SNOWFLAKE_DELETED
    END AS A_RENAMED_TO_B
FROM my_table;
Copy

Création d’une vue pour des colonnes renommées

Plutôt que de modifier manuellement la table de destination, vous pouvez créer une vue qui présente la colonne renommée comme une seule colonne unifiée. Cette approche est recommandée, car elle préserve les données d’origine et évite les problèmes potentiels liés à la réplication en cours.

CREATE VIEW my_table_unified AS
SELECT
    *,
    COALESCE(B, A__SNOWFLAKE_DELETED) AS A_RENAMED_TO_B
FROM my_table;
Copy

Important

La modification manuelle de la structure de la table de destination (par exemple, la suppression ou le renommage de colonnes) n’est pas recommandée, car elle peut interférer avec la réplication en cours et entraîner des incohérences de données.

Tables de journal

Lors de la réplication incrémentielle, les modifications de la base de données source sont d’abord écrites dans les tables de journal avant d’être fusionnées dans les tables de destination. Le connecteur ne supprime pas automatiquement les données des tables de journal, car ces données peuvent être utiles à des fins d’audit, de débogage ou de retraitement.

Les tables de journal sont créées dans le même schéma que les tables de destination correspondantes et suivent cette convention de dénomination :

<TABLE_NAME>_JOURNAL_<timestamp>_<number>

Où :

  • <TABLE_NAME> est le nom de la table de destination.

  • <timestamp> est l’horodatage de création au format d’époque Unix (secondes depuis le 1er janvier 1970), garantissant l’unicité.

  • <number> commence à 1 et incrémente chaque fois que le schéma de la table de destination change, soit en raison de modifications de schéma dans la table source, soit en raison de modifications des filtres de colonnes.

Par exemple, si votre table de destination est SALES.ORDERS, la table du journal peut être nommée SALES.ORDERS_JOURNAL_1705320000_1.

Important

Ne supprimez pas les tables de journal pendant la réplication en cours. La suppression d’une table de journal active peut entraîner des pertes de données ou des échecs de réplication. Ne supprimez les tables de journal qu’une fois que la table source correspondante a été entièrement retirée de la réplication.

Gestion du stockage des tables de journal

Si vous devez gérer les coûts de stockage en supprimant les anciennes données du journal, vous pouvez créer une tâche Snowflake qui nettoie périodiquement les tables de journal pour les tables qui ne sont plus répliquées.

Avant d’implémenter le nettoyage du journal, vérifiez que :

  • Les tables sources correspondantes ont été entièrement retirées de la réplication.

  • Vous n’avez plus besoin des données du journal à des fins d’audit ou de traitement.

Pour plus d’informations sur la création et la gestion de tâches pour le nettoyage automatisé, consultez Introduction aux tâches.

Prochaines étapes

Après avoir consulté cette rubrique, passez aux étapes suivantes :