Externe Prozeduren als SQL-Funktionen aufrufen
Zeigt die Schritte zum Aufrufen externer Prozeduren mit PL/SQL in der Datenbank an.
- Externe Prozeduren - Überblick
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 das C-Prozedur mit einem dieser Prototypen. - Shared Library-Datei (.so) erstellen
Erstellen Sie eine Shared Object-Library (.so
-Datei). Die Shared Object Library enthält die C-Prozedur (externe Prozedur), die im vorherigen Schritt definiert wurde. - OCI Marketplace EXTPROC Stack Application herunterladen
Zeigt die Schritte zum Abrufen der OCI Marketplace-StackanwendungEXTPROC
an. - EXTPROC-Stackanwendung starten
Starten Sie die StackanwendungEXTPROC
auf der Seite "EXTPROC-Anwendungsdetails". - Stack für EXTPROC-Agent-Anwendung erstellen
Zeigt die Schritte zum Erstellen eines Stacks für die InstanzEXTPROC
an. - Wallet hochladen, um eine sichere Verbindung zur EXTPROC-Agent-Instanz zu erstellen
Im Rahmen der Erstellung der Agent-AnwendungEXTPROC
wird ein selbstsigniertes Wallet 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
Externe Untersuchungen - Übersicht
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 Wiederverwendbarkeit, Effizienz und Modularität. Vorhandene in anderen Sprachen geschriebene Dynamic Link Librarys (DLLs) können aus PL/SQL-Programmen aufgerufen werden. Die DLLs werden nur bei Bedarf geladen und können verbessert werden, ohne die aufrufenden Programme zu beeinträchtigen.
Die Verwendung externer Prozeduren verbessert auch die Performance, da Sprachen der dritten Generation bestimmte Aufgaben effizienter ausführen als PL/SQL, was besser für die SQL-Transaktionsverarbeitung geeignet ist.
Externe Prozeduren sind nützlich, wenn:
-
Lösung wissenschaftlicher und technischer Probleme
-
Daten werden analysiert
-
Steuerung von Geräten und Prozessen in Echtzeit
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 Ihre Autonomous Database auf einem privaten Endpunkt befindet. Die Agent-Instanz EXTPROC
wird in einem privaten Subnetz gehostet, und die Autonomous Database greift über einen Reverse Connection Endpoint (RCE) auf den Agent EXTPROC
zu.
Autonomous Database unterstützt nur externe C-Prozeduren.
Externe Prozeduren werden wie folgt bereitgestellt:
-
Ein von Oracle bereitgestelltes Containerimage mit dem
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 Ihrer Autonomous Database- und der Agent-InstanzEXTPROC
wird sichergestellt, indem Sie Network Security Group-(NSG-)Regeln so festlegen, dass der Traffic von der Autonomous Database-Instanz, die auf einem privaten Endpunkt ausgeführt wird, zur Agent-InstanzEXTPROC
zulässig ist.Das
EXTPROC
-Agent-Image ist für den Host vorkonfiguriert und führt externe Prozeduren auf Port 16000 aus. -
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:
-
Definieren Sie das C-Verfahren. Siehe C-Prozedur definieren.
-
Erstellen Sie eine Shared Object-(
.so
-)Library. Siehe Shared Library-Datei (.so) erstellen. -
Starten Sie die Autonomous Database-Stackanwendung
EXTPROC
. Siehe OCI Marketplace EXTPROC Stack Application herunterladen. -
Stellen Sie den Oracle Autonomous Database
EXTPROC
-Agent bereit, und konfigurieren Sie ihn. Weitere Informationen finden Sie unter Stack für EXTPROC Agent-Anwendung erstellen. -
Konfigurieren Sie Autonomous Database, um eine Verbindung zur Agent-Instanz
EXTPROC
herzustellen. Weitere Informationen finden Sie unter Wallet hochladen, um eine sichere Verbindung zur EXTPROC Agent-Instanz zu erstellen. -
Erstellen Sie eine Remote-Library 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 die C-Prozedur mit einem dieser Prototypen.
-
Kernighan & Ritchie Prototypen. Beispiel:
void UpdateSalary(x) float x; ...
-
ISO/ANSI-Prototypen mit Ausnahme numerischer Datentypen, die kleiner als die volle Breite sind (z.B.
float
,short
,char
). Beispiel:void UpdateSalary(double x) ...
-
Andere Datentypen, die nicht die Größe unter Standardargumentpromotions ändern.
In diesem Beispiel wird die Größe unter Standardargumentpromotions geändert:
void UpdateSalary(float x) ...
Übergeordnetes Thema: Externe Prozeduren als SQL-Funktionen aufrufen
Shared Library-Datei (.so) erstellen
Erstellen Sie eine Shared Object-(.so
-)Library. Die Shared Object Library enthält die C-Prozedur (externe Prozedur), die im vorherigen Schritt definiert wurde.
Mit dem folgenden Befehl generieren Sie eine Shared Object Library:
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 im vorherigen Schritt definierte Prozedur UpdateSalary
ist in der extproc.so
-Bibliothek enthalten. Die Shared Object-(.so
-)Librarys werden zur Laufzeit dynamisch geladen.
Übergeordnetes Thema: Externe Prozeduren als SQL-Funktionen aufrufen
OCI Marketplace EXTPROC Stack-Anwendung herunterladen
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 Stackanwendung EXTPROC
auf der Seite "EXTPROC-Anwendungsdetails".
Dadurch gelangen Sie zur Seite Stack erstellen, 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
Im Rahmen der Erstellung der Agent-Anwendung EXTPROC
wird ein selbstsigniertes Wallet 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 beziehen 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 zur Ausführung externer Prozeduren konfiguriert haben, erstellen Sie eine Bibliothek 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