Webservices aus autonomer KI-Datenbank aufrufen
Beschreibt Optionen zum Aufrufen von Webservices aus einer autonomen KI-Datenbank.
Es gibt eine Reihe von Optionen zum Aufrufen von Webservices aus einer autonomen KI-Datenbank, darunter die folgenden:
-
REST-APIs
DBMS_CLOUDverwenden: Die FunktionDBMS_CLOUD.SEND_REQUESTstartet eine HTTP-Anforderung, ruft die Antwort ab und beendet die Antwort. Diese Funktion bietet einen Workflow zum Senden einer Cloud-REST-API-Anforderung mit Argumenten. Die Funktion gibt einen Antwortcode und eine Payload zurück. Weitere Informationen finden Sie unter SEND_REQUEST Funktion und Prozedur. -
Oracle APEX verwenden: Sie können mit SOAP- und RESTful-Webservices von APEX in Ihrer autonomen KI-Datenbankinstanz interagieren. Weitere Informationen finden Sie unter Webservices mit Oracle APEX verwenden.
-
Verwenden Sie
UTL_HTTP, um eine Anforderung an eine öffentliche Site weiterzuleiten: Weitere Informationen finden Sie unter HTTP-Anforderung an einen öffentlichen Host weiterleiten. -
Verwenden Sie
UTL_HTTP, um eine Anforderung an eine private Site weiterzuleiten: Weitere Informationen finden Sie unter HTTP-Anforderung an einen privaten Host weiterleiten.Wenn sich Ihre autonome AI-Datenbankinstanz auf einem privaten Endpunkt befindet, können Sie ein vom Kunden verwaltetes Wallet mit Prozeduren in
UTL_HTTP,DBMS_LDAP,UTL_SMTPoderUTL_TCPverwenden. Weitere Informationen finden Sie unter Externe Anrufe mit einem vom Kunden verwalteten Wallet tätigen.
Informationen zu Einschränkungen für UTL_HTTP für autonome KI-Datenbank finden Sie unter PL/SQL-Packagehinweise für autonome KI-Datenbank.
Themen
- HTTP-Anforderung an einen öffentlichen Host weiterleiten
Gibt Details zur Verwendung vonUTL_HTTPan, um eine HTTP-Anforderung auf einem öffentlichen Host weiterzuleiten. - HTTP-Anforderung an privaten Host weiterleiten
Beschreibt die Schritte zum Übermitteln einer HTTP-Anforderung mitUTL_HTTPauf einem privaten Host. - HTTP-Anforderung mit einem Proxy an private Site weiterleiten
Wenn sich Ihre autonome AI-Datenbankinstanz auf einem privaten Endpunkt befindet, können Sie einen Proxy verwenden, um HTTP-Anforderungen mitUTL_HTTPweiterzuleiten. - HTTP-Authentifizierung mit Zugangsdatenobjekten festlegen
Beschreibt, wie Sie Zugangsdatenobjekte an die ProzedurUTL_HTTP.SET_CREDENTIALübergeben. - Hinweise zum Weiterleiten von HTTP-Anforderungen mit Oracle APEX oder Database Actions
Wenn Sie mit Oracle APEX SQL Commands oder dem SQL-Arbeitsblatt von Database Actions mehrere sequenzielle SQL-Befehle ausführen, können die Befehle in verschiedenen Datenbanksessions ausgeführt werden, in denen der Status einer vorherigen Anweisung nicht gespeichert wird. Dieses Verhalten unterscheidet sich von Desktop-SQL-Clients wie SQL*Plus und SQL Developer, die eine dauerhafte Verbindung zur Datenbank aufrechterhalten.
Übergeordnetes Thema: Aufgaben
HTTP-Anforderung an einen öffentlichen Host weiterleiten
Enthält Details zur Verwendung von UTL_HTTP zum Weiterleiten einer HTTP-Anforderung auf einem öffentlichen Host.
Beispiel: Um eine HTTP-Anforderung für einen öffentlichen Host www.example.com weiterzuleiten, erstellen Sie eine Access Control-Liste für den Host:
BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => 'www.example.com',
ace => xs$ace_type( privilege_list => xs$name_list('http'),
principal_name => 'ADMIN',
principal_type => xs_acl.ptype_db));
END;Dann leiten Sie die HTTP-Anforderung weiter:
SELECT UTL_HTTP.REQUEST(url => 'https://www.example.com/') FROM dual;Wenn sich die Instanz der autonomen KI-Datenbank auf einem privaten Endpunkt befindet und die
UTL_HTTP-Aufrufe zu öffentlichen Hosts den Egress-Regeln des privaten Endpunkt-VCN unterliegen sollen, setzen Sie die Datenbankeigenschaft ROUTE_OUTBOUND_CONNECTIONS auf PRIVATE_ENDPOINT.
Weitere Informationen finden Sie unter Erweiterte Sicherheit für ausgehende Verbindungen mit privaten Endpunkten.
Informationen zu Einschränkungen für UTL_HTTP für autonome KI-Datenbank finden Sie unter PL/SQL-Packagehinweise für autonome KI-Datenbank.
Übergeordnetes Thema: Webservices aus autonomer KI-Datenbank aufrufen
HTTP-Anforderung an einen privaten Host weiterleiten
Beschreibt die Schritte zum Übermitteln einer HTTP-Anforderung mit UTL_HTTP auf einem privaten Host.
Um eine Anforderung an einen Zielhost auf einem privaten Endpunkt weiterzuleiten, muss der Zielhost über das Oracle Cloud Infrastructure-VCN der Quelldatenbank zugänglich sein. Beispiel: Sie können eine Verbindung zum Zielhost herstellen, wenn:
-
Sowohl die Quelldatenbank als auch der Zielhost befinden sich in demselben Oracle Cloud Infrastructure-VCN.
-
Die Quelldatenbank und der Zielhost befinden sich in verschiedenen Oracle Cloud Infrastructure-VCNs, die gepaart sind.
-
Der Zielhost ist ein On-Premise-Netzwerk, das über FastConnect oder VPN mit dem Oracle Cloud Infrastructure-VCN der Quelldatenbank verbunden ist.
Sie können auch UTL_HTTP-Aufrufe mit einem vom Kunden verwalteten Wallet tätigen, wenn sich Ihre autonome KI-Datenbank auf einem privaten Endpunkt befindet. Weitere Informationen finden Sie unter Externe Anrufe mit einem vom Kunden verwalteten Wallet tätigen.
So erstellen Sie eine UTL_HTTP-Anforderung an ein Ziel auf einem privaten Endpunkt:
-
Erstellen Sie eine Access Control-Liste für den Host.
Beispiel:
BEGIN DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE( host => 'www.example.com', ace => xs$ace_type( privilege_list => xs$name_list('http'), principal_name => 'ADMIN', principal_type => xs_acl.ptype_db), private_target => TRUE); END; /Wie in diesem Beispiel dargestellt, geben Sie beim Erstellen einer Access Control-Liste für den Host den Parameter
private_targetmit dem WertTRUEan.Hinweis
Wenn SieROUTE_OUTBOUND_CONNECTIONSaufPRIVATE_ENDPOINTsetzen, ist das Festlegen des Parametersprivate_targetaufTRUEin dieser API nicht erforderlich. Weitere Informationen finden Sie unter Erweiterte Sicherheit für ausgehende Verbindungen mit privaten Endpunkten. -
HTTP-Anforderung weiterleiten:
SELECT UTL_HTTP.REQUEST( url => 'https://www.example.com/', https_host => 'www.example.com') FROM dual;
Informationen zu Einschränkungen für UTL_HTTP für autonome KI-Datenbank finden Sie unter PL/SQL-Packagehinweise für autonome KI-Datenbank.
Übergeordnetes Thema: Webservices aus autonomer KI-Datenbank aufrufen
HTTP-Anforderung mit einem Proxy an private Site weiterleiten
Wenn sich Ihre autonome AI-Datenbankinstanz auf einem privaten Endpunkt befindet, können Sie einen Proxy verwenden, um HTTP-Anforderungen mit UTL_HTTP weiterzuleiten.
Wenn sich Ihre autonome AI-Datenbankinstanz auf einem privaten Endpunkt befindet, muss der Zielproxy aus dem Oracle Cloud Infrastructure-VCN der Quelldatenbank zugänglich sein, um UTL_HTTP mit einem Zielproxy zu verwenden.
Beispiel: Sie können eine Verbindung über einen Proxy herstellen, wenn:
-
Sowohl die Quelldatenbank als auch der Proxyserver befinden sich in demselben Oracle Cloud Infrastructure-VCN.
-
Die Quelldatenbank und der Proxyserver befinden sich in verschiedenen Oracle Cloud Infrastructure-VCNs, die gepaart sind.
-
Der Proxyserver ist ein On-Premise-Netzwerk, das mit FastConnect oder VPN mit dem Oracle Cloud Infrastructure-VCN der Quelldatenbank verbunden ist.
Sie können auch UTL_HTTP-Aufrufe mit einem vom Kunden verwalteten Wallet tätigen. Weitere Informationen finden Sie unter Externe Anrufe mit einem vom Kunden verwalteten Wallet tätigen.
So verwenden Sie einen Proxyserver mit UTL_HTTP:
Hinweise zum Festlegen eines Proxyservers mit UTL_HTTP.SET_PROXY:
-
Bei
DBMS_CLOUD-Anforderungen wird der Proxyserver, den Sie mitUTL_HTTP.SET_PROXYfestgelegt haben, nicht berücksichtigt. Dazu gehörenDBMS_CLOUD.SEND_REQUESTund der gesamte Objektspeicherzugriff für externeDBMS_CLOUD-Tabellen, die Sie mitDBMS_CLOUD.CREATE_EXTERNAL_TABLE,DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEoderDBMS_CLOUD.CREATE_HYBRID_PART_TABLEdefinieren. -
Bei
APEX_WEB_SERVICE-Anforderungen wird der Proxyserver, den Sie mitUTL_HTTP.SET_PROXYfestgelegt haben, nicht berücksichtigt.
Informationen zu Einschränkungen für UTL_HTTP für autonome KI-Datenbank finden Sie unter PL/SQL-Packagehinweise für autonome KI-Datenbank.
Übergeordnetes Thema: Webservices aus autonomer KI-Datenbank aufrufen
HTTP-Authentifizierung mit Zugangsdatenobjekten festlegen
Beschreibt, wie Zugangsdatenobjekte an die Prozedur UTL_HTTP.SET_CREDENTIAL übergeben werden.
Die Prozedur UTL_HTTP.SET_CREDENTIAL legt HTTP-Authentifizierungsinformationen im HTTP-Anforderungsheader fest. Der Webserver benötigt diese Informationen, um die Anforderung zu autorisieren.
Mit der Prozedur UTL_HTTP.SET_CREDENTIAL können Sie Zugangsdatenobjekte übergeben, um die HTTP-Authentifizierung festzulegen. Zugangsdatenobjekte sind Schemaobjekte. Daher können nur berechtigte Benutzer auf sie zugreifen und Sie können Berechtigungen auf Schemaebene konfigurieren, um Zugriff auf die Zugangsdaten zu kontrollieren. Das Übergeben von Zugangsdatenobjekten ist eine geeignete und sichere Möglichkeit, Benutzername/Kennwort/Schlüssel für die Authentifizierung zu speichern und zu verwalten.
Die Prozedur UTL_HTTP.SET_CREDENTIAL ist eine sichere und bequeme Alternative zur Prozedur UTL_HTTP.SET_AUTHENTICATION.
Beispiel
...
UTL_HTTP.SET_AUTHENTICATION (l_http_request, 'web_app_user', 'xxxxxxxxxxxx');
...Wie im obigen Beispiel gezeigt, müssen Sie beim Aufrufen der Prozedur SET_AUTHENTICATION den Benutzernamen/das Kennwort als Teil der formalen PL/SQL-Parameter in Klartext übergeben. Möglicherweise müssen Sie den Benutzernamen/das Kennwort in verschiedene PL/SQL-Automatisierungs- oder Cron-Skripte einbetten. Das Übergeben von Klartextpasswörtern ist ein Complianceproblem, das in der Prozedur UTL_HTTP.SET_CREDENTIAL behoben wird.
Weitere Informationen finden Sie unter Prozedur SET_AUTHENTICATION und Prozedur SET_AUTHENTICATION_FROM_WALLET.
UTL_HTTP.SET_CREDENTIAL-Syntax
UTL_HTTP.SET_CREDENTIAL (
r IN OUT NOCOPY req,
credential IN VARCHAR2,
scheme IN VARCHAR2 DEFAULT 'Basic',
for_proxy IN BOOLEAN DEFAULT FALSE);Beispiel für die Übergabe eines Zugangsdatenobjekts in der Prozedur SET_CREDENTIAL:
-
Zugangsdatenobjekt erstellen:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL ( credential_name => 'HTTP_CRED', username => 'web_app_user', password => '<password>' ); END;Dadurch wird ein Zugangsdatenobjekt erstellt, das ein gespeichertes Benutzername/Kennwort-Paar erstellt.
Weitere Informationen finden Sie unter Prozedur CREATE_CREDENTIAL.
Weitere Informationen finden Sie unter Zugangsdaten für Scheduler-Jobs angeben.
-
Rufen Sie die Prozedur
UTL_HTTP.SET_CREDENTIALauf:DECLARE l_http_request UTL_HTTP.REQ; BEGIN l_http_request := UTL_HTTP.BEGIN_REQUEST('https://www.example.com/v1/dwcsdev/NAME/dwcs_small_xt1.csv'); UTL_HTTP.SET_CREDENTIAL (l_http_request, 'HTTP_CRED','BASIC'); ... END;In diesem Beispiel wird zuerst eine Anforderung erstellt, indem die Prozedur
BEGIN_REQUESTaufgerufen wird. Außerdem werden HTTP-Authentifizierungsinformationen im HTTP-Anforderungsheader festgelegt, indem die ProzedurSET_CREDENTIALaufgerufen wird. Der Webserver benötigt diese Informationen, um die Anforderung zu autorisieren. Der Wertl_http_requestist die HTTP-Anforderung,HTTP_CREDder Zugangsdatenname undBASICdas HTTP-Authentifizierungsschema.
Weitere Informationen finden Sie unter UTL_HTTP.
Informationen zu Einschränkungen für UTL_HTTP für autonome KI-Datenbank finden Sie unter PL/SQL-Packagehinweise für autonome KI-Datenbank.
Übergeordnetes Thema: Webservices aus autonomer KI-Datenbank aufrufen
Hinweise zum Weiterleiten von HTTP-Anforderungen mit Oracle APEX oder Database Actions
Wenn Sie mehrere sequenzielle SQL-Befehle mit Oracle APEX SQL Commands oder dem SQL-Arbeitsblatt von Database Actions ausführen, können die Befehle in verschiedenen Datenbanksessions ausgeführt werden, in denen der Status einer vorherigen Anweisung nicht gespeichert wird. Dieses Verhalten unterscheidet sich von Desktop-SQL-Clients wie SQL*Plus und SQL Developer, die eine dauerhafte Verbindung zur Datenbank aufrechterhalten.
Oracle APEX SQL Commands und Database Actions SQL-Arbeitsblattweiterleitungen an eine autonome KI-Datenbankinstanz sind zustandslos. Das bedeutet, dass die Ausführung einzelner SQL- und PL/SQL-Anweisungen den Status im Datenbankspeicher speichern kann. Beispiel: Wenn Sie einen Befehl zur Verwendung eines Wallets weiterleiten, wird der Status jedoch möglicherweise gelöscht, bevor Sie die nächste Anweisung ausführen.
In der folgenden Tabelle finden Sie die Schritte zum Beibehalten des Datenbankspeicherstatus zwischen Anweisungsausführungen für SQL-Befehle, die Sie an die autonome KI-Datenbank weiterleiten.
| SQL-Befehlstool | Auszüge als Block weiterleiten |
|---|---|
| SQL-Arbeitsblatt für Datenbankaktionen |
|
| Oracle APEX-SQL-Befehle |
APEX-SQL-Befehle unterstützen nur die Ausführung einzelner Anweisungen. Wenn Sie mehrere Anweisungen ausführen möchten, müssen Sie die Anweisungen in einem einzelnen anonymen PL/SQL-Block wrappen. Um den Block mit APEX-SQL-Befehlen auszuführen, klicken Sie auf Ausführen. |
Beispiel: Verwenden Sie den folgenden Codeblock, um einen utl_http.request()-Befehl auszuführen, der ein vom Kunden verwaltetes Wallet verwendet:
SELECT utl_http.request(url => 'https://api.example.com/', wallet_path => 'file:path_to_wallet', wallet_password => 'password' ) FROM DUAL";Vergleichen Sie dies mit zwei aufeinander folgenden Anweisungen, die möglicherweise nicht erfolgreich ausgeführt werden, wenn der Befehl utl_http.set_wallet() und die Anweisung utl_http.request() einzeln und nicht als einzelner Codeblock ausgeführt werden:
EXEC utl_http.set_wallet('file:WALLET_DIR/wallet.sso', 'password');
SELECT utl_http.request('https://api.example.com/') FROM DUAL;Übergeordnetes Thema: Webservices aus autonomer KI-Datenbank aufrufen