Partager via


Prise en charge de la réception de messages modifiés de données basés sur l’interrogation dans Oracle Database

L’adaptateur De base de donnéesOracle permet aux programmes clients de recevoir des messages de la base de données Oracle les informant des modifications apportées aux données stockées dans une base de données Oracle. L’adaptateur Oracle Database prend en charge la réception de messages « basés sur l’interrogation » dans lesquels l’adaptateur exécute une requête SELECT, une procédure stockée, une fonction ou une procédure ou une fonction dans un package, récupère les données et fournit le résultat au client à intervalles réguliers. Pour ce faire, l’adaptateur Oracle Database expose une opération POLLINGSTMT. En outre, toutes les procédures stockées, fonctions, procédures et fonctions dans les packages sont exposées en tant qu’opérations entrantes pour l’interrogation.

L’adaptateur fournit deux façons d’interroger la base de données Oracle :

  • Utilisation d’instructions SELECT. Vous pouvez spécifier une instruction SELECT simple pour interroger les tables et les vues dans la base de données Oracle. L’adaptateur exécute l’instruction SELECT à intervalles spécifiés et retourne le résultat aux clients de l’adaptateur.

  • Utilisation de procédures stockées, de fonctions ou de procédures ou de fonctions au sein d’un package. Vous pouvez spécifier une procédure stockée, une fonction ou une procédure ou une fonction dans un package pour interroger la base de données Oracle. L’adaptateur exécute le message de demande à intervalles spécifiés et retourne le résultat aux clients de l’adaptateur.

Workflow de l’opération d’interrogation

Une opération d’interrogation classique à l’aide de l’adaptateur Oracle Database implique les éléments suivants :

  1. Les clients d’adaptateur doivent spécifier Polling comme opération entrante dans la propriété de liaison InboundOperationType . La valeur par défaut de cette propriété de liaison est Interrogation.

  2. Les clients d’adaptateur doivent spécifier une instruction SELECT pour la propriété de liaison PolledDataAvailableStatement afin de déterminer s’il existe des données disponibles pour l’interrogation. Lors de l’exécution de cette instruction, si la première colonne de la première ligne du jeu de résultats retourné contient une valeur entière positive, une date est disponible pour l’interrogation. Par défaut, la valeur de cette propriété de liaison est définie sur Select 1 FROM DUAL, ce qui implique que l’adaptateur doit continuer l’interrogation, que la table interrogée ait ou non des données.

  3. Les clients d’adaptateur doivent spécifier un intervalle d’interrogation pour la propriété de liaison PollingInterval afin de définir l’intervalle en secondes auquel l’instruction spécifiée dans la propriété de liaison PolledDataAvailableStatement est exécutée. À la fin de chaque intervalle d’interrogation, l’instruction de données disponibles interrogées est exécutée et le jeu de résultats est retourné.

  4. Les clients d’adaptateur doivent spécifier une instruction SELECT ou une procédure stockée pour la propriété de liaison PollingStatement .

    • Si vous souhaitez interroger une table ou une vue, vous devez spécifier une requête SELECT dans cette propriété de liaison.

    • Si vous souhaitez interroger à l’aide d’une procédure stockée, d’une fonction ou d’une procédure ou d’une fonction au sein d’un package, vous devez spécifier l’intégralité du message de demande pour l’opération respective dans cette propriété de liaison.

      L’instruction de la propriété de liaison PollingStatement n’est exécutée que s’il existe des données disponibles pour l’interrogation, qui sont déterminées par la propriété de liaison PolledDataAvailableStatement à l’étape 1.

  5. Les clients d’adaptateur doivent spécifier une action pour l’opération d’interrogation dans la propriété de liaison PollingAction . L’action d’interrogation d’une opération spécifique est déterminée à partir des métadonnées générées pour l’opération à l’aide du complément Consume Adapter Service.

    Notes

    Si vous interrogez une table ou une vue à l’aide d’une instruction SELECT dans la propriété de liaison PollingStatement , vous n’avez pas besoin de spécifier de valeur pour la propriété de liaison PollingAction . La valeur par défaut, Null, est transmise dans ce cas.

  6. Les clients d’adaptateur peuvent utiliser la propriété de liaison PollWhileDataFound pour ignorer l’intervalle d’interrogation et interroger continuellement les données, au fur et à mesure des disponibilités.

    Important

    Si vous définissez la valeur de la propriété de liaison PollWhileDataFound sur True, les clients d’adaptateur interrogent continuellement les données à partir d’Oracle et, dans le processus, ouvrent et ferment les connexions à la base de données Oracle dans une boucle. Comme la vitesse à laquelle les connexions sont ouvertes par ODP.NET est supérieure à celle des connexions fermées, les connexions sont épuisées après un certain temps et une exception est levée. Pour contourner le problème, assurez-vous que la valeur de UseOracleConnectionPool est définie sur True et qu’une valeur appropriée est mentionnée dans la propriété de liaison IncrPoolSize pour contrôler le nombre de connexions qui peuvent être ouvertes par les clients d’adaptateurs.

  7. Les clients d’adaptateur peuvent spécifier une instruction post-interrogation, un bloc Oracle PL/SQL, pour la propriété de liaison PostPollStatement . L’instruction spécifiée dans cette propriété de liaison est exécutée après l’exécution de l’instruction spécifiée dans la propriété de liaison PollingStatement .

    L’adaptateur encapsule l’instruction d’interrogation et l’instruction post-interrogation dans une transaction, et la valeur du délai d’expiration de la transaction est définie comme valeur spécifiée pour la propriété de liaison PollingInterval . Par conséquent, il est essentiel de spécifier une valeur de délai d’expiration supérieure ou égale à la durée requise pour traiter le message entrant et envoyer une réponse. Si le temps nécessaire au programme client pour utiliser le message ou exécuter la requête post-interrogation est supérieur à la valeur de délai d’expiration, la transaction est annulée. Si le temps nécessaire est inférieur à la valeur du délai d’expiration, l’adaptateur valide la transaction et « veille » pour le temps restant dans le sondage avant d’effectuer le sondage suivant.

    L’adaptateur supprime toutes les réponses d’interrogation vides provenant de la base de données Oracle.

Différences entre l’interrogation et la notification

Bien que l’interrogation et la notification soient à la fois des opérations entrantes et informent les clients de l’adaptateur des modifications de données dans la base de données Oracle, le tableau suivant illustre certaines différences entre les deux. Les différences suivantes vous aideront à décider d’une opération en fonction de vos besoins :

Interrogation Notification
L’interrogation est prise en charge pour toutes les versions de base de données Oracle prises en charge par l’adaptateur Oracle Database. La notification est prise en charge uniquement pour les versions 10.2 et ultérieures de la base de données Oracle.
Vous pouvez configurer l’intervalle d’interrogation pour case activée les données disponibles pour l’interrogation à intervalles réguliers ou instantanément au fur et à mesure que les données sont disponibles. Pointe: L’interrogation peut vous offrir un meilleur débit dans les scénarios où les modifications de données se produisent en continu et où vous ne souhaitez pas être averti de chaque modification au fur et à mesure. Au lieu de cela, vous spécifiez un intervalle d’interrogation après lequel vous souhaitez être informé de toutes les modifications qui se sont produites depuis la dernière notification de modification. La notification de modification des données est toujours instantanée.
L’interrogation est lancée par l’adaptateur. L’adaptateur exécute une instruction SQL pour vérifier si les données sont disponibles pour l’interrogation, puis lance l’interrogation en exécutant l’instruction d’interrogation si certaines données sont disponibles pour l’interrogation. La notification est lancée par la base de données Oracle. L’instruction de notification émise par l’adaptateur demande simplement à la base de données d’initier la notification en cas de modification du jeu de résultats de l’instruction. La notification est une fonctionnalité de la base de données Oracle.
Vous pouvez utiliser l’instruction d’interrogation pour lire ou mettre à jour des données dans la base de données Oracle. Vous pouvez utiliser l’instruction de notification pour lire uniquement les données d’une base de données Oracle.
L’interrogation vous informe des données réelles qui ont changé. La notification informe uniquement du type de modification dans les données telles que Insertion, Mise à jour et Suppression.

Le cas échéant, consultez les références suivantes :

Voir aussi

Quelles opérations peut-on effectuer à l’aide de l’adaptateur ?