Compatibilidad con la recepción de mensajes modificados por datos basados en sondeos en Oracle Database
El adaptador de base de datosoracle permite a los programas cliente recibir mensajes de la base de datos de Oracle informándoles de los cambios en los datos almacenados en una base de datos de Oracle. El adaptador de base de datos de Oracle admite la recepción de mensajes "basados en sondeos" en los que el adaptador ejecuta una consulta SELECT especificada, un procedimiento almacenado, una función o un procedimiento dentro de un paquete, recupera los datos y proporciona el resultado al cliente a intervalos regulares de tiempo. Para habilitarlo, el adaptador de base de datos de Oracle expone una operación POLLINGSTMT. Además, todos los procedimientos almacenados, funciones y procedimientos y funciones dentro de los paquetes se exponen como operaciones entrantes para el sondeo.
El adaptador proporciona dos maneras de sondear la base de datos de Oracle:
Uso de instrucciones SELECT. Puede especificar una instrucción SELECT sencilla para sondear las tablas y vistas de la base de datos de Oracle. El adaptador ejecuta la instrucción SELECT a intervalos especificados y devuelve el resultado a los clientes del adaptador.
Uso de procedimientos almacenados, funciones o procedimientos o funciones dentro de un paquete. Puede especificar un procedimiento almacenado, una función o un procedimiento o una función dentro de un paquete para sondear la base de datos de Oracle. El adaptador ejecuta el mensaje de solicitud a intervalos especificados y devuelve el resultado a los clientes del adaptador.
Flujo de trabajo de la operación de sondeo
Una operación de sondeo típica mediante el adaptador de base de datos de Oracle implica lo siguiente:
Los clientes del adaptador deben especificar Polling como la operación de entrada en la propiedad de enlace InboundOperationType . El valor predeterminado de esta propiedad de enlace es Polling.
Los clientes del adaptador deben especificar una instrucción SELECT para la propiedad de enlace PolledDataAvailableStatement para determinar si hay datos disponibles para el sondeo. En la ejecución de esta instrucción, si la primera columna de la primera fila del conjunto de resultados devuelto contiene un valor entero positivo, hay una fecha disponible para el sondeo. De forma predeterminada, el valor de esta propiedad de enlace se establece
Select 1 FROM DUAL
en , lo que implica que el adaptador debe continuar sondeando independientemente de si la tabla que se sondea tiene datos o no.Los clientes del adaptador deben especificar un intervalo de sondeo para la propiedad de enlace PollingInterval para definir el intervalo en segundos en que se ejecuta la instrucción especificada en la propiedad de enlace PolledDataAvailableStatement . Al final de cada intervalo de sondeo, se ejecuta la instrucción de datos de sondeo disponible y se devuelve el conjunto de resultados.
Los clientes del adaptador deben especificar una instrucción SELECT o un procedimiento almacenado para la propiedad de enlace PollingStatement .
Si desea sondear una tabla o vista, debe especificar una consulta SELECT en esta propiedad de enlace.
Si desea sondear mediante un procedimiento almacenado, una función o un procedimiento o una función dentro de un paquete, debe especificar el mensaje de solicitud completo para la operación correspondiente en esta propiedad de enlace.
La instrucción de la propiedad de enlace PollingStatement solo se ejecuta si hay datos disponibles para el sondeo, que viene determinado por la propiedad de enlace PolledDataAvailableStatement en el paso 1.
Los clientes del adaptador deben especificar una acción para la operación de sondeo en la propiedad de enlace PollingAction . La acción de sondeo de una operación específica se determina a partir de los metadatos generados para la operación mediante el complemento Consumir servicio de adaptador.
Nota
Si va a sondear una tabla o vista mediante una instrucción SELECT en la propiedad de enlace PollingStatement , no es necesario especificar ningún valor para la propiedad de enlace PollingAction . El valor predeterminado, Null, se pasa en este caso.
Los clientes del adaptador pueden usar la propiedad de enlace PollWhileDataFound para omitir el intervalo de sondeo y sondear continuamente los datos, como y cuando estén disponibles.
Importante
Si establece el valor de la propiedad de enlace PollWhileDataFound en True, los clientes del adaptador sondean continuamente los datos de Oracle y, en el proceso, abren y cierran las conexiones a la base de datos de Oracle en un bucle. Dado que la velocidad a la que se abren las conexiones mediante ODP.NET es mayor que las conexiones que se cierran, las conexiones se agotan después de algún tiempo y se produce una excepción. Como solución alternativa, asegúrese de que el valor de UseOracleConnectionPool está establecido en True y se menciona un valor adecuado en la propiedad de enlace IncrPoolSize para controlar el número de conexiones que pueden abrir los clientes del adaptador.
Los clientes del adaptador pueden especificar una instrucción posterior al sondeo, un bloque PL/SQL de Oracle, para la propiedad de enlace PostPollStatement . La instrucción especificada en esta propiedad de enlace se ejecuta después de ejecutar la instrucción especificada en la propiedad de enlace PollingStatement .
El adaptador ajusta la instrucción de sondeo y la instrucción posterior al sondeo en una transacción y el valor de tiempo de espera de la transacción se establece como el valor especificado para la propiedad de enlace PollingInterval . Por lo tanto, es fundamental especificar un valor de tiempo de espera mayor o igual que el tiempo necesario para procesar el mensaje entrante y enviar una respuesta. Si el tiempo que tarda el programa cliente en consumir el mensaje o ejecutar la consulta posterior al sondeo es mayor que el valor de tiempo de espera, la transacción se revierte. Si el tiempo necesario es menor que el valor de tiempo de espera, el adaptador confirma la transacción y "se suspende" durante el tiempo restante del sondeo antes de realizar el siguiente sondeo.
El adaptador suprime las respuestas de sondeo vacías procedentes de la base de datos de Oracle.
Diferencias entre sondeo y notificación
Aunque el sondeo y la notificación son operaciones entrantes e informan a los clientes del adaptador sobre los cambios de datos en la base de datos de Oracle, en la tabla siguiente se muestran algunas diferencias entre los dos. Las siguientes diferencias le ayudarán a decidir una operación en función de sus requisitos:
Sondeo | Notificación |
---|---|
El sondeo es compatible con todas las versiones de base de datos de Oracle compatibles con el adaptador de base de datos de Oracle. | La notificación solo se admite para las versiones 10.2 y posteriores de la base de datos de Oracle. |
Puede configurar el intervalo de sondeo para comprobar los datos disponibles para el sondeo a intervalos regulares o de forma instantánea como y cuando los datos están disponibles. Propina: El sondeo puede proporcionar un mejor rendimiento en escenarios en los que los cambios de datos se producen continuamente y no desea recibir notificaciones de cada cambio como y cuando se produce. En su lugar, especifique un intervalo de sondeo después del cual desea recibir una notificación de todos los cambios que se han producido desde la última notificación de cambio. | La notificación de cambio de datos siempre es instantánea. |
El adaptador inicia el sondeo. El adaptador ejecuta una instrucción SQL para validar si los datos están disponibles para el sondeo y, a continuación, inicia el sondeo ejecutando la instrucción de sondeo si hay algunos datos disponibles para el sondeo. | La base de datos de Oracle inicia la notificación. La instrucción de notificación emitida por el adaptador simplemente indica a la base de datos que inicie la notificación en caso de que haya un cambio en el conjunto de resultados de la instrucción. La notificación es una característica de la base de datos de Oracle. |
Puede usar la instrucción de sondeo para leer o actualizar datos en la base de datos de Oracle. | Puede usar la instrucción de notificación para leer solo los datos de una base de datos de Oracle. |
El sondeo le informa sobre los datos reales que han cambiado. | La notificación solo informa sobre el tipo de cambio en los datos, como Insertar, Actualizar y Eliminar. |
Para más información acerca de:
Cómo admite el adaptador la recepción de mensajes basados en sondeos de la base de datos de Oracle, consulte Recepción de mensajes modificados por datos basados en sondeo.
Recibir mensajes basados en sondeos de la base de datos de Oracle mediante BizTalk Server, vea Invocar funciones y procedimientos en oracle Database mediante Biztalk Server.
Recibir mensajes basados en sondeos de la base de datos de Oracle mediante el modelo de servicio WCF, consulte Recibir mensajes modificados por datos basados en sondeos de SQL Server mediante el modelo de canal WCF.
Recibir mensajes basados en sondeos de la base de datos de Oracle mediante el modelo de canal WCF, consulte Recepción de mensajes modificados por datos basados en sondeos de SQL Server mediante el modelo de canal WCF.
Estructura de mensajes y acciones SOAP para realizar una consulta de sondeo, vea Esquemas de mensaje para las operaciones de sondeo.