Externe Prozeduren als SQL-Funktionen aufrufen
Zeigt die Schritte zum Aufrufen externer Prozeduren mit PL/SQL in der Datenbank an.
- Überblick über externe Prozeduren
Externe Prozeduren sind Funktionen, die in einer Sprache der dritten Generation geschrieben und aus PL/SQL oder SQL aufgerufen werden können, als wären sie eine PL/SQL-Routine oder -Funktion. - Externe Prozeduren in Autonomous Database verwenden
Sie können externe Prozeduren in Autonomous Database mit benutzerdefinierten Funktionen aufrufen und verwenden. - C-Prozedur definieren
Definieren Sie die C-Prozedur mit einem dieser Prototypen. - Shared-Library-Datei (.so) erstellen
Erstellen Sie eine Shared-Object-(.so
-Datei-)Library. Die Shared Object Library enthält die C-Prozedur (externe Prozedur), die im vorherigen Schritt definiert wurde. - OCI Marketplace-EXTPROC-Stackanwendung abrufen
Zeigt die Schritte zum Abrufen der OCI MarketplaceEXTPROC
Stack-Anwendung. - EXTPROC Stack-Anwendung starten
Starten Sie dieEXTPROC
Stack-Anwendung auf der Seite "EXTPROC-Anwendungsdetails". - Stack für EXTPROC-Agent-Anwendung erstellen
Zeigt die Schritte zum Erstellen des Stacks für die InstanzEXTPROC
an. - Wallet hochladen, um eine sichere Verbindung zur EXTPROC-Agent-Instanz zu erstellen
Ein selbstsigniertes Wallet wird beim Erstellen der Agent-AnwendungEXTPROC
erstellt. Mit diesem Wallet können Sie auf die Agent-InstanzExtrpoc
zugreifen. - Schritte zum Aufrufen einer externen Prozedur als SQL-Funktion
Zeigt die Schritte zum Aufrufen einer externen Prozedur als SQL-Funktion an.
Übergeordnetes Thema: Benutzerdefinierte Funktionen aufrufen
Übersicht über externe Prozeduren
Externe Prozeduren sind Funktionen, die in einer Sprache der dritten Generation geschrieben und aus PL/SQL oder SQL aufgerufen werden können, als wären sie eine PL/SQL-Routine oder -Funktion.
Externe Verfahren fördern die Wiederverwendbarkeit, Effizienz und Modularität. Vorhandene Dynamic Link Librarys (DLLs), die in anderen Sprachen geschrieben sind, können aus PL/SQL-Programmen aufgerufen werden. Die DLLs werden nur bei Bedarf geladen und können verbessert werden, ohne dass sich dies auf die aufrufenden Programme auswirkt.
Die Verwendung externer Prozeduren verbessert auch die Performance, da Sprachen der dritten Generation bestimmte Aufgaben effizienter ausführen als PL/SQL, das besser für die SQL-Transaktionsverarbeitung geeignet ist.
Externe Verfahren sind nützlich, wenn:
-
Lösung von wissenschaftlichen und technischen Problemen
-
Daten analysieren
-
Steuerung von Echtzeitgeräten und -prozessen
Weitere Informationen finden Sie unter Was ist eine externe Prozedur?.
Übergeordnetes Thema: Externe Prozeduren als SQL-Funktionen aufrufen
Externe Prozeduren in Autonomous Database verwenden
Sie können externe Prozeduren in Autonomous Database mit benutzerdefinierten Funktionen aufrufen und verwenden.
Sie installieren keine externen Prozeduren auf einer Autonomous Database-Instanz. Um eine externe Prozedur zu verwenden, wird die Prozedur remote auf einer VM gehostet, die in einem virtuellen Cloud-Netzwerk (VCN) von Oracle Cloud Infrastructure ausgeführt wird.
Externe Prozeduren werden nur unterstützt, wenn sich Autonomous Database auf einem privaten Endpunkt befindet. Die Agent-Instanz EXTPROC
wird in einem privaten Subnetz gehostet, und Autonomous Database greift über einen Reverse Connection-Endpunkt (RCE) auf den EXTPROC
-Agent zu.
Autonomous Database unterstützt nur externe C-Prozeduren.
Externe Prozeduren werden wie folgt bereitgestellt:
-
Ein von Oracle bereitgestelltes Containerimage mit einem
EXTPROC
-Agent, der als Teil des Oracle Cloud Infrastructure-(OCI-)Marketplace-Stacks installiert und konfiguriert ist.Die Agent-Instanz
EXTPROC
wird remote auf einer VM gehostet, die in einem virtuellen Cloud-Netzwerk (VCN) von Oracle Cloud Infrastructure ausgeführt wird. Die sichere Kommunikation zwischen Autonomous Database und der Agent-InstanzEXTPROC
wird sichergestellt, indem Regeln für die Netzwerksicherheitsgruppe (NSG) festgelegt werden, sodass der Traffic von Ihrer Autonomous Database-Instanz, die auf einem privaten Endpunkt ausgeführt wird, zur Agent-InstanzEXTPROC
zulässig ist.Das Agent-Image
EXTPROC
ist für das Hosten und Ausführen externer Prozeduren auf Port 16000 vorkonfiguriert. -
PL/SQL-Prozeduren zum Erstellen einer Library sowie zum Registrieren und Aufrufen externer Funktionen und Prozeduren.
Weitere Informationen finden Sie unter DBMS_CLOUD_FUNCTION Package.
Führen Sie die folgenden Schritte aus, um eine externe Prozedur in Autonomous Database aufzurufen:
-
Legen Sie die C-Prozedur fest. Siehe Prozedur C definieren.
-
Erstellen Sie eine Shared Object-(
.so
-Datei-)Library. Siehe Shared Library-Datei (.so) erstellen. -
Starten Sie die Autonomous Database-Stackanwendung
EXTPROC
. Siehe OCI Marketplace EXTPROC Stack-Anwendung abrufen. -
Stellen Sie den Oracle Autonomous Database-Agent
EXTPROC
bereit, und konfigurieren Sie ihn. Weitere Informationen finden Sie unter Stack für EXTPROC Agent-Anwendung erstellen. -
Konfigurieren Sie Autonomous Database so, dass Sie eine Verbindung zur
EXTPROC
-Agent-Instanz herstellen. Weitere Informationen finden Sie unter Wallet hochladen, um eine sichere Verbindung zur EXTPROC-Agent-Instanz zu erstellen. -
Erstellen Sie eine Remotebibliothek mit
DBMS_CLOUD_FUNCTION.CREATE_CATALOG
. Weitere Informationen finden Sie unter Schritte zum Aufrufen einer externen Prozedur als SQL-Funktion. -
Verwenden Sie die benutzerdefinierte Funktion, die Sie im vorherigen Schritt erstellt haben. Weitere Informationen finden Sie unter Schritte zum Aufrufen einer externen Prozedur als SQL-Funktion.
Übergeordnetes Thema: Externe Prozeduren als SQL-Funktionen aufrufen
C-Prozedur definieren
Definieren Sie das C-Verfahren mit einem dieser Prototypen.
-
Kernighan & Ritchie Stil Prototypen. Beispiele:
void UpdateSalary(x) float x; ...
-
ISO/ANSI-Prototypen, die keine numerischen Datentypen sind, die kleiner als die volle Breite sind (wie
float
,short
,char
). Beispiele:void UpdateSalary(double x) ...
-
Andere Datentypen, die unter Standardargumentpromotions die Größe nicht ändern.
Dieses Beispiel ändert die Größe unter Standardargumentpromotions:
void UpdateSalary(float x) ...
Übergeordnetes Thema: Externe Prozeduren als SQL-Funktionen aufrufen
Shared-Library-Datei (.so) erstellen
Erstellen Sie eine Shared Object-(.so
-Datei-)Library. Die Shared Object Library enthält die C-Prozedur (externe Prozedur), die im vorherigen Schritt definiert wurde.
Sie generieren eine Shared Object Library mit dem folgenden Befehl:
gcc -I/u01/app/oracle/extproc_libs/ -shared -fPIC -o extproc.so UpdateSalary.c
Dadurch wird die Shared Object-(.so
-)Bibliothek extproc.so
erstellt. Die Prozedur UpdateSalary
, die im vorherigen Schritt definiert wurde, ist in der extproc.so
-Bibliothek enthalten. Die gemeinsam verwendeten Objektbibliotheken (.so
) werden zur Laufzeit dynamisch geladen.
Übergeordnetes Thema: Externe Prozeduren als SQL-Funktionen aufrufen
Holen Sie sich die OCI Marketplace EXTPROC Stack-Anwendung
Zeigt die Schritte zum Abrufen der OCI Marketplace-Stackanwendung EXTPROC
an.
Übergeordnetes Thema: Externe Prozeduren als SQL-Funktionen aufrufen
EXTPROC Stack-Anwendung starten
Starten Sie die EXTPROC
-Stackanwendung auf der Seite "EXTPROC-Anwendungsdetails".
Daraufhin wird die Seite Stack erstellen angezeigt, auf der Sie einen Stack für den EXTPROC
-Agent erstellen können.
Übergeordnetes Thema: Externe Prozeduren als SQL-Funktionen aufrufen
Stack für EXTPROC Agent-Anwendung erstellen
Zeigt die Schritte zum Erstellen des Stacks für die Instanz EXTPROC
an.
Übergeordnetes Thema: Externe Prozeduren als SQL-Funktionen aufrufen
Wallet hochladen, um eine sichere Verbindung zur EXTPROC-Agent-Instanz zu erstellen
Ein selbstsigniertes Wallet wird beim Erstellen der Agent-Anwendung EXTPROC
erstellt. Mit diesem Wallet können Sie auf die Agent-Instanz Extrpoc
zugreifen.
EXTPROC
auszuführen, verbinden sich die Autonomous Database- und der Agent EXTPROC
mit Mutual Transport Layer Security (mTLS). Mit Mutual Transport Layer Security (mTLS) stellen Clients Verbindungen über eine TCPS-(Secure TCP-)Datenbankverbindung mit dem Standard TLS 1.2 und einem vertrauenswürdigen Client-Certificate-Authority(CA-)Zertifikat her. Weitere Informationen finden Sie unter Verbindungen zu Autonomous Database-Instanzen herstellen.
Sie können auch ein öffentliches Zertifikat erhalten und verwenden, das von einer Certificate Authority (CA) ausgestellt wurde.
Als Voraussetzung müssen Sie das Wallet aus dem Verzeichnis /u01/app/oracle/extproc_wallet
auf der VM, auf der EXTPROC
ausgeführt wird, in Object Storage exportieren.
Führen Sie die folgenden Schritte aus, um das Wallet in Autonomous Database hochzuladen:
Übergeordnetes Thema: Externe Prozeduren als SQL-Funktionen aufrufen
Externe Prozeduren als SQL-Funktion aufrufen - Schritte
Zeigt die Schritte zum Aufrufen einer externen Prozedur als SQL-Funktion an.
Nachdem Sie die OCI Marketplace-Stackanwendung EXTPROC
gestartet und für die Ausführung externer Prozeduren konfiguriert haben, erstellen Sie eine Library mit SQL-Wrapper-Funktionen, die ihre jeweiligen externen Prozeduren referenzieren und aufrufen.
Als Voraussetzung müssen die Librarys auf der Ausnahmeliste in das Verzeichnis /u01/app/oracle/extproc_libs
auf der VM EXTPROC
kopiert werden.
Übergeordnetes Thema: Externe Prozeduren als SQL-Funktionen aufrufen