Persistentes Messaging mit Nachrichten verwenden, die im Cloud-Objektspeicher gespeichert sind
Das Package DBMS_PIPE
verfügt über erweiterte Funktionen in Autonomous Database zur Unterstützung von persistentem Messaging, bei dem Nachrichten im Cloud-Objektspeicher gespeichert werden.
- Informationen zum persistenten Messaging mit DBMS_PIPE
Das persistente Messaging mitDBMS_PIPE
ermöglicht es einer oder mehreren Datenbanksessions, in derselben Region oder regionsübergreifend mit Nachrichten zu kommunizieren, die im Cloud-Objektspeicher gespeichert sind. - Explizite persistente Pipe erstellen und Nachricht senden
Beschreibt die Schritte zum Erstellen einer persistenten Pipe mit einem angegebenen Pipe-Namen (explizite Pipe). - Persistente Nachricht in derselben Datenbank abrufen
Beschreibt die Schritte zum Abrufen einer persistenten Nachricht aus einer expliziten Pipe in derselben Autonomous Database-Instanz (der Instanz, in der die Nachricht gesendet wurde). - Persistente Nachricht durch Erstellen einer Pipe in einer anderen Datenbank abrufen
Beschreibt die Schritte zum Abrufen einer persistenten Nachricht, die im Cloud-Objektspeicher mit einer expliziten Pipe in einer Autonomous Database-Instanz gespeichert ist und sich von der Instanz unterscheidet, die die Nachricht gesendet hat. - Persistente Pipe entfernen
Beschreibt die Schritte zum Entfernen einer persistenten Pipe.
Übergeordnetes Thema: Nachrichten mit Singleton-Pipes cachen und Pipes für persistentes Messaging verwenden
Informationen zum persistenten Messaging mit DBMS_PIPE
DBMS_PIPE
können eine oder mehrere Datenbanksessions in derselben Region oder regionsübergreifend mit Nachrichten kommunizieren, die im Cloud-Objektspeicher gespeichert sind.
Persistente Nachrichten in DBMS_PIPE
:
-
Sie können sehr große Nachrichten senden und abrufen.
-
Unterstützung für das Senden einer großen Anzahl von Pipe-Nachrichten.
-
Unterstützt das Senden und Empfangen von Nachrichten innerhalb einer einzelnen Datenbank, über mehrere Datenbanken und über Datenbanken in verschiedenen Regionen hinweg.
-
Unterstützen Sie mehrere Pipes mit derselben Cloud-Objektspeicher-URI.
Persistente Messaging Pipes können in einem der unterstützten DBMS_PIPE
-Typen erstellt werden:
- Implizite Pipe: Wird automatisch erstellt, wenn eine Nachricht mit einem unbekannten Pipe-Namen mit der Funktion
DBMS_PIPE.SEND_MESSAGE
gesendet wird. - Explizite Pipe: Wird mit der Funktion
DBMS_PIPE.CREATE_PIPE
mit einem vom Benutzer angegebenen Pipe-Namen erstellt. - Öffentliche Pipe: Jeder Benutzer mit der Berechtigung
EXECUTE
für das PackageDBMS_PIPE
kann darauf zugreifen. - Private Pipe: Zugriff durch Sessions mit demselben Benutzer wie der Pipe-Ersteller möglich.
Oracle empfiehlt, eine explizite Pipe zu erstellen, bevor Sie Nachrichten mit persistentem Messaging senden oder empfangen. Durch das Erstellen einer expliziten Pipe mit
DBMS_PIPE.CREATE_PIPE
wird sichergestellt, dass die Pipe mit den gewünschten Zugriffsberechtigungen erstellt wird, entweder öffentlich oder privat (durch Festlegen des Parameters private
).
Im Folgenden wird der allgemeine Workflow für DBMS_PIPE
mit persistentem Messaging dargestellt:

Beschreibung der Abbildung database-pipe-persistent-messaging.eps
Vorhandene Anwendungen, die DBMS_PIPE
verwenden, können weiterhin mit minimalen Änderungen ausgeführt werden. Sie können vorhandene Anwendungen konfigurieren, die DBMS_PIPE
mit einem Zugangsdatenobjekt und einer Speicherort-URI verwenden, indem Sie einen Anmeldetrigger verwenden oder eine andere Initialisierungsroutine verwenden. Nachdem Sie die Zugangsdaten und die Speicherort-URI DBMS_PIPE
festgelegt haben, sind keine weiteren Änderungen erforderlich, um persistentes Messaging zu verwenden. Bei der nachfolgenden Verwendung der Pipe werden die Nachrichten im Cloud-Objektspeicher anstatt im Datenbankspeicher gespeichert. Auf diese Weise können Sie die Speichermethode für Nachrichten mit minimalen Änderungen von In-Memory in persistenten Cloud-Objektspeicher ändern.
Persistent Messaging - Überblick und Features
Features von DBMS_PIPE
mit persistentem Messaging:
-
Nachrichten können über mehrere Autonomous Database-Instanzen in derselben Region oder über Regionen hinweg gesendet und abgerufen werden.
-
Persistente Nachrichten werden garantiert entweder von genau einem Prozess geschrieben oder gelesen. Dadurch wird eine Inkonsistenz des Nachrichteninhalts durch gleichzeitige Schreib- und Lesevorgänge verhindert. Mit einer persistenten Messaging-Pipe lässt
DBMS_PIPE
nur einen Vorgang zu, bei dem eine Nachricht oder eine empfangende Nachricht zu einem bestimmten Zeitpunkt aktiv sein kann. Wenn ein Vorgang jedoch aufgrund eines laufenden Vorgangs nicht möglich ist, wiederholt sich der Prozess in regelmäßigen Abständen, bis der Werttimeout
erreicht ist. -
DBMS_PIPE
verwendetDBMS_CLOUD
, um auf den Cloud-Objektspeicher zuzugreifen. Nachrichten können in einem der unterstützten Cloud-Objektspeicher gespeichert werden. Weitere Informationen finden Sie unter DBMS_CLOUD URI-Formate. DBMS_PIPE
verwendetDBMS_CLOUD
für den Zugriff auf den Cloud-Objektspeicher, und alle unterstützten Zugangsdatentypen sind verfügbar:DBMS_CLOUD.CREATE_CREDENTIAL
: Weitere Informationen finden Sie unter Prozedur CREATE_CREDENTIAL.
DBMS_PIPE Berechtigungen Autorisierung und Sicherheit
Die DBMS_PIPE
-Prozeduren werden mit den Rechten des ausführenden Benutzers ausgeführt. Private Pipes sind Eigentum des aktuellen Benutzers. Eine private Pipe, die von einem Benutzer erstellt wird, kann nur von demselben Benutzer verwendet werden. Dies gilt sowohl für speicherresidente Pipes als auch für persistente Messaging Pipes, in denen Nachrichten im Cloud-Objektspeicher gespeichert werden. Das Senden und Empfangen von Nachrichten wird im Schema des ausführenden Benutzers ausgeführt.
Mit privaten Pipes, in denen Nachrichten im Cloud-Objektspeicher gespeichert werden, ist ein Zugangsdatenobjekt für die Authentifizierung mit dem Cloud-Objektspeicher erforderlich, der mit dem Parameter location_uri
identifiziert wird. Der aufrufende Benutzer muss über die Berechtigung EXECUTE
für das Zugangsdatenobjekt verfügen, das mit dem Parameter credential_name
angegeben wird, mit dem auf den Objektspeicher zugegriffen wird.
Um eine öffentliche Pipe verwenden zu können, muss der Benutzer, die Datenbanksession, über die Ausführungsberechtigung für DBMS_PIPE
verfügen. Bei einer öffentlichen Pipe, die persistentes Messaging verwendet und Nachrichten im Cloud-Objektspeicher speichert, muss der Benutzer, die Datenbanksession, über die Ausführungsberechtigung für DBMS_CLOUD
und die Ausführungsberechtigung für das Zugangsdatenobjekt verfügen (oder Sie können ein Zugangsdatenobjekt erstellen, das auf die Speicherort-URI zugreifen kann, in der die Nachricht enthalten ist).
DBMS_PIPE Einschränkung
Das Package DBMS_PIPE
unterstützt nicht das Senden von Nachrichten zwischen Datenbanken, die unterschiedliche Zeichensätze verwenden. Beispiel: Wenn Sie eine Autonomous Database-Instanz verwenden, die AL32UTF8 verwendet, und eine andere Instanz, die WE8MSWIN1252 verwendet, können Sie keine Nachrichten mit DBMS_PIPE
zwischen diesen beiden Datenbanken senden. In diesem Fall löst das System den Fehler ORA-12704
aus, wenn Sie versuchen, Nachrichten mit DBMS_PIPE
zwischen diesen beiden Datenbanken zu senden.
Weitere Informationen finden Sie unter Zeichensatz für Autonomous Database auswählen.
Explizite persistente Pipe erstellen und Nachricht senden
Beschreibt die Schritte zum Erstellen einer persistenten Pipe mit einem angegebenen Pipe-Namen (Explicit Pipe).
Persistente Nachricht in derselben Datenbank abrufen
Beschreibt die Schritte zum Abrufen einer persistenten Nachricht aus einer expliziten Pipe in derselben Autonomous Database-Instanz (der Instanz, in der die Nachricht gesendet wurde).
In einer Autonomous Database-Instanz können Sie Nachrichten empfangen, die von einer anderen Session an eine Pipe gesendet wurden. Die DBMS_PIPE
-Prozeduren sind Prozeduren für die Rechte des ausführenden Benutzers und werden als der aktuell aufgerufene Benutzer ausgeführt.
Private Pipes sind Eigentum des aktuellen Benutzers, der die Pipe erstellt. Private Pipes können nur von demselben Benutzer aufgerufen werden, der die Pipe erstellt hat. Dies gilt für Pipes, die In-Memory-Nachrichten verwenden, und für Pipes, die persistentes Messaging mit Nachrichten verwenden, die im Cloud-Objektspeicher gespeichert sind.
Öffentliche Pipes können von jeder Datenbanksession mit Ausführungsberechtigung für DBMS_PIPE
aufgerufen werden. Dies gilt für Pipes, die In-Memory-Nachrichten verwenden, und für Pipes, die persistentes Messaging mit Nachrichten verwenden, die im Cloud-Objektspeicher gespeichert sind.
Weitere Informationen finden Sie unter Prozedur SET_CREDENTIAL_NAME und Prozedur SET_LOCATION_URI.
Weitere Informationen finden Sie unter Funktion RECEIVE_MESSAGE.
Persistente Nachrichten durch Erstellen einer Pipe in einer anderen Datenbank abrufen
Beschreibt die Schritte zum Abrufen einer persistenten Nachricht, die im Cloud-Objektspeicher mit einer expliziten Pipe in einer Autonomous Database-Instanz gespeichert ist und sich von der Instanz unterscheidet, die die Nachricht gesendet hat.
Persistente Pipe entfernen
Beschreibt die Schritte zum Entfernen einer persistenten Pipe.
Persistente Pipes senden und empfangen Nachrichten, indem sie Nachrichten im Cloud-Objektspeicher speichern. Verwenden Sie DBMS_PIPE.REMOVE_PIPE
, um eine persistente Pipe in einer Autonomous Database-Instanz zu entfernen.