Python-Skripte mit WITH_CONTEXT in autonomer KI-Datenbank aufrufen
Zeigt die Schritte zum Aufrufen von Python-Skripten mit WITH_CONTEXT in der Datenbank an.
Themen
- Informationen zum Aufrufen von Python-Skripten mit WITH_CONTEXT in einer autonomen KI-Datenbank
Sie können Python-Skripte mit Oracle Scheduler-Jobs mit dem AttributWITH_CONTEXTauf einer autonomen KI-Datenbankinstanz ausführen. - Python-Skript erstellen
Zeigt ein Beispiel für das Erstellen eines Python-Skripts an - Oracle Autonomous AI Database EXTPROC-Containerimage konfigurieren
Beschreibt die Schritte zum Abrufen und Konfigurieren des Oracle Autonomous AI Database EXTPROC-Containerimages. - Wallet hochladen, um eine sichere Verbindung zur EXTPROC-Agent-Instanz zu erstellen
Im Rahmen der Erstellung derEXTPROC-Agent-Anwendung der autonomen KI-Datenbank wird ein selbstsigniertes Wallet erstellt. Mit diesem Wallet können Sie auf die Agent-InstanzExtrpoczugreifen. - Schritte zum Aufrufen von Python-Skripten
Zeigt die Schritte zum Aufrufen von Python-Skripten in einer autonomen KI-Datenbank an.
Übergeordnetes Thema: Benutzerdefinierte Funktionen aufrufen
Informationen zum Aufrufen von Python-Skripten mit WITH_CONTEXT in einer autonomen KI-Datenbank
Sie können Python-Skripte auf einer autonomen KI-Datenbankinstanz mit Oracle Scheduler-Jobs mit dem Attribut WITH_CONTEXT ausführen.
Wenn Sie Python-Skripte mit WITH_CONTEXT in der autonomen KI-Datenbank aufrufen, wird ein Kontextzeiger an das Skript übergeben, mit dem das Skript einen Rückruf zur Datenbank ermöglicht. Der Kontext bezieht sich auf die Datenbanksession, die Verbindung und alle zugehörigen Status oder Daten, auf die das Skript zugreifen oder diese bearbeiten muss.
Sie können ein Python-Skript nicht direkt auf einer autonomen AI-Datenbankinstanz ausführen. Stattdessen hosten Sie das Skript remote auf einem Oracle Autonomous AI Database Extproc-Containerimage, das in einem virtuellen Cloud-Netzwerk (VCN) von Oracle Cloud Infrastructure ausgeführt wird. Das Containerimage ist mit dem EXTPROC-Agent vorkonfiguriert und umfasst alle erforderlichen Librarys, wie utils, onnx und python-oracledb, zur Ausführung des Skripts.
Sie rufen Python-Skripte aus Ihrer autonomen KI-Datenbank mit Oracle Scheduler-Jobs auf. Der erstellte Scheduler-Job muss ein ausführbarer Job sein und wird mit dem Attribut WITH_CONTEXT ausgeführt. Die ausführbaren Jobs können Shellskripte oder andere ausführbare Dateien ausführen. Mit dem Oracle Scheduler-Attribut WITH_CONTEXT kann ein Skript beim Aufrufen einer externen Prozedur, eines externen Programms oder Skripts die aktuellen Sessionberechtigungen übernehmen. Mit dem Attribut WITH_CONTEXT können externe Routinen auf sessionspezifische Informationen wie Schema, Berechtigungen und andere Kontextvariablen zugreifen.
Python-Skripte aus Ihrer autonomen KI-Datenbank werden nur unterstützt, wenn sich Ihre Datenbank auf einem privaten Endpunkt befindet. Um Python-Skripte auszuführen, müssen Sie das Oracle Autonomous AI Database EXTPROC-Containerimage abrufen, installieren und konfigurieren, wobei der Agent EXTPROC installiert ist. Mit dem Containerimage der autonomen KI-Datenbank EXTPROC können Sie externe Prozeduren und Skripte aufrufen, die in BASH, C oder Python aus Ihrer autonomen KI-Datenbank geschrieben wurden. Die Agent-Instanz EXTPROC wird in einem privaten Subnetz gehostet, und die autonome AI-Datenbank greift über einen Reverse Connection Endpoint (RCE) auf den Agent EXTPROC zu.
Dieses Feature wird nur für das Oracle-Datenbankrelease 19c unterstützt.
Sie stellen Python-Skripte bereit, indem Sie:
-
Ein Oracle hat das Containerimage der autonomen KI-Datenbank mit dem installierten Agent
EXTPROCbereitgestellt. Oracle stellt das Containerimage in GitHub-Packages bereit.Anweisungen zum Abrufen und Konfigurieren des
EXTPROC-Containerimages finden Sie unter GitHub README:Die Agent-Instanz
EXTPROCwird remote auf einem Containerimage gehostet, das in einem virtuellen Oracle Cloud Infrastructure-Cloud-Netzwerk (VCN) ausgeführt wird. Die sichere Kommunikation zwischen der autonomen KI-Datenbank und der Agent-InstanzEXTPROCwird gesichert, indem Network Security Group-(NSG-)Regeln festgelegt werden, sodass der Traffic von der Instanz der autonomen KI-Datenbank, die auf einem privaten Endpunkt ausgeführt wird, zur Agent-InstanzEXTPROCzulässig ist. DasEXTPROC-Agent-Image ist für den Host vorkonfiguriert und führt externe Prozeduren auf Port 16000 aus. -
PL/SQL-Prozeduren zur Registrierung von Endpunktumgebungen und zur Verwaltung von Berechtigungen für die registrierten Endpunkte. Weitere Informationen finden Sie unter DBMS_CLOUD_FUNCTION_ADMIN Package.
-
PL/SQL-Prozeduren zum Erstellen und Verwalten von Scheduler-Jobs und Programmen zum Aufrufen von Python-Skripten.
Weitere Informationen finden Sie unter DBMS_SCHEDULER.
Führen Sie die folgenden Schritte aus, um ein Python-Skript mit WITH_CONTEXT auf einer autonomen AI-Datenbankinstanz auszuführen:
-
Erstellen Sie ein Python-Skript. Weitere Informationen finden Sie unter Python-Skript erstellen.
-
Rufen Sie das Containerimage
EXTPROCab, und konfigurieren Sie es. Weitere Informationen finden Sie unter GitHub README. -
Konfigurieren Sie die autonome KI-Datenbank, um eine Verbindung zur Agent-Instanz
EXTPROCherzustellen. Weitere Informationen finden Sie unter Wallet hochladen, um eine sichere Verbindung zur EXTPROC Agent-Instanz zu erstellen. -
Rufen Sie Python-Skripte in Ihrer autonomen KI-Datenbank auf. Weitere Informationen finden Sie unter Schritte zum Aufrufen von Python-Skripten.
Übergeordnetes Thema: Python-Skripte mit WITH_CONTEXT in autonomer KI-Datenbank aufrufen
Python-Skript erstellen
Zeigt ein Beispiel für das Erstellen eines Python-Skripts
-
Beispiel: Python-Skript zum Erstellen einer Tabelle in der Datenbank.
#!/usr/bin/env python1 import oracledb import utils def gsf_main(argc, argv): table_name = argv[0] table_pk = argv[1] print(f"Total number of args: {argc}") print(f"Arg1: {table_name}") print(f"Arg2: {table_pk}") print(f"Arg3: {argv[2]}") print(f"Arg4: {argv[3]}") print(f"Arg5: {argv[4]}") # Step 1: Get connection object con = utils.getconnection() if con is None: print("Failed to establish database connection.") return -1 try: # Step 2: Create a table cur = con.cursor() create_table_query = f""" CREATE TABLE {table_name} ( employee_id NUMBER GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1), employee_name VARCHAR2(4000), employee_age NUMBER, CONSTRAINT {table_pk} PRIMARY KEY (employee_id) ) """ cur.execute(create_table_query) except Exception as e: print(f"Error performing operations: {e}") return -1 finally: if cur: cur.close()In diesem Beispiel wird das Skript
python1.pyerstellt. Das Skript definiert eine Python-Funktiongsf_main(argc, argv), die Argumente aus einem Scheduler-Job akzeptiert, eine Tabelle in der Datenbank mit den angegebenen Attributen erstellt und Ausnahmen verarbeitet.Mit dem Treiber
oracledbkann das Skript eine Verbindung zur Datenbank herstellen.Das Package
utilsstellt eine Helper-Funktiongetconnection()zum Abrufen einer Datenbankverbindung bereit.
Weitere Informationen finden Sie in der Python-Dokumentation.
Übergeordnetes Thema: Python-Skripte mit WITH_CONTEXT in autonomer KI-Datenbank aufrufen
EXTPROC-Containerimage von Oracle Autonomous AI Database konfigurieren
Beschreibt die Schritte zum Abrufen und Konfigurieren des Oracle Autonomous AI Database EXTPROC-Containerimages.
Ein von Oracle bereitgestelltes Autonomous AI Database-Containerimage mit dem installierten EXTPROC-Agent wird in GitHub-Packages gehostet. Anweisungen zum Abrufen und Konfigurieren des Containerimages EXTPROC finden Sie unter GitHub README.
Übergeordnetes Thema: Python-Skripte mit WITH_CONTEXT in autonomer KI-Datenbank aufrufen
Wallet hochladen, um eine sichere Verbindung zur EXTPROC-Agent-Instanz zu erstellen
Im Rahmen der Erstellung der EXTPROC-Agentanwendung der autonomen KI-Datenbank wird ein selbstsigniertes Wallet erstellt. Mit diesem Wallet können Sie auf die Agent-Instanz Extrpoc zugreifen.
EXTPROC auszuführen, verbinden sich die autonome AI-Datenbank 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 Verbindung zu einer autonomen KI-Datenbankinstanz herstellen.
Sie können auch ein öffentliches Zertifikat beziehen und verwenden, das von einer Certificate Authority (CA) ausgestellt wurde.
Sie müssen das Wallet zuerst 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 Ihre autonome KI-Datenbank hochzuladen:
Übergeordnetes Thema: Python-Skripte mit WITH_CONTEXT in autonomer KI-Datenbank aufrufen
Schritte zum Aufrufen von Python-Skripts
Zeigt die Schritte zum Aufrufen von Python-Skripten in einer autonomen KI-Datenbank an.
Nachdem Sie die Agent-Instanz EXTPROC so konfiguriert haben, dass Python-Skripte ausgeführt werden, registrieren Sie einen Remoteendpunkt und erstellen Scheduler-Jobs, um die Skripte aufzurufen.
Im Folgenden sind die Voraussetzungen zum Aufrufen von Python-Skripten in der autonomen KI-Datenbank aufgeführt:
-
Die Python-Skripte müssen in die EXTPROC-Agentinstanz kopiert werden.
-
Um Scheduler-Jobs zum Aufrufen von Python-Skripten mit einem anderen Benutzer als ADMIN zu erstellen und zu verwalten, benötigen Sie die folgenden Berechtigungen:
-
MANAGE SCHEDULER -
CREATE JOB -
Berechtigung für den registrierten Remoteendpunkt
-
Themen
- Remoteendpunkt in autonomer KI-Datenbank registrieren und verwalten
Führen Sie als ADMIN-Benutzer die folgenden Schritte aus, um Remoteendpunkte in Ihrer autonomen KI-Datenbank zu registrieren und zu verwalten. - Schedulerjobs zum Aufrufen von Python-Skripten erstellen und verwalten
Zeigt die Schritte zum Erstellen und Verwalten von Scheduler-Jobs zum Aufrufen von Python-Skripten aus der autonomen KI-Datenbank an.
Übergeordnetes Thema: Python-Skripte mit WITH_CONTEXT in autonomer KI-Datenbank aufrufen
Remoteendpunkt in autonomer KI-Datenbank registrieren und verwalten
Führen Sie als ADMIN-Benutzer die folgenden Schritte aus, um Remoteendpunkte in Ihrer autonomen KI-Datenbank zu registrieren und zu verwalten.
Remoteendpunkt registrieren
Verwenden Sie DBMS_CLOUD_FUNCTION_ADMIN.REGISTER_REMOTE_EXECUTION_ENV, um einen Remoteendpunkt zu registrieren.
Beispiel:
BEGIN
DBMS_CLOUD_FUNCTION_ADMIN.REGISTER_REMOTE_EXECUTION_ENV (
remote_endpoint_name => 'rem_executable',
remote_endpoint_url => 'remote_extproc_hostname:16000',
wallet_dir => 'WALLET_DIR',
remote_cert_dn => 'CN=MACHINENAME'
);
END;
/In diesem Beispiel wird die rem_executable-Bibliothek erstellt und die EXTPROC-Agentinstanz registriert, die im Parameter remote_endpoint_url in Ihrer autonomen KI-Datenbank angegeben ist. Die Agent-Instanz EXTPROC ist für das Hosten von Python-Skripten auf Port 16000 vorkonfiguriert.
Weitere Informationen finden Sie unter Prozedur REGISTER_REMOTE_EXECUTION_ENV.
Berechtigungen für einen registrierten Endpunkt verwalten
Dieser Schritt ist optional und nur erforderlich, wenn ein anderer Benutzer als ADMIN Python-Skripte aus der autonomen KI-Datenbank aufrufen muss.
Verwenden Sie DBMS_CLOUD_FUNCTION_ADMIN.GRANT_REMOTE_EXECUTION_ENV, um einem anderen Benutzer als ADMIN die Berechtigung für den registrierten Endpunkt zu erteilen.
Beispiel:
BEGIN
DBMS_CLOUD_FUNCTION_ADMIN.GRANT_REMOTE_EXECUTION_ENV (
remote_endpoint_name => 'REM_EXECUTABLE',
user_name => 'username');
END;
/In diesem Beispiel wird dem angegebenen Benutzer die Berechtigung für REM_EXECUTABLE erteilt. Weitere Informationen finden Sie unter Prozedur GRANT_REMOTE_EXECUTION_ENV.
Nachdem Sie die Berechtigung für den registrierten Endpunkt erteilt haben, können Sie mit DBMS_CLOUD_FUNCTION_ADMIN.REVOKE_REMOTE_EXECUTION_ENV die Berechtigung für den registrierten Endpunkt als Benutzer entziehen.
Beispiel:
BEGIN
DBMS_CLOUD_FUNCTION_ADMIN.REVOKE_REMOTE_EXECUTION_ENV (
remote_endpoint_name => 'REM_EXECUTABLE',
user_name => 'username');
END;
/In diesem Beispiel wird dem angegebenen Benutzer die Berechtigung für REM_EXECUTABLE entzogen. Weitere Informationen finden Sie unter Prozedur REVOKE_REMOTE_EXECUTION_ENV.
Sie können die DBA_CLOUD_FUNCTION_REMOTE_EXECUTION_GRANT abfragen, um die Berechtigungen aufzulisten, die für alle Remoteendpunkte erteilt wurden. Weitere Informationen finden Sie in der Ansicht DBA_CLOUD_FUNCTION_REMOTE_EXECUTION_GRANT.
Registrierten Endpunkt entfernen
Verwenden Sie DBMS_CLOUD_FUNCTION_ADMIN.DEREGISTER_REMOTE_EXECUTION_ENV, um einen registrierten Remoteendpunkt zu entfernen.
Beispiel:
BEGIN
DBMS_CLOUD_FUNCTION_ADMIN.DEREGISTER_REMOTE_EXECUTION_ENV (
remote_endpoint_name => 'REM_EXECUTABLE');
END;
/Dadurch wird der Remoteendpunkt rem_executable aus der autonomen KI-Datenbank entfernt. Weitere Informationen finden Sie unter Prozedur DEREGISTER_REMOTE_EXECUTION_ENV.
Übergeordnetes Thema: Schritte zum Aufrufen von Python-Skripten
Scheduler-Jobs zum Aufrufen von Python-Skripten erstellen und verwalten
Zeigt die Schritte zum Erstellen und Verwalten von Scheduler-Jobs zum Aufrufen von Python-Skripten aus der autonomen KI-Datenbank an.
Übergeordnetes Thema: Schritte zum Aufrufen von Python-Skripten