Compartir a través de


Sondear oracle Database mediante la instrucción SELECT

Puede configurar el adaptador de Oracle Database para recibir mensajes periódicos de cambio de datos mediante una instrucción SELECT para sondear continuamente las tablas y vistas de oracle de 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 el adaptador ejecuta si hay un cambio en los datos. Este bloque se usa a menudo para actualizar un campo de los registros consultados en el destino o para mover los registros consultados a otra tabla o vista.

Para habilitarlo, debe especificar determinadas propiedades de enlace en el adaptador de Oracle Database. 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 Oracle Database 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 BizTalk Server consola de administración.

Binding (propiedad) Descripción
InboundOperationType Especifica si desea realizar la operación de sondeo o de entrada 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 especificada 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 sondea 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 del intervalo.
PollingStatement Especifica la instrucció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 Especifica 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 genere para la operación mediante el complemento Consumir servicio de adaptador.
PostPollStatement Especifica un bloque de instrucciones que se ejecuta después de que se ejecute la instrucción especificada por la propiedad de enlace PollingStatement .
PollWhileDataFound Especifica si el adaptador de Oracle Database 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 revierte para 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.

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 un 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 de este tema sondea la tabla ACCOUNTACTIVITY, que es una tabla de 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 dónde se sondea la tabla (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 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 una base de datos de Oracle mediante el adaptador de oracle Database 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:

  1. Cree un proyecto de BizTalk y genere el esquema para la operación POLLINGSTMT de la tabla que desea sondear.

  2. Cree un mensaje en el proyecto de BizTalk para recibir mensajes de la base de datos de Oracle.

  3. Cree una orquestación para recibir mensajes de Oracle y guárdelos en una carpeta.

  4. Compile e implemente el proyecto de BizTalk.

  5. Configure la aplicación de BizTalk mediante la creación de puertos físicos de envío y recepción.

    Importante

    Para escenarios de sondeo entrante, siempre debe configurar un puerto de recepción unidireccional. No se admiten puertos de recepción bidireccionales para las operaciones entrantes.

  6. 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 tareas siguientes al generar el esquema mediante el complemento Consumir servicio de adaptador.

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.

  1. 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.

  2. 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.

  3. En la vista Orquestación, haga clic con el botón derecho en Mensajes y, a continuación, haga clic en Nuevo mensaje.

  4. Haga clic con el botón derecho en el mensaje recién creado y, a continuación, seleccione Ventana Propiedades.

  5. En el panel Propiedades de Message_1, haga lo siguiente:

    Use Para hacer esto
    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 lo 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 nombre OracleDBBindingSchema pueden tener un aspecto similar a "Request" y "Response". Si desea crear un mensaje en la orquestación que se asigna al esquema de solicitud, puede identificar el esquema en la lista buscando OracleDBBindingSchema.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 aparecen en el nombre de archivo. En tal caso, la única manera de identificar el esquema es por el nombre de archivo del esquema, por ejemplo, OracleDBBindingSchema.

Configuración de la orquestación

Debe crear una orquestación de BizTalk para usar BizTalk Server para recibir mensajes de cambio de datos basados en sondeos 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.

  • Un 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. No se admiten puertos de recepción bidireccionales 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.

    Orquestación para una consulta de sondeo para Oracle

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 que se muestran en la orquestación mencionada.

Forma Tipo de forma Propiedades
ReceiveMessage Recepción - Establecer nombre en ReceiveMessage

- Establecer Activar en True
SaveMessage Envío - Establecer nombre en SaveMessage

Adición de 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 como se muestra en la orquestación.

Port Propiedades
OracleReceivePort - Establecer el identificador en OracleReceivePort

- Establecer 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 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
ReceiveMessage - Establecer mensaje en Recibir

- Establecer la operación en OracleReceivePort.Polling.Request
SaveMessage - Establecer mensaje en Recibir

- Establecer operación en SaveMessagePort.Polling.Request

Después de especificar estas propiedades, se conectan las formas y los puertos del mensaje y se completa la orquestación.

Ahora debe compilar la solución de BizTalk e implementarla en un 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 debe:

    • Defina una ubicación en el disco duro y un puerto FILE correspondiente donde la orquestación de BizTalk quitará los mensajes de Oracle. Estos mensajes serán en respuesta a la instrucción de sondeo que especifique para el puerto de recepción.

    • Defina una WCF-Custom física o WCF-OracleDB puerto de recepción unidireccional. 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.

      Binding (propiedad) Value
      InboundOperationType Establézcalo en Sondeo.
      PolledDataAvailableStatement En este ejemplo, establezca esta propiedad de enlace en:

      SELECT COUNT (*) FROM ACCOUNTACTIVITY

      Esto garantiza que el adaptador ejecuta la instrucción de sondeo solo cuando la tabla ACCOUNTACTIVITY tiene 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 posterior al sondeo 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 base de datos de Oracle.

      Nota

      Se recomienda configurar el nivel de aislamiento de transacción y el tiempo de espera de la transacción al realizar 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 transacción 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 que:

  • 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 obtiene ningún mensaje de sondeo.

  • El cliente del adaptador no obtendrá más mensajes de sondeo hasta que algunos registros se inserte 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 de nuevo la instrucción de sondeo y los clientes del adaptador reciben un mensaje de sondeo.

Nota

El adaptador de Oracle Database seguirá sondeando hasta que deshabilite explícitamente el puerto de recepción de 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, consulte Excepciones y control de errores con el adaptador de base de datos de Oracle.

Prácticas recomendadas

Después de implementar y configurar el proyecto de BizTalk, puede exportar los valores 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 el enlace de archivos, consulte Reutilización de enlaces del adaptador de base de datos de Oracle.

Consulte también

Sondear la base de datos de Oracle mediante BizTalk Server