Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Puede configurar el adaptador de Oracle Database para recibir mensajes periódicos de cambio de datos utilizando una instrucción SELECT para consultar continuamente las tablas y vistas en la base de datos de Oracle. Puede especificar una instrucción SELECT como una instrucción de sondeo que el adaptador ejecuta periódicamente para sondear la base de datos de Oracle. Opcionalmente, también puede especificar un bloque de código PL/SQL posterior al sondeo que ejecuta el adaptador si hay un cambio en los datos. Este bloque se usa a menudo para actualizar un campo en los registros consultados en el destino o para mover los registros consultados a otra tabla o vista.
Para habilitar esto, debe especificar determinadas propiedades de enlace en el adaptador de base de datos de Oracle. También puede modificar el espacio de nombres de destino para la operación POLLINGSTMT estableciendo la propiedad PollingId en el URI de conexión. Para obtener más información, consulte Compatibilidad con la recepción de mensajes modificados por datos basados en sondeos en Oracle Database y Recepción de mensajes modificados por datos basados en sondeo en el adaptador de base de datos de Oracle. Para obtener información sobre la estructura del mensaje SOAP para las operaciones de sondeo, vea Esquemas de mensaje para las operaciones de sondeo2.
Configuración de una operación de sondeo con propiedades de enlace del adaptador de base de datos de Oracle
En la tabla siguiente se resumen las propiedades de enlace del adaptador de base de datos de Oracle que se usan para configurar el adaptador para recibir mensajes de cambio de datos. Debe especificar estas propiedades de enlace al configurar el puerto de recepción en la consola de administración de BizTalk Server.
Propiedad de enlace | Descripción |
---|---|
InboundOperationType | Especifica si desea realizar una operación de entrada de sondeo o de notificación. El valor predeterminado es Sondeo. |
PolledDataAvailableStatement | Especifica la instrucción SQL que ejecuta el adaptador para determinar si hay datos disponibles para el sondeo. Solo si hay un registro disponible, se ejecutará la instrucción SELECT que especifique para la propiedad de enlace PollingStatement . El valor predeterminado es SELECT 1 FROM DUAL , lo que implica que el adaptador debe continuar sondeando independientemente de si la tabla que se está sondeando tiene datos o no. |
PollingInterval | Especifica el intervalo, en segundos, en el que el adaptador de base de datos de Oracle ejecuta la instrucción especificada para la propiedad de enlace PolledDataAvailableStatement . El valor predeterminado es 500 segundos. El intervalo de sondeo determina el intervalo de tiempo entre sondeos sucesivos. Si la instrucción se ejecuta dentro del intervalo especificado, el adaptador se suspende durante el tiempo restante en el intervalo. |
PollingStatement | Especifica la declaración de sondeo. Para sondear mediante una instrucción SELECT, debe especificar una instrucción SELECT para esta propiedad de enlace. El valor predeterminado es NULL. Debe especificar un valor para la propiedad de enlace PollingStatement para habilitar el sondeo. La instrucción de sondeo solo se ejecuta si hay datos disponibles para el sondeo, que viene determinado por la propiedad de enlace PolledDataAvailableStatement . |
PollingAction | Define la acción para la operación de sondeo. Puede determinar la acción de sondeo de una operación específica a partir de los metadatos que genera para la operación mediante el complemento Consumir Servicio del Adaptador. |
PostPollStatement | Especifica un bloque de instrucciones que se ejecuta después de la ejecución de la instrucción especificada por la propiedad de enlace PollingStatement. |
SondearMientrasSeEncuentraDatos | Especifica si el adaptador de base de datos de Oracle omite el intervalo de sondeo y ejecuta continuamente la instrucción de sondeo, si los datos están disponibles en la tabla que se está sondeando. Si no hay datos disponibles en la tabla, el adaptador vuelve a ejecutar la instrucción de sondeo en el intervalo de sondeo especificado. El valor predeterminado es False. |
Para obtener una descripción más completa de estas propiedades, consulte Leer sobre las propiedades de enlace del adaptador de Base de datos de Oracle. Para obtener una descripción completa de cómo usar el adaptador de Oracle Database para sondear la base de datos de Oracle, lea más adelante.
Cómo muestra este tema el sondeo
En este tema, para demostrar cómo el adaptador de base de datos de Oracle admite la recepción de mensajes de cambio de datos mediante instrucciones SELECT, cree un proyecto de BizTalk y genere esquema para la operación POLLINGSTMT estableciendo la propiedad de enlace PollingStatement en lo siguiente:
SELECT * FROM ACCOUNTACTIVITY FOR UPDATE
La tabla ACCOUNTACTIVITY se crea al ejecutar los scripts SQL proporcionados con los ejemplos para crear estos objetos en la base de datos.
Nota:
La orquestación en este tema sondea la tabla ACCOUNTACTIVITY, que es una tabla base de datos creada mediante la ejecución de los scripts proporcionados con los ejemplos. Debe realizar procedimientos similares como se describe en este tema para sondear cualquier otra tabla.
Para demostrar una operación de sondeo, hacemos lo siguiente:
Especifique una instrucción SELECT para la propiedad de enlace PolledDataAvailableStatement para determinar si la tabla que se está sondeando (ACCOUNTACTIVITY) tiene datos. En este ejemplo, puede establecer esta propiedad de enlace como:
SELECT COUNT (*) FROM ACCOUNTACTIVITY
Esto garantiza que el adaptador ejecute la instrucción de sondeo solo cuando la tabla ACCOUNTACTIVITY tenga algunos registros.
Especifique la instrucción SELECT como se indicó anteriormente para la propiedad de enlace PollingStatement. Esta instrucción recupera todas las filas de la tabla ACCOUNTACTIVITY.
EJECUTE un bloque PL/SQL como parte de la propiedad de enlace PostPollStatement . Esta instrucción moverá todos los datos de la tabla ACCOUNTACTIVITY a otra tabla de la base de datos. Una vez que esto suceda, la próxima vez que se ejecute la instrucción especificada para PollingStatement , no capturará ningún dato.
Hasta que se agreguen más datos a la tabla ACCOUNTACTIVITY, no obtendrá ningún mensaje de sondeo. Por lo tanto, debe volver a rellenar la tabla ACCOUNTACTIVITY con nuevos registros. Para ello, ejecute el script de more_activity_data.sql proporcionado con los ejemplos. Después de ejecutar este script, la siguiente operación de sondeo capturará los nuevos registros insertados en la tabla.
Cómo recibir mensajes de cambio de datos de Oracle
Realizar una operación en la base de datos de Oracle mediante el adaptador de base de datos de Oracle con BizTalk Server implica las siguientes tareas de procedimientos descritas en Bloques de creación para desarrollar aplicaciones de BizTalk con Oracle Database. Para configurar el adaptador para sondear la base de datos de Oracle mediante una instrucción SELECT, estas tareas son:
Cree un proyecto de BizTalk y genere el esquema para la operación POLLINGSTMT para la tabla que desea sondear.
Cree un mensaje en el proyecto de BizTalk para recibir mensajes de la base de datos de Oracle.
Cree una orquestación para recibir mensajes de Oracle y guárdelos en una carpeta.
Compile e implemente el proyecto de BizTalk.
Configure la aplicación de BizTalk mediante la creación de puertos de envío y recepción físicos.
Importante
Para escenarios de sondeo de entrada, siempre debe configurar un puerto de recepción unidireccional. Los puertos de recepción bidireccionales no se admiten para las operaciones entrantes.
Inicie la aplicación de BizTalk.
En este tema se proporcionan instrucciones para realizar estas tareas.
Generar esquema
Debe generar el esquema para la operación POLLINGSTMT . Realice las siguientes tareas al generar el esquema mediante el complemento Consume Adapter Service.
Especifique un valor para la propiedad de enlace PollingStatement al generar el esquema. Para obtener más información sobre esta propiedad de enlace, vea Leer sobre las propiedades de enlace del adaptador de base de datos de Oracle. Por ejemplo, especifique lo siguiente como una instrucción de sondeo:
SELECT * FROM ACCOUNTACTIVITY FOR UPDATE
Seleccione el tipo de contrato como Servicio (operación de entrada).
Genere el esquema para la operación POLLINGSTMT .
Para obtener más información sobre cómo generar esquema, consulte Examinar, buscar y obtener metadatos para las operaciones de Oracle Database.
Definición de mensajes y tipos de mensajes
El esquema que generó anteriormente describe los "tipos" necesarios para los mensajes de la orquestación. Normalmente, un mensaje es una variable, el tipo para el que se define mediante el esquema correspondiente. Una vez generado el esquema, debe vincularlo a los mensajes de la vista Orquestación del proyecto de BizTalk.
Para este tema, debe crear un mensaje para recibir mensajes de Oracle.
Realice los pasos siguientes para crear mensajes y vincularlos al esquema.
Para crear mensajes y vincular al esquema
Agregue una orquestación al proyecto de BizTalk. En el Explorador de soluciones, haga clic con el botón derecho en el nombre del proyecto de BizTalk, seleccione Agregar y, a continuación, haga clic en Nuevo elemento. Escriba un nombre para la orquestación de BizTalk y, a continuación, haga clic en Agregar.
Abra la ventana de vista de orquestación del proyecto de BizTalk, si aún no está abierta. Haga clic en Ver, seleccione Otras ventanas y, a continuación, haga clic en Vista de orquestación.
En la vista Orquestación, haga clic con el botón derecho en Mensajes y, a continuación, haga clic en Nuevo mensaje.
Haga clic con el botón derecho en el mensaje recién creado y, a continuación, seleccione Ventana Propiedades.
En el panel Propiedades de Message_1, haga lo siguiente:
Usa esto Para Identificador Escriba Receive. Tipo de mensaje En la lista desplegable, expanda Esquemas y seleccione TablePolling.OracleDBBinding, donde TablePolling es el nombre del proyecto de BizTalk. OracleDBBindingSchema es el esquema de respuesta generado para la operación POLLINGSTMT en la tabla ACCOUNTACTIVITY.
Importante Dado que el sondeo es una operación unidireccional, el esquema generado por el adaptador no contiene un nodo de respuesta y, por tanto, solo hay un nodo raíz en el esquema. Si usa estos esquemas para un tipo de mensaje, debe identificar el esquema por el nombre de archivo del esquema generado.
Por ejemplo, si crea un esquema para una operación bidireccional, los nodos del archivo de esquema con un nombreOracleDBBindingSchema
pueden tener un aspecto similar a "Request" y "Response". Si desea crear un mensaje en la orquestación que se corresponda con el esquema de solicitud, puede identificar el esquema en la lista buscandoOracleDBBindingSchema.Request
. Sin embargo, en el caso de la operación de sondeo, porque el único nodo es "POLLINGSTMT", no es fácil identificar el esquema al que desea asignar porque los esquemas con nodos únicos no aparecen como <schemafilename>.<rootnodename>. En su lugar, estos esquemas solo se enumeran con el nombre de archivo. En tal caso, la única manera de identificar el esquema es mediante el nombre de archivo del esquema, por ejemplo, OracleDBBindingSchema.
Configuración de la orquestación
Debe crear una orquestación en BizTalk para utilizar BizTalk Server y recibir mensajes de cambio de datos basados en encuestas de Oracle. En esta orquestación, el adaptador recibe la respuesta ejecutando la instrucción SELECT especificada para la propiedad de enlace PollingStatement . El mensaje de respuesta de la instrucción SELECT se guarda en una ubicación FILE. Una orquestación típica para el sondeo de la base de datos de Oracle contendrá:
Recibir y enviar formas para recibir mensajes de Oracle y enviarlos a un puerto FILE, respectivamente.
Puerto de recepción unidireccional para recibir mensajes de la base de datos de Oracle.
Importante
Para escenarios de sondeo de entrada, siempre debe configurar un puerto de recepción unidireccional. Los puertos de recepción bidireccionales no se admiten para las operaciones entrantes.
Un puerto de envío unidireccional para enviar respuestas de sondeo desde la base de datos de Oracle.
Una orquestación de ejemplo es similar a la siguiente.
Agregar formas de mensaje
Asegúrese de especificar las siguientes propiedades para cada una de las formas de mensaje. Los nombres enumerados en la columna Shape son los nombres de las formas de mensaje tal como se muestran en la orquestación recién mencionada.
Forma | Tipo de forma | Propiedades |
---|---|---|
RecibirMensaje | Recibir | - Establecer nombre en ReceiveMessage - Establecer Activar en True |
GuardarMensaje | Enviar | - Establecer nombre en SaveMessage |
Agregar puertos
Asegúrese de especificar las siguientes propiedades para cada uno de los puertos lógicos. Los nombres enumerados en la columna Puerto son los nombres de los puertos tal como aparecen en la orquestación.
Puerto | Propiedades |
---|---|
OracleReceivePort | - Establecer identificador en OracleReceivePort - Establecer el tipo en OracleReceivePortType - Establecer el patrón de comunicación en unidireccional - Establecer la dirección de comunicación para recibir |
SaveMessagePort | - Establecer identificador en SaveMessagePort - Establecer el tipo en SaveMessagePortType - Establecer el patrón de comunicación en unidireccional - Establecer la dirección de comunicación en Enviar |
Especificar mensajes para formas de acción y conectarse a puertos
En la tabla siguiente se especifican las propiedades y sus valores que se deben establecer para especificar mensajes para las formas de acción y para vincular los mensajes a los puertos. Los nombres enumerados en la columna Shape son los nombres de las formas de mensaje tal como se muestran en la orquestación mencionada anteriormente.
Forma | Propiedades |
---|---|
RecibirMensaje | - Establecer mensaje en Recibir - Establecer la operación en OracleReceivePort.Polling.Request |
GuardarMensaje | - Establecer mensaje en Recibir - Establecer Operación en SaveMessagePort.Polling.Request |
Una vez que haya especificado estas propiedades, las formas de mensaje y los puertos están conectados y se completa la orquestación.
Ahora debe compilar la solución de BizTalk e implementarla en un servidor de BizTalk Server. Para obtener más información, vea Compilar y ejecutar orquestaciones.
Configuración de la aplicación de BizTalk
Después de implementar el proyecto de BizTalk, la orquestación que creó anteriormente aparece en el panel Orquestaciones de la consola de administración de BizTalk Server. Debe usar la consola de administración de BizTalk Server para configurar la aplicación. Para ver un tutorial, consulte Tutorial: Implementación de una aplicación básica de BizTalk.
La configuración de una aplicación implica:
Selección de un host para la aplicación.
Asignación de los puertos que creó en la orquestación a puertos físicos en la consola de administración de BizTalk Server. Para esta orquestación, debes:
Defina una ubicación en el disco duro y un puerto FILE correspondiente donde la orquestación de BizTalk dejará los mensajes de Oracle. Estos mensajes serán en respuesta al comando de sondeo que especifique para el puerto de recepción.
Defina un puerto de recepción unidireccional físico WCF-Custom o WCF-OracleDB. Este puerto sondea la base de datos de Oracle. Para obtener información sobre cómo crear puertos de recepción, consulte Configuración manual de un enlace de puerto físico al adaptador de base de datos de Oracle. Asegúrese de especificar las siguientes propiedades de enlace para el puerto de recepción.
Propiedad de enlace Importancia InboundOperationType Establézcalo en Polling. PolledDataAvailableStatement En este ejemplo, establezca esta propiedad de enlace en:
SELECT COUNT (*) FROM ACCOUNTACTIVITY
Esto garantiza que el adaptador ejecute la instrucción de sondeo solo cuando la tabla ACCOUNTACTIVITY tenga algunos registros.PollingStatement Para esta propiedad de enlace, especifique una instrucción SELECT para recuperar todos los registros de la tabla ACCOUNTACTIVITY. En este ejemplo, establezca esta propiedad de enlace en:
SELECT * FROM ACCOUNTACTIVITY FOR UPDATE
PostPollStatement Especifique la instrucción post-poll para mover todos los datos de la tabla ACCOUNTACTIVITY a otra tabla. En este ejemplo, establezca esta propiedad de enlace en:
BEGIN ACCOUNT_PKG.PROCESS_ACTIVITY(); END;
Para obtener más información sobre las distintas propiedades de enlace, vea Leer sobre las propiedades de enlace del adaptador de Oracle Database.
Nota:
Se recomienda configurar el nivel de aislamiento de transacciones y el tiempo de espera de la transacción mientras se realizan operaciones entrantes mediante el adaptador de base de datos de Oracle. Para ello, agregue el comportamiento del servicio al configurar el puerto de recepción. Para obtener instrucciones sobre cómo agregar el comportamiento del servicio, consulte Configuración del nivel de aislamiento de transacciones y el tiempo de espera de la transacción.
Iniciar la aplicación
Debe iniciar la aplicación de BizTalk para sondear la base de datos de Oracle. Para obtener instrucciones sobre cómo iniciar una aplicación de BizTalk, vea Cómo iniciar una orquestación.
En esta fase, asegúrese de:
El WCF-Custom o WCF-OracleDB puerto de recepción unidireccional, que sondea Oracle mediante la instrucción SELECT especificada para la propiedad de enlace PollingStatement , se está ejecutando.
El puerto de envío FILE, que recibe mensajes de la base de datos de Oracle, se está ejecutando.
La orquestación de BizTalk para la operación se está ejecutando.
Ejecución de la operación
Después de ejecutar la aplicación, se realiza el siguiente conjunto de acciones, en la misma secuencia:
El adaptador ejecuta polledDataAvailableStatement , que devuelve un valor positivo que indica el adaptador para ejecutar la instrucción especificada para la propiedad de enlace PollingStatement .
El adaptador ejecuta la instrucción SELECT para la propiedad de enlace PollingStatement y devuelve todas las filas de la tabla ACCOUNTACTIVITY. La respuesta de la base de datos de Oracle es similar a la siguiente:
<?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>
El adaptador ejecuta la instrucción post-poll, que mueve todos los datos de la tabla ACCOUNTACTIVITY a otra tabla.
Después del intervalo de sondeo, el adaptador vuelve a ejecutar PolledDataAvailableStatement. Dado que la tabla ACCOUNTACTIVITY no tiene registros ahora, PolledDataAvailableStatement no devuelve un valor positivo y, por tanto, el adaptador no ejecuta la instrucción especificada para la propiedad de enlace PollingStatement . Como resultado, el cliente del adaptador no recibe ningún mensaje de sondeo.
El cliente del adaptador no obtendrá más mensajes de sondeo hasta que ciertos registros se inserten explícitamente en la tabla ACCOUNTACTIVITY. Para insertar más registros, puede ejecutar el script more_activity_data.sql proporcionado con los ejemplos. Después de ejecutar este script, la próxima vez que se ejecute PolledDataAvailableStatement , devuelve un valor positivo. Como resultado, el adaptador ejecuta la instrucción de sondeo y los clientes del adaptador reciben de nuevo un mensaje de sondeo.
Nota:
El adaptador de base de datos de Oracle seguirá sondeando hasta que deshabilite explícitamente el puerto de recepción desde la consola de administración de BizTalk Server.
Posibles excepciones
Para obtener información sobre las excepciones que puede encontrar al ejecutar una consulta de sondeo en la base de datos de Oracle mediante BizTalk Server, vea Excepciones y control de errores con el adaptador de base de datos de Oracle.
Procedimientos recomendados
Después de implementar y configurar el proyecto de BizTalk, puede exportar opciones de configuración a un archivo XML denominado archivo de enlaces. Una vez que genere un archivo de enlaces, puede importar los valores de configuración del archivo para que no sea necesario crear los puertos de envío y recibir puertos para la misma orquestación. Para obtener más información sobre la vinculación de archivos, consulte Reutilizar vinculaciones del adaptador de base de datos de Oracle.