Interroger Oracle Database à l’aide de l’instruction SELECT
Vous pouvez configurer l’adaptateur Oracle Database pour recevoir des messages périodiques de modification des données à l’aide d’une instruction SELECT pour interroger en continu les tables et les vues dans Oracle la base de données Oracle. Vous pouvez spécifier une instruction SELECT en tant qu’instruction d’interrogation que l’adaptateur exécute régulièrement pour interroger la base de données Oracle. Si vous le souhaitez, vous pouvez également spécifier un bloc de code PL/SQL post-interrogation que l’adaptateur exécute en cas de modification des données. Ce bloc est souvent utilisé pour mettre à jour un champ sur les enregistrements interrogés dans la cible ou pour déplacer les enregistrements interrogés vers une autre table ou vue.
Pour l’activer, vous devez spécifier certaines propriétés de liaison sur l’adaptateur Oracle Database. Vous pouvez également modifier l’espace de noms cible pour l’opération POLLINGSTMT en définissant la propriété PollingId dans l’URI de connexion. Pour plus d’informations, consultez Prise en charge de la réception de messages modifiés de données basés sur l’interrogation dans Oracle Database et Recevoir des messages modifiés de données basés sur l’interrogation dans l’adaptateur Oracle Database. Pour plus d’informations sur la structure du message SOAP pour les opérations d’interrogation, consultez Schémas de message pour les opérations d’interrogation2.
Configuration d’une opération d’interrogation avec les propriétés de liaison de l’adaptateur de base de données Oracle
Le tableau suivant récapitule les propriétés de liaison de l’adaptateur Oracle Database que vous utilisez pour configurer l’adaptateur afin de recevoir des messages de modification de données. Vous devez spécifier ces propriétés de liaison lors de la configuration du port de réception dans BizTalk Server console Administration.
Binding, propriété | Description |
---|---|
InboundOperationType | Spécifie si vous souhaitez effectuer une opération entrante d’interrogation ou de notification. La valeur par défaut est Interrogation. |
PolledDataAvailableStatement | Spécifie l’instruction SQL que l’adaptateur exécute pour déterminer si des données sont disponibles pour l’interrogation. Uniquement si un enregistrement est disponible, l’instruction SELECT que vous spécifiez pour la propriété de liaison PollingStatement est exécutée. La valeur par défaut est SELECT 1 FROM DUAL , ce qui implique que l’adaptateur doit continuer l’interrogation, que la table interrogée possède ou non des données. |
PollingInterval | Spécifie l’intervalle, en secondes, auquel l’adaptateur Oracle Database exécute l’instruction spécifiée pour la propriété de liaison PolledDataAvailableStatement . La valeur par défaut est 500 secondes. L’intervalle d’interrogation détermine l’intervalle de temps entre les sondages successifs. Si l’instruction est exécutée dans l’intervalle spécifié, l’adaptateur est mis en veille pendant la durée restante de l’intervalle. |
PollingStatement | Spécifie l’instruction d’interrogation. Pour interroger à l’aide d’une instruction SELECT, vous devez spécifier une instruction SELECT pour cette propriété de liaison. La valeur par défaut est null. Vous devez spécifier une valeur pour la propriété de liaison PollingStatement pour activer l’interrogation. L’instruction d’interrogation est exécutée uniquement si des données sont disponibles pour l’interrogation, ce qui est déterminé par la propriété de liaison PolledDataAvailableStatement . |
PollingAction | Spécifie l’action de l’opération d’interrogation. Vous pouvez déterminer l’action d’interrogation d’une opération spécifique à partir des métadonnées que vous générez pour l’opération à l’aide du complément Consume Adapter Service. |
PostPollStatement | Spécifie un bloc d’instructions exécuté après l’exécution de l’instruction spécifiée par la propriété de liaison PollingStatement . |
PollWhileDataFound | Spécifie si l’adaptateur Oracle Database ignore l’intervalle d’interrogation et exécute en continu l’instruction d’interrogation, si les données sont disponibles dans la table interrogée. Si aucune donnée n’est disponible dans la table, l’adaptateur rétablit pour exécuter l’instruction d’interrogation à l’intervalle d’interrogation spécifié. La valeur par défaut est false. |
Pour obtenir une description plus complète de ces propriétés, consultez En savoir plus sur les propriétés de liaison de l’adaptateur Oracle Database. Pour obtenir une description complète de l’utilisation de l’adaptateur Oracle Database pour interroger la base de données Oracle, lisez plus loin.
Comment cette rubrique illustre l’interrogation
Dans cette rubrique, pour montrer comment l’adaptateur Oracle Database prend en charge la réception de messages de modification de données à l’aide d’instructions SELECT, créez un projet BizTalk et générez un schéma pour l’opération POLLINGSTMT en définissant la propriété de liaison PollingStatement comme suit :
SELECT * FROM ACCOUNTACTIVITY FOR UPDATE
La table ACCOUNTACTIVITY est créée lorsque vous exécutez les scripts SQL fournis avec les exemples pour créer ces objets dans la base de données.
Notes
L’orchestration de cette rubrique interroge la table ACCOUNTACTIVITY, qui est une table de base de données de base créée en exécutant les scripts fournis avec les exemples. Vous devez effectuer des procédures similaires à celles décrites dans cette rubrique pour interroger une autre table.
Pour illustrer une opération d’interrogation, nous procédons comme suit :
Spécifiez une instruction SELECT pour la propriété de liaison PolledDataAvailableStatement afin de déterminer où la table interrogée (ACCOUNTACTIVITY) contient des données. Dans cet exemple, vous pouvez définir cette propriété de liaison comme suit :
SELECT COUNT (*) FROM ACCOUNTACTIVITY
Cela garantit que l’adaptateur exécute l’instruction d’interrogation uniquement lorsque la table ACCOUNTACTIVITY contient des enregistrements.
Spécifiez l’instruction SELECT comme indiqué précédemment pour la propriété de liaison PollingStatement . Cette instruction récupère toutes les lignes de la table ACCOUNTACTIVITY.
EXÉCUTEz un bloc PL/SQL dans le cadre de la propriété de liaison PostPollStatement . Cette instruction déplace toutes les données de la table ACCOUNTACTIVITY vers une autre table de la base de données. Une fois que cela se produit, la prochaine fois que l’instruction spécifiée pour PollingStatement sera exécutée, elle n’extrait aucune donnée.
Tant que des données supplémentaires ne sont pas ajoutées à la table ACCOUNTACTIVITY, vous n’obtiendrez aucun message d’interrogation. Vous devez donc remplir à nouveau la table ACCOUNTACTIVITY avec de nouveaux enregistrements. Pour ce faire, exécutez le script more_activity_data.sql fourni avec les exemples. Après avoir exécuté ce script, l’opération d’interrogation suivante extrait les nouveaux enregistrements insérés dans la table.
Comment recevoir des messages de modification de données à partir d’Oracle
L’exécution d’une opération sur une base de données Oracle à l’aide de l’adaptateur Oracle Database avec BizTalk Server implique les tâches procédurales suivantes décrites dans Blocs de construction pour développer des applications BizTalk avec Oracle Database. Pour configurer l’adaptateur pour interroger la base de données Oracle à l’aide d’une instruction SELECT, les tâches suivantes sont les suivantes :
Créez un projet BizTalk et générez le schéma pour l’opération POLLINGSTMT pour la table que vous souhaitez interroger.
Créez un message dans le projet BizTalk pour recevoir des messages à partir d’une base de données Oracle.
Créez une orchestration pour recevoir des messages d’Oracle et enregistrez-les dans un dossier.
Générez et déployez le projet BizTalk.
Configurez l’application BizTalk en créant des ports d’envoi et de réception physiques.
Important
Pour les scénarios d’interrogation entrante, vous devez toujours configurer un port de réception unidirectionnel. Les ports de réception bidirectionnel ne sont pas pris en charge pour les opérations entrantes.
Démarrez l’application BizTalk.
Cette rubrique fournit des instructions pour effectuer ces tâches.
Génération du schéma
Vous devez générer le schéma pour l’opération POLLINGSTMT . Effectuez les tâches suivantes lors de la génération du schéma à l’aide du complément Consume Adapter Service.
Spécifiez une valeur pour la propriété de liaison PollingStatement lors de la génération du schéma. Pour plus d’informations sur cette propriété de liaison, consultez En savoir plus sur les propriétés de liaison de l’adaptateur Oracle Database. Par exemple, spécifiez ce qui suit en tant qu’instruction d’interrogation :
SELECT * FROM ACCOUNTACTIVITY FOR UPDATE
Sélectionnez le type de contrat Service (opération entrante).
Générez le schéma pour l’opération POLLINGSTMT .
Pour plus d’informations sur la façon de générer un schéma, consultez Parcourir, rechercher et obtenir des métadonnées pour les opérations Oracle Database.
Définition des messages et des types de messages
Le schéma que vous avez généré précédemment décrit les « types » requis pour les messages dans l’orchestration. Un message est généralement une variable, dont le type est défini par le schéma correspondant. Une fois le schéma généré, vous devez le lier aux messages de la vue Orchestration du projet BizTalk.
Pour cette rubrique, vous devez créer un message pour recevoir des messages d’Oracle.
Effectuez les étapes suivantes pour créer des messages et les lier au schéma.
Pour créer des messages et créer un lien vers le schéma
Ajoutez une orchestration au projet BizTalk. À partir du Explorateur de solutions, cliquez avec le bouton droit sur le nom du projet BizTalk, pointez sur Ajouter, puis cliquez sur Nouvel élément. Tapez un nom pour l’orchestration BizTalk, puis cliquez sur Ajouter.
Ouvrez la fenêtre d’affichage d’orchestration du projet BizTalk, si elle n’est pas déjà ouverte. Cliquez sur Affichage, pointez sur Autres fenêtres, puis cliquez sur Vue d’orchestration.
Dans la vue Orchestration, cliquez avec le bouton droit sur Messages, puis cliquez sur Nouveau message.
Cliquez avec le bouton droit sur le message nouvellement créé, puis sélectionnez Fenêtre Propriétés.
Dans le volet Propriétés de Message_1, procédez comme suit :
Propriété Pour Identificateur Tapez Receive. Type de message Dans la liste déroulante, développez Schémas, puis sélectionnez TablePolling.OracleDBBinding, où TablePolling est le nom de votre projet BizTalk. OracleDBBindingSchema est le schéma de réponse généré pour l’opération POLLINGSTMT sur la table ACCOUNTACTIVITY.
Important Étant donné que l’interrogation est une opération unidirectionnelle, le schéma généré par l’adaptateur ne contient pas de nœud de réponse, et il n’y a donc qu’un seul nœud racine dans le schéma. Si vous utilisez de tels schémas pour un type de message, vous devez identifier le schéma par le nom de fichier du schéma généré.
Par exemple, si vous créez un schéma pour une opération bidirectionnelle, les nœuds du fichier de schéma avec un nomOracleDBBindingSchema
peuvent ressembler à « Demande » et « Réponse ». Si vous souhaitez créer un message dans l’orchestration mappé au schéma de requête, vous pouvez identifier le schéma dans la liste en recherchantOracleDBBindingSchema.Request
. Toutefois, dans le cas d’une opération d’interrogation, étant donné que le seul nœud est « POLLINGSTMT », il n’est pas facile d’identifier le schéma auquel vous souhaitez effectuer le mappage, car les schémas avec des nœuds uniques ne sont pas répertoriés en tant que <schemafilename>.<rootnodename>. Au lieu de cela, ces schémas sont répertoriés uniquement par le nom de fichier. Dans ce cas, la seule façon d’identifier le schéma est le nom de fichier du schéma, par exemple OracleDBBindingSchema.
Configuration de l’orchestration
Vous devez créer une orchestration BizTalk pour utiliser BizTalk Server pour recevoir des messages de modification de données basés sur l’interrogation d’Oracle. Dans cette orchestration, l’adaptateur reçoit la réponse en exécutant l’instruction SELECT spécifiée pour la propriété de liaison PollingStatement . Le message de réponse de l’instruction SELECT est enregistré dans un emplacement FILE. Une orchestration classique pour l’interrogation d’une base de données Oracle contient :
Recevoir et envoyer des formes pour recevoir des messages d’Oracle et les envoyer à un port FILE, respectivement.
Port de réception unidirectionnel pour recevoir des messages de la base de données Oracle.
Important
Pour les scénarios d’interrogation entrante, vous devez toujours configurer un port de réception unidirectionnel. Les ports de réception bidirectionnel ne sont pas pris en charge pour les opérations entrantes.
Port d’envoi unidirectionnel pour envoyer des réponses d’interrogation à partir d’une base de données Oracle.
Un exemple d’orchestration ressemble à ce qui suit.
Ajout de formes de message
Veillez à spécifier les propriétés suivantes pour chacune des formes de message. Les noms répertoriés dans la colonne Forme sont les noms des formes de message affichées dans l’orchestration qui vient d’être mentionnée.
Forme | Type de forme | Propriétés |
---|---|---|
ReceiveMessage | Recevoir | - Définissez Nom sur ReceiveMessage - Définissez Activer sur True |
SaveMessage | Envoyer | - Définissez Nom sur SaveMessage |
Ajout de ports
Veillez à spécifier les propriétés suivantes pour chacun des ports logiques. Les noms répertoriés dans la colonne Port sont les noms des ports affichés dans l’orchestration.
Port | Propriétés |
---|---|
OracleReceivePort | - Définissez Identifier sur OracleReceivePort - Définissez Type sur OracleReceivePortType - Définir le modèle de communication sur Unidirectionnel - Définir le sens de la communication sur Réception |
SaveMessagePort | - Définissez Identifier sur SaveMessagePort - Définissez Type sur SaveMessagePortType - Définir le modèle de communication sur Unidirectionnel - Définir le sens de la communication sur Envoyer |
Spécifier des messages pour les formes d’action et se connecter aux ports
Le tableau suivant spécifie les propriétés et leurs valeurs que vous devez définir pour spécifier des messages pour les formes d’action et lier les messages aux ports. Les noms répertoriés dans la colonne Forme sont les noms des formes de message affichées dans l’orchestration mentionnée précédemment.
Forme | Propriétés |
---|---|
ReceiveMessage | - Définir le message sur Réception - Définissez Opération sur OracleReceivePort.Polling.Request |
SaveMessage | - Définir le message sur Réception - Définissez Opération sur SaveMessagePort.Polling.Request |
Une fois que vous avez spécifié ces propriétés, les formes et les ports de message sont connectés et votre orchestration est terminée.
Vous devez maintenant générer la solution BizTalk et la déployer sur un BizTalk Server. Pour plus d’informations, consultez Génération et exécution d’orchestrations.
Configuration de l’application BizTalk
Une fois que vous avez déployé le projet BizTalk, l’orchestration que vous avez créée précédemment est répertoriée sous le volet Orchestrations de la console d’administration BizTalk Server. Vous devez utiliser la console d’administration BizTalk Server pour configurer l’application. Pour obtenir une procédure pas à pas, consultez Procédure pas à pas : déploiement d’une application BizTalk de base.
La configuration d’une application implique :
Sélection d’un hôte pour l’application.
Mappage des ports que vous avez créés dans votre orchestration à des ports physiques dans la console d’administration BizTalk Server. Pour cette orchestration, vous devez :
Définissez un emplacement sur le disque dur et un port FILE correspondant où l’orchestration BizTalk supprimera les messages d’Oracle. Ces messages seront en réponse à l’instruction d’interrogation que vous spécifiez pour le port de réception.
Définissez un WCF-Custom physique ou WCF-OracleDB port de réception unidirectionnel. Ce port interroge la base de données Oracle. Pour plus d’informations sur la création de ports de réception, consultez Configurer manuellement une liaison de port physique à l’adaptateur de base de données Oracle. Veillez à spécifier les propriétés de liaison suivantes pour le port de réception.
Binding, propriété Valeur InboundOperationType Définissez cette valeur sur Interrogation. PolledDataAvailableStatement Pour cet exemple, définissez cette propriété de liaison sur :
SELECT COUNT (*) FROM ACCOUNTACTIVITY
Cela garantit que l’adaptateur exécute l’instruction d’interrogation uniquement lorsque la table ACCOUNTACTIVITY contient des enregistrements.PollingStatement Pour cette propriété de liaison, spécifiez une instruction SELECT pour récupérer tous les enregistrements de la table ACCOUNTACTIVITY. Pour cet exemple, définissez cette propriété de liaison sur :
SELECT * FROM ACCOUNTACTIVITY FOR UPDATE
PostPollStatement Spécifiez l’instruction post-sondage pour déplacer toutes les données de la table ACCOUNTACTIVITY vers une autre table. Pour cet exemple, définissez cette propriété de liaison sur :
BEGIN ACCOUNT_PKG.PROCESS_ACTIVITY(); END;
Pour plus d’informations sur les différentes propriétés de liaison, consultez En savoir plus sur les propriétés de liaison de l’adaptateur Oracle Database.
Notes
Nous vous recommandons de configurer le niveau d’isolation des transactions et le délai d’expiration de la transaction lors de l’exécution d’opérations entrantes à l’aide de l’adaptateur Oracle Database. Vous pouvez le faire en ajoutant le comportement du service lors de la configuration du port de réception. Pour obtenir des instructions sur l’ajout du comportement du service, consultez Configurer le niveau d’isolation des transactions et le délai d’expiration des transactions.
Démarrage de l’application
Vous devez démarrer l’application BizTalk pour interroger la base de données Oracle. Pour obtenir des instructions sur le démarrage d’une application BizTalk, consultez Guide pratique pour démarrer une orchestration.
À ce stade, assurez-vous que :
Le WCF-Custom ou WCF-OracleDB port de réception unidirectionnel, qui interroge Oracle à l’aide de l’instruction SELECT spécifiée pour la propriété de liaison PollingStatement , est en cours d’exécution.
Le port d’envoi FILE, qui reçoit les messages de la base de données Oracle, est en cours d’exécution.
L’orchestration BizTalk pour l’opération est en cours d’exécution.
Exécution de l’opération
Après avoir exécuté l’application, l’ensemble d’actions suivant se produit, dans la même séquence :
L’adaptateur exécute le PolledDataAvailableStatement qui retourne une valeur positive indiquant que l’adaptateur doit exécuter l’instruction spécifiée pour la propriété de liaison PollingStatement .
L’adaptateur exécute l’instruction SELECT pour la propriété de liaison PollingStatement et retourne toutes les lignes de la table ACCOUNTACTIVITY. La réponse de la base de données Oracle ressemble à ce qui suit :
<?xml version="1.0" encoding="utf-8" ?> <POLLINGSTMT xmlns="http://Microsoft.LobServices.OracleDB/2007/03/POLLINGSTMT"> <POLLINGSTMTRECORD> <POLLINGSTMTRECORD> <TID>1</TID> <ACCOUNT>100001</ACCOUNT> <AMOUNT>500</AMOUNT> <DESCRIPTION /> <TRANSDATE>2008-08-03T20:10:28</TRANSDATE> <PROCESSED>n</PROCESSED> <POLLINGSTMTRECORD> <POLLINGSTMTRECORD> ...... ...... </POLLINGSTMTRECORD> ...... ...... </POLLINGSTMTRECORD> </POLLINGSTMT>
L’adaptateur exécute l’instruction post-interrogation, qui déplace toutes les données de la table ACCOUNTACTIVITY vers une autre table.
Après l’intervalle d’interrogation, l’adaptateur exécute à nouveau PolledDataAvailableStatement. Étant donné que la table ACCOUNTACTIVITY n’a actuellement aucun enregistrement, PolledDataAvailableStatement ne retourne pas de valeur positive et par conséquent, l’adaptateur n’exécute pas l’instruction spécifiée pour la propriété de liaison PollingStatement . Par conséquent, le client d’adaptateur n’obtient aucun message d’interrogation.
Le client de l’adaptateur ne recevra plus de messages d’interrogation tant que certains enregistrements n’auront pas été explicitement insérés dans la table ACCOUNTACTIVITY. Pour insérer d’autres enregistrements, vous pouvez exécuter le script more_activity_data.sql fourni avec les exemples. Après avoir exécuté ce script, la prochaine fois que PolledDataAvailableStatement est exécuté, il retourne une valeur positive. Par conséquent, l’adaptateur exécute l’instruction d’interrogation et les clients de l’adaptateur reçoivent à nouveau un message d’interrogation.
Notes
L’adaptateur Oracle Database continuera à interroger jusqu’à ce que vous désactiviez explicitement le port de réception à partir de la console d’administration BizTalk Server.
Exceptions possibles
Pour plus d’informations sur les exceptions que vous pouvez rencontrer lors de l’exécution d’une requête d’interrogation sur la base de données Oracle à l’aide de BizTalk Server, consultez Gestion des exceptions et des erreurs avec l’adaptateur Oracle Database.
Bonnes pratiques
Une fois que vous avez déployé et configuré le projet BizTalk, vous pouvez exporter les paramètres de configuration vers un fichier XML appelé fichier de liaisons. Une fois que vous avez généré un fichier de liaisons, vous pouvez importer les paramètres de configuration à partir du fichier afin de ne pas avoir à créer les ports d’envoi et les ports de réception pour la même orchestration. Pour plus d’informations sur les fichiers de liaison, consultez Réutiliser les liaisons d’adaptateur de base de données Oracle.