Persistentes Messaging mit Nachrichten verwenden, die im Cloud-Objektspeicher gespeichert sind
Das DBMS_PIPE
-Package verfügt über erweiterte Funktionalität in Autonomous Database, um persistentes Messaging zu unterstützen, bei dem Nachrichten im Cloud-Objektspeicher gespeichert werden.
- Persistentes Messaging mit DBMS_PIPE
Durch das persistente Messaging mitDBMS_PIPE
kann eine oder mehrere Datenbanksessions in derselben Region oder regionsübergreifend mit Nachrichten 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, an die 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 gespeichert ist, mit einer expliziten Pipe in einer Autonomous Database-Instanz, die sich von der Instanz unterscheidet, von der die Nachricht gesendet wurde. - Persistente Pipe entfernen
Beschreibt die Schritte zum Entfernen einer persistenten Pipe.
Übergeordnetes Thema: Nachrichten mit Singleton-Pipen cachen und Pipes für persistentes Messaging nutzen
Persistent Messaging mit DBMS_PIPE
DBMS_PIPE
kann 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ützt das Senden einer großen Anzahl von Pipe-Nachrichten.
-
Unterstützen Sie das Senden und Empfangen von Nachrichten in einer einzigen Datenbank, über mehrere Datenbanken und über Datenbanken in verschiedenen Regionen hinweg.
-
Unterstützt mehrere Pipes mit derselben Cloud-Objektspeicherort-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 benutzerdefinierten Pipe-Namen erstellt. - Öffentliche Pipe: Zugriff durch jeden Benutzer mit der Berechtigung
EXECUTE
für das PackageDBMS_PIPE
. - Private Pipe: Zugriff durch Sessions mit demselben Benutzer wie der Pipe-Ersteller.
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 (öffentlich oder privat) erstellt wird (indem der Parameter private
festgelegt wird).
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 mit minimalen Änderungen weiter ausgeführt werden. Sie können vorhandene Anwendungen, die DBMS_PIPE
verwenden, mit einem Zugangsdatenobjekt und einer Standort-URI mit einem Anmeldetrigger oder einer anderen Initialisierungsroutine konfigurieren. Nachdem Sie die Zugangsdaten und den Speicherort-URI DBMS_PIPE
festgelegt haben, sind keine weiteren Änderungen erforderlich, um persistentes Messaging zu verwenden. Bei jeder nachfolgenden Verwendung der Pipe werden die Nachrichten im Cloud-Objektspeicher statt im Datenbankspeicher gespeichert. Auf diese Weise können Sie die Speichermethode für Nachrichten mit minimalen Änderungen von "In-Memory" in "Persistenter Cloud Object Storage" ä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 regionsübergreifend gesendet und abgerufen werden.
-
Persistente Nachrichten werden garantiert entweder von genau einem Prozess geschrieben oder gelesen. Dadurch wird eine Inkonsistenz des Nachrichteninhalts aufgrund gleichzeitiger Schreib- und Lesevorgänge verhindert. Mit einer persistenten Messaging-Pipe lässt
DBMS_PIPE
zu, dass nur ein Vorgang, das Senden einer Nachricht oder einer Empfangsnachricht, zu einem bestimmten Zeitpunkt aktiv ist. Wenn ein Vorgang jedoch aufgrund eines laufenden Vorgangs nicht möglich ist, wiederholt der Prozess regelmäßig, 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 gehören dem aktuellen Benutzer, und eine private Pipe, die von einem Benutzer erstellt wird, kann nur vom selben Benutzer verwendet werden. Dies gilt sowohl für In-Memory-Pipes als auch für persistente Messaging-Pipes, in denen Nachrichten im Cloud-Objektspeicher gespeichert werden. Nachrichten senden und empfangen, die im Schema des ausführenden Benutzers ausgeführt werden
Bei Verwendung von Private Pipes, in denen Nachrichten im Cloud-Objektspeicher gespeichert werden, ist ein Zugangsdatenobjekt für die Authentifizierung mit dem Cloud-Objektspeicher erforderlich, der durch den Parameter location_uri
identifiziert wird. Der aufrufende Benutzer muss die Berechtigung EXECUTE
für das Zugangsdatenobjekt haben, das mit dem Parameter credential_name
angegeben ist, der für den Zugriff auf den Objektspeicher verwendet wird.
Um eine öffentliche Pipe verwenden zu können, muss der Benutzer, die Datenbanksession, über Ausführungsberechtigung für DBMS_PIPE
verfügen. Bei einer öffentlichen Pipe mit persistentem Messaging und dem Speichern von Nachrichten im Cloud-Objektspeicher muss der Benutzer, die Datenbanksession, über Ausführungsberechtigungen für DBMS_CLOUD
und Ausführungsberechtigungen für das Zugangsdatenobjekt verfügen (oder Sie können ein Zugangsdatenobjekt erstellen, das auf die Standort-URI zugreifen darf, die diese Nachricht enthält).
DBMS_PIPE Einschränkung
Das DBMS_PIPE
-Package unterstützt 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.
Übergeordnetes Thema: Persistentes Messaging mit Nachrichten im Cloud-Objektspeicher verwenden
Explizite persistente Pipe erstellen und eine Nachricht senden
Beschreibt die Schritte zum Erstellen einer persistenten Pipe mit einem angegebenen Pipe-Namen (Explizite Pipe).
Übergeordnetes Thema: Persistentes Messaging mit Nachrichten im Cloud-Objektspeicher verwenden
Persistente Nachricht in derselben Datenbank abrufen
Beschreibt die Schritte zum Abrufen einer persistenten Nachricht aus einer expliziten Pipe auf derselben Autonomous Database-Instanz (der Instanz, an die die Nachricht gesendet wurde).
In einer Autonomous Database-Instanz können Sie Nachrichten empfangen, die aus einer anderen Session an eine Pipe gesendet werden. Die DBMS_PIPE
-Prozeduren sind die Rechteprozeduren des Aufrufers und werden als aktuell aufgerufener Benutzer ausgeführt.
Private Pipes gehören dem aktuellen Benutzer, 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.
Übergeordnetes Thema: Persistentes Messaging mit Nachrichten im Cloud-Objektspeicher verwenden
Persistente Nachricht durch Erstellen einer Pipe in einer anderen Datenbank abrufen
Beschreibt die Schritte zum Abrufen einer persistenten Nachricht, die im Cloud-Objektspeicher gespeichert ist, mit einer expliziten Pipe auf einer Autonomous Database-Instanz, die sich von der Instanz unterscheidet, von der die Nachricht gesendet wurde.
Übergeordnetes Thema: Persistentes Messaging mit Nachrichten im Cloud-Objektspeicher verwenden
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.
Übergeordnetes Thema: Persistentes Messaging mit Nachrichten im Cloud-Objektspeicher verwenden