Unterstützung für den Empfang von abfragenbasierten datenveränderten Nachrichten in Oracle Database
DerOracle Database-Adapter ermöglicht Es Clientprogrammen, Nachrichten aus der Oracle-Datenbank zu empfangen, die sie über Änderungen an in einer Oracle-Datenbank gespeicherten Daten informieren. Der Oracle Database-Adapter unterstützt den Empfang von "Abrufbasierten" Nachrichten, bei denen der Adapter eine angegebene SELECT-Abfrage, gespeicherte Prozedur, -Funktion oder -Prozedur oder -Funktion innerhalb eines Pakets ausführt, die Daten abruft und das Ergebnis in regelmäßigen Abständen dem Client zur Verfügung stellt. Um dies zu aktivieren, macht der Oracle Database-Adapter einen POLLINGSTMT-Vorgang verfügbar. Darüber hinaus werden alle gespeicherten Prozeduren, Funktionen und Prozeduren und Funktionen in Paketen als eingehende Vorgänge für Die Abfrage verfügbar gemacht.
Der Adapter bietet zwei Möglichkeiten zum Abfragen der Oracle-Datenbank:
Verwenden von SELECT-Anweisungen. Sie können eine einfache SELECT-Anweisung angeben, um die Tabellen und Ansichten in der Oracle-Datenbank abzufragen. Der Adapter führt die SELECT-Anweisung in angegebenen Intervallen aus und gibt das Ergebnis an die Adapterclients zurück.
Verwenden gespeicherter Prozeduren, Funktionen oder Prozeduren oder Funktionen innerhalb eines Pakets. Sie können eine gespeicherte Prozedur, Funktion oder Prozedur oder Funktion in einem Paket angeben, um die Oracle-Datenbank abzufragen. Der Adapter führt die Anforderungsnachricht in angegebenen Intervallen aus und gibt das Ergebnis an die Adapterclients zurück.
Workflow für Abfragevorgänge
Ein typischer Abfragevorgang mit dem Oracle Database-Adapter umfasst Folgendes:
Die Adapterclients müssen Polling als eingehenden Vorgang in der Bindungseigenschaft InboundOperationType angeben. Der Standardwert für diese Bindungseigenschaft ist Polling.
Die Adapterclients müssen eine SELECT-Anweisung für die PolledDataAvailableStatement-Bindungseigenschaft angeben, um zu bestimmen, ob Daten für die Abfrage verfügbar sind. Wenn bei der Ausführung dieser Anweisung die erste Spalte der ersten Zeile des zurückgegebenen Resultsets einen positiven ganzzahligen Wert enthält, steht ein Datum für die Abfrage zur Verfügung. Standardmäßig ist der Wert dieser Bindungseigenschaft auf
Select 1 FROM DUAL
festgelegt, was bedeutet, dass der Adapter die Abfrage unabhängig davon fortsetzen muss, ob die abgefragte Tabelle Daten enthält oder nicht.Die Adapterclients müssen ein Abrufintervall für die PollingInterval-Bindungseigenschaft angeben, um das Intervall in Sekunden zu definieren, in dem die in der PolledDataAvailableStatement-Bindungseigenschaft angegebene Anweisung ausgeführt wird. Am Ende jedes Abfrageintervalls wird die verfügbare Anweisung für die abgerufenen Daten ausgeführt, und das Resultset wird zurückgegeben.
Die Adapterclients müssen eine SELECT-Anweisung oder eine gespeicherte Prozedur für die Eigenschaft PollingStatement-Bindung angeben.
Wenn Sie eine Tabelle oder Ansicht abfragen möchten, müssen Sie in dieser Bindungseigenschaft eine SELECT-Abfrage angeben.
Wenn Sie mithilfe einer gespeicherten Prozedur, Funktion oder Prozedur oder Funktion innerhalb eines Pakets abfragen möchten, müssen Sie die gesamte Anforderungsnachricht für den jeweiligen Vorgang in dieser Bindungseigenschaft angeben.
Die -Anweisung in der PollingStatement-Bindungseigenschaft wird nur ausgeführt, wenn Daten für die Abfrage verfügbar sind, die von der PolledDataAvailableStatement-Bindungseigenschaft in Schritt 1 bestimmt werden.
Die Adapterclients müssen eine Aktion für den Abrufvorgang in der Eigenschaft PollingAction-Bindung angeben. Die Abrufaktion für einen bestimmten Vorgang wird anhand der Metadaten bestimmt, die für den Vorgang mithilfe des Add-Ins Adapterdienst nutzen generiert wurden.
Hinweis
Wenn Sie eine Tabelle oder Sicht mithilfe einer SELECT-Anweisung in der Eigenschaft PollingStatement-Bindung abfragen, müssen Sie keinen Wert für die PollingAction-Bindungseigenschaft angeben. Der Standardwert Null wird in diesem Fall übergeben.
Die Adapterclients können die PollWhileDataFound-Bindungseigenschaft verwenden, um das Abrufintervall zu ignorieren und kontinuierlich Daten abzurufen, sofern verfügbar.
Wichtig
Wenn Sie den Wert der PollWhileDataFound-Bindungseigenschaft auf True festlegen, rufen die Adapterclients kontinuierlich Daten von Oracle ab und öffnen und schließen in einer Schleife Verbindungen mit der Oracle-Datenbank. Da die Rate, mit der Verbindungen von ODP.NET geöffnet werden, größer ist als die zu schließenden Verbindungen, werden die Verbindungen nach einiger Zeit erschöpft, und eine Ausnahme wird ausgelöst. Stellen Sie zur Umgehung sicher, dass der Wert von UseOracleConnectionPool auf True festgelegt ist und ein entsprechender Wert in der IncrPoolSize-Bindungseigenschaft erwähnt wird, um die Anzahl der Verbindungen zu steuern, die von den Adapterclients geöffnet werden können.
Die Adapterclients können eine Post-Poll-Anweisung, einen Oracle PL/SQL-Block, für die PostPollStatement-Bindungseigenschaft angeben. Die in dieser Bindungseigenschaft angegebene Anweisung wird ausgeführt, nachdem die in der Eigenschaft PollingStatement-Bindung angegebene Anweisung ausgeführt wurde.
Der Adapter umschließt die Abfrage-Anweisung und die Anweisung nach der Abfrage in einer Transaktion, und der Transaktionstimeoutwert wird als der für die PollingInterval-Bindungseigenschaft angegebene Wert festgelegt. Daher ist es wichtig, einen Timeoutwert anzugeben, der größer oder gleich der Zeit ist, die zum Verarbeiten der eingehenden Nachricht und zum Senden einer Antwort erforderlich ist. Wenn die Zeit, die das Clientprogramm benötigt, um die Nachricht zu nutzen oder die Abfrage nach der Abfrage auszuführen, mehr als der Timeoutwert beträgt, wird für die Transaktion ein Rollback ausgeführt. Wenn die benötigte Zeit kleiner als der Timeoutwert ist, committet der Adapter die Transaktion und "sleeps" für die verbleibende Zeit in der Umfrage, bevor die nächste Abfrage ausgeführt wird.
Der Adapter unterdrückt alle leeren Abfrageantworten, die aus der Oracle-Datenbank stammen.
Unterschiede zwischen Abruf und Benachrichtigung
Obwohl Abfragen und Benachrichtigungen sowohl eingehende Vorgänge sind als auch die Adapterclients über die Datenänderungen in der Oracle-Datenbank informieren, veranschaulicht die folgende Tabelle einige Unterschiede zwischen den beiden. Die folgenden Unterschiede helfen Ihnen bei der Entscheidung für einen Vorgang je nach Ihren Anforderungen:
Abruf | Benachrichtigung |
---|---|
Die Abfrage wird für alle Oracle-Datenbankversionen unterstützt, die vom Oracle Database-Adapter unterstützt werden. | Benachrichtigungen werden nur für Oracle-Datenbankversionen 10.2 und höher unterstützt. |
Sie können entweder das Abrufintervall so konfigurieren, dass die daten, die für die Abfrage verfügbar sind, in regelmäßigen Abständen oder sofort so konfiguriert werden, dass die Daten verfügbar sind. Tipp: Die Abfrage kann Ihnen einen besseren Durchsatz in Szenarien bieten, in denen die Datenänderungen kontinuierlich erfolgen, und Sie möchten nicht über jede Änderung benachrichtigt werden, wenn sie geschieht. Stattdessen geben Sie ein Abfrageintervall an, nach dem Sie über alle Änderungen benachrichtigt werden möchten, die seit der letzten Änderungsbenachrichtigung vorgenommen wurden. | Die Datenänderungsbenachrichtigung erfolgt immer sofort. |
Die Abfrage wird vom Adapter initiiert. Der Adapter führt eine SQL-Anweisung aus, um zu überprüfen, ob Daten für die Abfrage verfügbar sind, und initiiert dann die Abfrage, indem die Abfrage-Anweisung ausgeführt wird, wenn einige Daten für die Abfrage verfügbar sind. | Die Benachrichtigung wird von der Oracle-Datenbank initiiert. Die vom Adapter ausgegebene Benachrichtigungsanweisung weist die Datenbank lediglich an, eine Benachrichtigung zu initiieren, falls sich das Resultset der Anweisung ändert. Die Benachrichtigung ist ein Feature der Oracle-Datenbank. |
Sie können die Abfrage-Anweisung verwenden, um Daten in der Oracle-Datenbank zu lesen oder zu aktualisieren. | Sie können die Benachrichtigungsanweisung verwenden, um nur Daten in einer Oracle-Datenbank zu lesen. |
Die Abfrage informiert Sie über die tatsächlichen Daten, die sich geändert haben. | Die Benachrichtigung informiert nur über den Typ der Änderung in den Daten, z. B. Einfügen, Aktualisieren und Löschen. |
Weitere Informationen:
Wie der Adapter den Empfang von abrufbasierten Nachrichten aus der Oracle-Datenbank unterstützt, finden Sie unter Empfangen von abrufbasierten datenveränderten Nachrichten.
Empfangen von abrufbasierten Nachrichten aus der Oracle-Datenbank mithilfe von BizTalk Server finden Sie unter Aufrufen von Funktionen und Prozeduren in Oracle-Datenbank mithilfe von Biztalk Server.
Empfangen von abrufbasierten Nachrichten von der Oracle-Datenbank mithilfe des WCF-Dienstmodells finden Sie unter Empfangen von abrufbasierten datenveränderten Nachrichten von SQL Server mithilfe des WCF-Kanalmodells.
Empfangen von abrufbasierten Nachrichten von der Oracle-Datenbank mithilfe des WCF-Kanalmodells finden Sie unter Empfangen von abrufbasierten datenveränderten Nachrichten von SQL Server mithilfe des WCF-Kanalmodells.
Nachrichtenstruktur und SOAP-Aktionen zum Ausführen einer Abfrage finden Sie unter Nachrichtenschemas für die Abrufvorgänge.