Freigeben über


Abfragen von Oracle Database mithilfe der SELECT-Anweisung

Sie können den Oracle Database-Adapter so konfigurieren, dass er periodische Datenänderungsmeldungen empfängt, indem Sie eine SELECT-Anweisung verwenden, um die Tabellen und Ansichten in Oracle der Oracle-Datenbank kontinuierlich abzufragen. Sie können eine SELECT-Anweisung als Abfrage-Anweisung angeben, die der Adapter regelmäßig ausführt, um die Oracle-Datenbank abzufragen. Optional können Sie auch einen PL/SQL-Codeblock nach der Abfrage angeben, den der Adapter ausführt, wenn sich die Daten ändern. Dieser Block wird häufig verwendet, um ein Feld für die abgefragten Datensätze im Ziel zu aktualisieren oder die abgefragten Datensätze in eine andere Tabelle oder Sicht zu verschieben.

Um dies zu aktivieren, müssen Sie bestimmte Bindungseigenschaften für den Oracle Database-Adapter angeben. Sie können auch den Zielnamespace für den POLLINGSTMT-Vorgang ändern, indem Sie die PollingId-Eigenschaft im Verbindungs-URI festlegen. Weitere Informationen finden Sie unter Support for Receiveing-based Data-changed messages in Oracle Database und Receive polling-based data-changed messages in Oracle Database adapter. Informationen zur Struktur der SOAP-Nachricht für Abrufvorgänge finden Sie unter Nachrichtenschemas für die Abrufvorgänge2.

Konfigurieren eines Abfragevorgangs mit Oracle Database Adapter Binding Properties

In der folgenden Tabelle sind die Bindungseigenschaften des Oracle Database-Adapters zusammengefasst, die Sie zum Konfigurieren des Adapters für den Empfang von Datenänderungsmeldungen verwenden. Sie müssen diese Bindungseigenschaften beim Konfigurieren des Empfangsports in BizTalk Server Verwaltungskonsole angeben.

Bindungseigenschaft BESCHREIBUNG
InboundOperationType Gibt an, ob Sie eingehende Abfrage- oder Benachrichtigungsvorgänge ausführen möchten. Die Standardeinstellung ist Polling.
PolledDataAvailableStatement Gibt die SQL-Anweisung an, die der Adapter ausführt, um zu bestimmen, ob Daten für die Abfrage verfügbar sind. Nur wenn ein Datensatz verfügbar ist, wird die SELECT-Anweisung ausgeführt, die Sie für die Eigenschaft PollingStatement-Bindung angeben. Der Standardwert ist SELECT 1 FROM DUAL, was bedeutet, dass der Adapter die Abfrage unabhängig davon fortsetzen muss, ob die abgefragte Tabelle Daten enthält oder nicht.
PollingInterval Gibt das Intervall in Sekunden an, in dem der Oracle Database-Adapter die Für die PolledDataAvailableStatement-Bindungseigenschaft angegebene Anweisung ausführt. Der Standardwert ist 500 Sekunden. Das Abfrageintervall bestimmt das Zeitintervall zwischen aufeinander folgenden Umfragen. Wenn die Anweisung innerhalb des angegebenen Intervalls ausgeführt wird, wird der Adapter für die verbleibende Zeit im Intervall in den Ruhezustand versetzt.
PollingStatement Gibt die Abfrage-Anweisung an. Um mit einer SELECT-Anweisung abzufragen, müssen Sie eine SELECT-Anweisung für diese Bindungseigenschaft angeben. Der Standardwert ist NULL.

Sie müssen einen Wert für die PollingStatement-Bindungseigenschaft angeben, um die Abfrage zu aktivieren. Die Abfrageanweisung wird nur ausgeführt, wenn Daten für die Abfrage verfügbar sind, die durch die PolledDataAvailableStatement-Bindungseigenschaft bestimmt werden.
PollingAction Gibt die Aktion für den Abrufvorgang an. Sie können die Abfrageaktion für einen bestimmten Vorgang anhand der Metadaten ermitteln, die Sie für den Vorgang generieren, indem Sie das Add-In Adapterdienst nutzen verwenden.
PostPollStatement Gibt einen Anweisungsblock an, der ausgeführt wird, nachdem die von der Eigenschaft PollingStatement-Bindung angegebene Anweisung ausgeführt wurde.
PollWhileDataFound Gibt an, ob der Oracle-Datenbank-Adapter das Abfrageintervall ignoriert und die Abfrage-Anweisung kontinuierlich ausführt, wenn Daten in der abgefragten Tabelle verfügbar sind. Wenn in der Tabelle keine Daten verfügbar sind, führt der Adapter die Abfrage-Anweisung im angegebenen Abrufintervall aus. Der Standardwert ist "false".

Eine ausführlichere Beschreibung dieser Eigenschaften finden Sie unter Informationen zu den Bindungseigenschaften des Oracle Database-Adapters. Eine vollständige Beschreibung der Verwendung des Oracle Database-Adapters zum Abfragen der Oracle-Datenbank finden Sie weiter.

In diesem Thema wird die Abfrage veranschaulicht

Um in diesem Thema zu veranschaulichen, wie der Oracle Database-Adapter den Empfang von Datenänderungsnachrichten mithilfe von SELECT-Anweisungen unterstützt, erstellen Sie ein BizTalk-Projekt und generieren ein Schema für den POLLINGSTMT-Vorgang , indem Sie die Eigenschaft PollingStatement-Bindung auf Folgendes festlegen:

SELECT * FROM ACCOUNTACTIVITY FOR UPDATE  

Die TABELLE ACCOUNTACTIVITY wird erstellt, wenn Sie die SQL-Skripts ausführen, die mit den Beispielen bereitgestellt werden, um diese Objekte in der Datenbank zu erstellen.

Hinweis

Die Orchestrierung in diesem Thema fragt die TABELLE ACCOUNTACTIVITY ab, bei der es sich um eine Basisdatenbanktabelle handelt, die durch Ausführen der mit den Beispielen bereitgestellten Skripts erstellt wird. Sie müssen ähnliche Verfahren wie in diesem Thema beschrieben ausführen, um eine andere Tabelle abzufragen.

Um einen Abrufvorgang zu veranschaulichen, gehen wir wie folgt vor:

  • Geben Sie eine SELECT-Anweisung für die PolledDataAvailableStatement-Bindungseigenschaft an, um zu bestimmen, wo die abgefragte Tabelle (ACCOUNTACTIVITY) Daten enthält. In diesem Beispiel können Sie diese Bindungseigenschaft wie folgt festlegen:

    SELECT COUNT (*) FROM ACCOUNTACTIVITY  
    

    Dadurch wird sichergestellt, dass der Adapter die Abfrage-Anweisung nur ausführt, wenn die TABELLE ACCOUNTACTIVITY einige Datensätze enthält.

  • Geben Sie die SELECT-Anweisung an, wie zuvor für die Eigenschaft PollingStatement-Bindung angegeben. Diese Anweisung ruft alle Zeilen in der TABELLE ACCOUNTACTIVITY ab.

  • EXECUTE einen PL/SQL-Block als Teil der PostPollStatement-Bindungseigenschaft . Mit dieser Anweisung werden alle Daten aus der TABELLE ACCOUNTACTIVITY in eine andere Tabelle in der Datenbank verschoben. Sobald dies geschieht, ruft die für PollingStatement angegebene Anweisung das nächste Mal keine Daten ab.

  • Bis der TABELLE ACCOUNTACTIVITY weitere Daten hinzugefügt werden, erhalten Sie keine Abrufmeldungen. Daher müssen Sie die TABELLE ACCOUNTACTIVITY mit neuen Datensätzen neu auffüllen. Dazu führen Sie das mit den Beispielen bereitgestellte Skript more_activity_data.sql aus. Nachdem Sie dieses Skript ausgeführt haben, ruft der nächste Abrufvorgang die neuen Datensätze ab, die in die Tabelle eingefügt wurden.

Empfangen von Datenänderungsnachrichten von Oracle

Das Ausführen eines Vorgangs für Oracle-Datenbank mithilfe des Oracle-Datenbankadapters mit BizTalk Server umfasst die folgenden prozeduralen Aufgaben, die unter Bausteine zum Entwickeln von BizTalk-Anwendungen mit Oracle-Datenbank beschrieben werden. Zum Konfigurieren des Adapters zum Abfragen der Oracle-Datenbank mithilfe einer SELECT-Anweisung sind die folgenden Aufgaben zu verwenden:

  1. Erstellen Sie ein BizTalk-Projekt, und generieren Sie ein Schema für den POLLINGSTMT-Vorgang für die Tabelle, die Sie abfragen möchten.

  2. Erstellen Sie eine Nachricht im BizTalk-Projekt zum Empfangen von Nachrichten aus der Oracle-Datenbank.

  3. Erstellen Sie eine Orchestrierung, um Nachrichten von Oracle zu empfangen, und speichern Sie sie in einem Ordner.

  4. Erstellen und Bereitstellen des BizTalk-Projekts.

  5. Konfigurieren Sie die BizTalk-Anwendung, indem Sie physische Sende- und Empfangsports erstellen.

    Wichtig

    Für Eingehende Abfrageszenarien müssen Sie immer einen unidirektionalen Empfangsport konfigurieren. Bidirektionale Empfangsports werden für eingehende Vorgänge nicht unterstützt.

  6. Starten Sie die BizTalk-Anwendung.

    Dieses Thema enthält Anweisungen zum Ausführen dieser Aufgaben.

Generieren eines Schemas

Sie müssen das Schema für den POLLINGSTMT-Vorgang generieren. Führen Sie die folgenden Aufgaben aus, während Sie das Schema mithilfe des Add-Ins Adapterdienst nutzen generieren.

Definieren von Nachrichten und Nachrichtentypen

Das zuvor generierte Schema beschreibt die "Typen", die für die Nachrichten in der Orchestrierung erforderlich sind. Eine Nachricht ist in der Regel eine Variable, deren Typ durch das entsprechende Schema definiert wird. Nachdem das Schema generiert wurde, müssen Sie es mit den Nachrichten aus der Orchestrierungsansicht des BizTalk-Projekts verknüpfen.

Für dieses Thema müssen Sie eine Nachricht erstellen, um Nachrichten von Oracle zu empfangen.

Führen Sie die folgenden Schritte aus, um Nachrichten zu erstellen und sie mit dem Schema zu verknüpfen.

  1. Fügen Sie dem BizTalk-Projekt eine Orchestrierung hinzu. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den BizTalk-Projektnamen, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neues Element. Geben Sie einen Namen für die BizTalk-Orchestrierung ein, und klicken Sie dann auf Hinzufügen.

  2. Öffnen Sie das Orchestrierungsansichtsfenster des BizTalk-Projekts, falls es noch nicht geöffnet ist. Klicken Sie auf Ansicht, zeigen Sie auf Andere Fenster, und klicken Sie dann auf Orchestrierungsansicht.

  3. Klicken Sie in der Orchestrierungsansicht mit der rechten Maustaste auf Nachrichten, und klicken Sie dann auf Neue Nachricht.

  4. Klicken Sie mit der rechten Maustaste auf die neu erstellte Nachricht, und wählen Sie dann Eigenschaftenfenster aus.

  5. Gehen Sie im Bereich Eigenschaften für Message_1 wie folgt vor:

    Option Aufgabe
    Bezeichner Geben Sie Receive ein.
    Nachrichtentyp Erweitern Sie in der Dropdownliste Schemas, und wählen Sie TablePolling.OracleDBBinding aus, wobei TablePolling der Name Ihres BizTalk-Projekts ist. OracleDBBindingSchema ist das Antwortschema, das für den POLLINGSTMT-Vorgang in der TABELLE ACCOUNTACTIVITY generiert wird.

    Wichtig Da die Abfrage ein unidirektionaler Vorgang ist, enthält das vom Adapter generierte Schema keinen Antwortknoten, sodass es nur einen Stammknoten im Schema gibt. Wenn Sie solche Schemas für einen Nachrichtentyp verwenden, müssen Sie das Schema anhand des Dateinamens des generierten Schemas identifizieren.

    Wenn Sie beispielsweise ein Schema für einen bidirektionalen Vorgang erstellen, können die Knoten in der Schemadatei mit einem Namen OracleDBBindingSchema wie "Anforderung" und "Antwort" aussehen. Wenn Sie in der Orchestrierung eine Nachricht erstellen möchten, die dem Anforderungsschema zugeordnet ist, können Sie das Schema in der Liste identifizieren, indem Sie nach suchen OracleDBBindingSchema.Request. Im Falle eines Abrufvorgangs ist es jedoch nicht einfach, das Schema zu identifizieren, dem Sie zuordnen möchten, da Schemas mit einzelnen Knoten nicht als <Schemadateiname> aufgeführt werden.<rootnodename>. Stattdessen werden solche Schemas nur nach dem Dateinamen aufgeführt. In einem solchen Fall kann das Schema nur anhand des Schemadateinamens identifiziert werden, z. B. OracleDBBindingSchema.

Einrichten der Orchestrierung

Sie müssen eine BizTalk-Orchestrierung erstellen, um BizTalk Server zum Empfangen von abrufbasierten Datenänderungsmeldungen von Oracle zu verwenden. Bei dieser Orchestrierung empfängt der Adapter die Antwort, indem er die SELECT-Anweisung ausführt, die für die Bindungseigenschaft PollingStatement angegeben ist. Die Antwortnachricht für die SELECT-Anweisung wird an einem FILE-Speicherort gespeichert. Eine typische Orchestrierung für das Abfragen von Oracle-Datenbanken enthält Folgendes:

  • Empfangen und Senden von Shapes, um Nachrichten von Oracle zu empfangen und an einen FILE-Port zu senden.

  • Ein unidirektionale Empfangsport zum Empfangen von Nachrichten aus der Oracle-Datenbank.

    Wichtig

    Für Szenarien für eingehende Abrufe müssen Sie immer einen unidirektionale Empfangsport konfigurieren. Bidirektionale Empfangsports werden für eingehende Vorgänge nicht unterstützt.

  • Ein unidirektionale Sendeport zum Senden von Abrufantworten aus der Oracle-Datenbank.

    Eine Beispielorchestrierung sieht wie folgt aus.

    Orchestrierung für eine Abfrageabfrage für Oracle

Hinzufügen von Nachrichten-Shapes

Stellen Sie sicher, dass Sie die folgenden Eigenschaften für die einzelnen Nachrichtenformen angeben. Die in der Spalte Shape aufgeführten Namen sind die Namen der Nachrichtenformen, die in der gerade erwähnten Orchestrierung angezeigt werden.

Form Shape-Typ Eigenschaften
ReceiveMessage Empfangen – Legen Sie Name auf ReceiveMessage fest.

– Legen Sie Activate auf True fest.
SaveMessage Send Name aufSaveMessage festlegen

Hinzufügen von Ports

Stellen Sie sicher, dass Sie die folgenden Eigenschaften für jeden der logischen Ports angeben. Die in der Spalte Port aufgeführten Namen sind die Namen der Ports, wie in der Orchestrierung angezeigt.

Port Eigenschaften
OracleReceivePort Bezeichner auf OracleReceivePort festlegen

– Legen Sie Type auf OracleReceivePortType fest.

– Festlegen des Kommunikationsmusters auf Unidirektionale

– Festlegen der Kommunikationsrichtung auf "Empfangen"
SaveMessagePort Bezeichner auf SaveMessagePort festlegen

– Legen Sie Type auf SaveMessagePortType fest.

– Festlegen des Kommunikationsmusters auf Unidirektionale

Kommunikationsrichtung auf Senden festlegen

Angeben von Nachrichten für Aktions-Shapes und Herstellen einer Verbindung mit Ports

In der folgenden Tabelle sind die Eigenschaften und deren Werte angegeben, die Sie festlegen sollten, um Meldungen für Aktionsformen anzugeben und die Nachrichten mit den Ports zu verknüpfen. Die in der Spalte Shape aufgeführten Namen sind die Namen der Meldungs-Shapes, die in der zuvor erwähnten Orchestrierung angezeigt werden.

Form Eigenschaften
ReceiveMessage – Festlegen, dass Nachrichtempfangen werden soll

– Legen Sie Operation auf OracleReceivePort.Polling.Request fest.
SaveMessage – Festlegen, dass Nachrichtempfangen werden soll

– Legen Sie Operation auf SaveMessagePort.Polling.Request fest.

Nachdem Sie diese Eigenschaften angegeben haben, werden die Nachrichtenformen und Ports verbunden, und Die Orchestrierung ist abgeschlossen.

Sie müssen nun die BizTalk-Lösung erstellen und in einem BizTalk Server bereitstellen. Weitere Informationen finden Sie unter Erstellen und Ausführen von Orchestrierungen.

Konfigurieren der BizTalk-Anwendung

Nachdem Sie das BizTalk-Projekt bereitgestellt haben, wird die zuvor erstellte Orchestrierung in der BizTalk Server Verwaltungskonsole im Bereich Orchestrierungen aufgeführt. Sie müssen die BizTalk Server-Verwaltungskonsole verwenden, um die Anwendung zu konfigurieren. Eine exemplarische Vorgehensweise finden Sie unter Exemplarische Vorgehensweise: Bereitstellen einer einfachen BizTalk-Anwendung.

Das Konfigurieren einer Anwendung umfasst Folgendes:

  • Auswählen eines Hosts für die Anwendung.

  • Zuordnen der Ports, die Sie in Ihrer Orchestrierung erstellt haben, zu physischen Ports in der BizTalk Server-Verwaltungskonsole. Für diese Orchestrierung müssen Sie:

    • Definieren Sie einen Speicherort auf der Festplatte und einen entsprechenden FILE-Port, an dem die BizTalk-Orchestrierung die Nachrichten von Oracle ablöscht. Diese Meldungen werden als Reaktion auf die Abruf-Anweisung ausgeführt, die Sie für den Empfangsport angeben.

    • Definieren Sie einen physischen WCF-Custom oder WCF-OracleDB unidirektionale Empfangsport. Dieser Port ruft die Oracle-Datenbank ab. Informationen zum Erstellen von Empfangsports finden Sie unter Manuelles Konfigurieren einer physischen Portbindung an den Oracle Database Adapter. Stellen Sie sicher, dass Sie die folgenden Bindungseigenschaften für den Empfangsport angeben.

      Binding-Eigenschaft Wert
      InboundOperationType Legen Sie dies auf Abruf fest.
      PolledDataAvailableStatement Legen Sie für dieses Beispiel diese Bindungseigenschaft auf Folgendes fest:

      SELECT COUNT (*) FROM ACCOUNTACTIVITY

      Dadurch wird sichergestellt, dass der Adapter die Abrufausweisung nur ausführt, wenn die ACCOUNTACTIVITY-Tabelle einige Datensätze enthält.
      PollingStatement Geben Sie für diese Bindungseigenschaft eine SELECT-Anweisung an, um alle Datensätze aus der TABELLE ACCOUNTACTIVITY abzurufen. Legen Sie für dieses Beispiel diese Bindungseigenschaft auf Folgendes fest:

      SELECT * FROM ACCOUNTACTIVITY FOR UPDATE
      PostPollStatement Geben Sie die Anweisung nach dem Abruf an, um alle Daten aus der TABELLE ACCOUNTACTIVITY in eine andere Tabelle zu verschieben. Legen Sie für dieses Beispiel diese Bindungseigenschaft auf Folgendes fest:

      BEGIN ACCOUNT_PKG.PROCESS_ACTIVITY(); END;

      Weitere Informationen zu den verschiedenen Bindungseigenschaften finden Sie unter Informationen zu den Bindungseigenschaften des Oracle Database-Adapters.

      Hinweis

      Es wird empfohlen, die Transaktionsisolationsstufe und das Transaktionstimeout zu konfigurieren, während eingehende Vorgänge mithilfe des Oracle Database-Adapters ausgeführt werden. Dazu können Sie das Dienstverhalten beim Konfigurieren des Empfangsports hinzufügen. Anweisungen zum Hinzufügen des Dienstverhaltens finden Sie unter Konfigurieren der Transaktionsisolationsstufe und des Transaktionstimeouts.

Starten der Anwendung

Sie müssen die BizTalk-Anwendung zum Abfragen der Oracle-Datenbank starten. Anweisungen zum Starten einer BizTalk-Anwendung finden Sie unter Starten einer Orchestrierung.

Stellen Sie in dieser Phase Folgendes sicher:

  • Der WCF-Custom oder WCF-OracleDB unidirektionalen Empfangsport, der Oracle mithilfe der SELECT-Anweisung abruft, die für die Eigenschaft PollingStatement-Bindung angegeben ist.

  • Der FILE-Sendeport, der Nachrichten aus der Oracle-Datenbank empfängt, wird ausgeführt.

  • Die BizTalk-Orchestrierung für den Vorgang wird ausgeführt.

Ausführen des Vorgangs

Nachdem Sie die Anwendung ausgeführt haben, finden die folgenden Aktionen in derselben Reihenfolge statt:

  • Der Adapter führt das PolledDataAvailableStatement aus, das einen positiven Wert zurückgibt, der angibt, dass der Adapter die für die PollingStatement-Bindungseigenschaft angegebene Anweisung ausführen soll.

  • Der Adapter führt die SELECT-Anweisung für die Eigenschaft PollingStatement-Bindung aus und gibt alle Zeilen in der TABELLE ACCOUNTACTIVITY zurück. Die Antwort aus der Oracle-Datenbank ähnelt der folgenden:

    <?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>  
    
  • Der Adapter führt die Anweisung nach der Abfrage aus, die alle Daten aus der TABELLE ACCOUNTACTIVITY in eine andere Tabelle verschiebt.

  • Nach dem Abrufintervall führt der Adapter polledDataAvailableStatement erneut aus. Da die ACCOUNTACTIVITY-Tabelle jetzt keine Datensätze enthält, gibt PolledDataAvailableStatement keinen positiven Wert zurück, sodass der Adapter die für die Eigenschaft PollingStatement-Bindung angegebene Anweisung nicht ausführt. Daher erhält der Adapterclient keine Abrufmeldung.

  • Der Adapterclient erhält erst dann weitere Abrufmeldungen, wenn einige Datensätze explizit in die Tabelle ACCOUNTACTIVITY eingefügt wurden. Um weitere Datensätze einzufügen, können Sie das mit den Beispielen bereitgestellte skript more_activity_data.sql ausführen. Nachdem Sie dieses Skript ausgeführt haben, wird bei der nächsten Ausführung von PolledDataAvailableStatement ein positiver Wert zurückgegeben. Daraufhin führt der Adapter die Abfrage-Anweisung aus, und adapterclients erhalten erneut eine Abrufmeldung.

Hinweis

Der Oracle Database-Adapter fragt weiterhin ab, bis Sie den Empfangsport von der BizTalk Server-Verwaltungskonsole explizit deaktivieren.

Mögliche Ausnahmen

Informationen zu den Ausnahmen, die beim Ausführen einer Abfrage für die Oracle-Datenbank mithilfe von BizTalk Server möglicherweise auftreten, finden Sie unter Ausnahmen und Fehlerbehandlung mit dem Oracle Database-Adapter.

Bewährte Methoden

Nachdem Sie das BizTalk-Projekt bereitgestellt und konfiguriert haben, können Sie Konfigurationseinstellungen in eine XML-Datei namens bindungsdatei exportieren. Nachdem Sie eine Bindungsdatei generiert haben, können Sie die Konfigurationseinstellungen aus der Datei importieren, sodass Sie nicht die Sende- und Empfangsports für dieselbe Orchestrierung erstellen müssen. Weitere Informationen zu Bindungsdateien finden Sie unter Wiederverwenden von Oracle Database Adapter-Bindungen.

Weitere Informationen

Abfragen von Oracle-Datenbank mit BizTalk Server