Appeler des scripts Python avec WITH_CONTEXT sur une base de données d'IA autonome
Affiche les étapes permettant d'appeler des scripts Python à l'aide de WITH_CONTEXT sur la base de données.
Sujets
- A propos de l'appel de scripts Python avec WITH_CONTEXT sur une base de données d'IA autonome
Vous pouvez exécuter des scripts Python sur une instance de base de données d'IA autonome à l'aide de travaux Oracle Scheduler avec l'attributWITH_CONTEXT. - Création d'un script Python
Affiche un exemple de création d'un script Python - Configuration de l'image de conteneur Oracle Autonomous AI Database EXTPROC
Décrit les étapes à suivre pour obtenir et configurer l'image de conteneur Oracle Autonomous AI Database EXTPROC. - Téléchargement du portefeuille pour créer une connexion sécurisée vers l'instance d'agent EXTPROC
Un portefeuille auto-signé est créé dans le cadre de la création de l'application d'agentEXTPROCde la base de données Autonomous AI. Ce portefeuille vous permet d'accéder à l'instance d'agentExtrpoc. - Etapes d'appel de scripts Python
Affiche les étapes permettant d'appeler des scripts Python sur une base de données d'IA autonome.
Rubrique parent : Appel de fonctions définies par l'utilisateur
A propos de l'appel de scripts Python avec WITH_CONTEXT sur une base de données Autonomous AI
Vous pouvez exécuter des scripts Python sur une instance de base de données Autonomous AI à l'aide de travaux Oracle Scheduler avec l'attribut WITH_CONTEXT.
Lorsque vous appelez des scripts Python avec WITH_CONTEXT sur une base de données Autonomous AI, un pointeur de contexte est transmis au script qui permet au script de rappeler la base de données. Le contexte fait référence à la session de base de données, à la connexion et à tout état ou donnée associé auquel le script doit accéder ou manipuler.
Vous ne pouvez pas exécuter un script Python directement sur une instance de base de données Autonomous AI. A la place, vous hébergez le script à distance sur une image de conteneur Oracle Autonomous AI Database Extproc exécutée dans un réseau cloud virtuel Oracle Cloud Infrastructure (VCN). L'image de conteneur est préconfigurée avec l'agent EXTPROC et inclut toutes les bibliothèques nécessaires, telles que utils, onnx et python-oracledb, pour l'exécution du script.
Vous appelez des scripts Python à partir de votre base de données Autonomous AI à l'aide des travaux Oracle Scheduler. Le travail du planificateur que vous créez doit être un travail exécutable et est exécuté avec l'attribut WITH_CONTEXT. Les travaux exécutables peuvent exécuter des scripts shell ou d'autres exécutables, et l'attribut Oracle Scheduler WITH_CONTEXT permet à un script d'hériter des privilèges de session en cours lors de l'appel d'une procédure, d'un programme ou d'un script externe. L'attribut WITH_CONTEXT permet aux routines externes d'accéder à des informations propres à la session, telles que le schéma, les privilèges et d'autres variables de contexte.
Les scripts Python de votre base de données Autonomous AI ne sont pris en charge que lorsque votre base de données se trouve sur une adresse privée. Pour exécuter des scripts Python, vous devez obtenir, installer et configurer l'image de conteneur Oracle Autonomous AI Database EXTPROC avec l'agent EXTPROC installé. L'image de conteneur EXTPROC de la base de données Autonomous AI permet d'appeler des procédures et des scripts externes écrits en BASH, C ou Python à partir de votre base de données Autonomous AI. L'instance d'agent EXTPROC est hébergée sur un sous-réseau privé et la base de données Autonomous AI accède à l'agent EXTPROC via une adresse de connexion inverse (RCE).
Cette fonctionnalité est uniquement prise en charge pour la version 19c de la base de données Oracle.
Vous déployez des scripts Python à l'aide des éléments suivants :
-
Image de conteneur de base de données Autonomous AI fournie par Oracle avec l'agent
EXTPROCinstallé. Oracle fournit l'image de conteneur sur les packages GitHub.Reportez-vous au fichier GitHub README pour obtenir des instructions sur l'obtention et la configuration de l'image de conteneur
EXTPROC:L'instance d'agent
EXTPROCest hébergée à distance sur une image de conteneur exécutée dans un réseau cloud virtuel Oracle Cloud Infrastructure (VCN). La communication sécurisée entre votre base de données Autonomous AI et l'instance d'agentEXTPROCest sécurisée en définissant des règles de groupe de sécurité réseau de sorte que le trafic soit autorisé entre l'instance de base de données Autonomous AI exécutée sur une adresse privée et l'instance d'agentEXTPROC. L'image de l'agentEXTPROCest préconfigurée pour héberger et exécuter des procédures externes sur le port 16000. -
Procédures PL/SQL permettant d'inscrire des environnements d'adresse et de gérer les privilèges sur les adresses inscrites. Pour plus d'informations, reportez-vous à la section DBMS_CLOUD_FUNCTION_ADMIN Package.
-
Procédures PL/SQL permettant de créer et de gérer des travaux et des programmes de planificateur pour appeler des scripts Python.
Pour plus d'informations, reportez-vous à DBMS_SCHEDULER.
Pour exécuter un script Python avec WITH_CONTEXT sur une instance de base de données Autonomous AI, procédez comme suit :
-
Créez un script Python. Pour plus d'informations, reportez-vous à Création d'un script Python.
-
Obtenez et configurez l'image de conteneur
EXTPROC. Pour plus d'informations, reportez-vous à GitHub README. -
Configurez votre base de données Autonomous AI pour vous connecter à l'instance d'agent
EXTPROC. Pour plus d'informations, reportez-vous à Téléchargement de portefeuille vers l'instance d'agent EXTPROC pour créer une connexion sécurisée. -
Appelez des scripts Python sur votre base de données Autonomous AI. Pour plus d'informations, reportez-vous à Etapes d'appel de scripts Python.
Créer un script Python
Affiche un exemple de création d'un script Python
-
Exemple : script Python permettant de créer une table dans la base de données.
#!/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()Cet exemple crée le script
python1.py. Le script définit une fonction Pythongsf_main(argc, argv)qui accepte les arguments d'un travail du planificateur, crée une table dans la base de données avec les attributs fournis et gère les exceptions.Le pilote
oracledbpermet au script de se connecter à la base de données.Le package
utilsfournit une fonction d'aidegetconnection()pour obtenir une connexion de base de données.
Pour plus d'informations, reportez-vous à la documentation Python.
Configuration de l'image de conteneur Oracle Autonomous AI Database EXTPROC
Décrit les étapes à suivre pour obtenir et configurer l'image de conteneur Oracle Autonomous AI Database EXTPROC.
Une image de conteneur de base de données Autonomous AI fournie par Oracle avec l'agent EXTPROC installé est hébergée sur les packages GitHub. Pour obtenir des instructions sur l'obtention et la configuration de l'image de conteneur EXTPROC, reportez-vous à GitHub README.
Télécharger le portefeuille pour créer une connexion sécurisée à l'instance d'agent EXTPROC
Un portefeuille auto-signé est créé dans le cadre de la création de l'application d'agent EXTPROC de la base de données Autonomous AI. Ce portefeuille vous permet d'accéder à l'instance d'agent Extrpoc.
EXTPROC, la base de données Autonomous AI et l'agent EXTPROC se connectent à l'aide de l'authentification par couche Transport Layer Security (mTLS). Lorsque le protocole mTLS (Mutual Transport Layer Security) est utilisé, les clients se connectent via une connexion de base de données TCP (Secure TCP) à l'aide du Protocole TLS 1.2 standard avec un certificat d'autorité de certificat client sécurisé. Pour plus d'informations, reportez-vous à A propos de la connexion à une instance de base de données Autonomous AI.
Vous pouvez également obtenir et utiliser un certificat public émis par une autorité de certification.
Vous devez d'abord exporter le portefeuille vers Object Storage à partir du répertoire /u01/app/oracle/extproc_wallet sur la machine virtuelle où EXTPROC est exécuté.
Pour télécharger le portefeuille vers votre base de données Autonomous AI, procédez comme suit :
Etapes d'appel de scripts Python
Affiche les étapes permettant d'appeler des scripts Python sur une base de données Autonomous AI.
Une fois que vous avez configuré l'instance d'agent EXTPROC pour exécuter des scripts Python, vous inscrivez une adresse distante et créez des travaux de planificateur pour appeler les scripts.
Les prérequis suivants permettent d'appeler des scripts Python sur une base de données Autonomous AI :
-
Les scripts Python doivent être copiés dans l'instance d'agent EXTPROC.
-
Pour créer et gérer des travaux du planificateur afin d'appeler des scripts Python avec un utilisateur autre qu'ADMIN, vous devez disposer des privilèges suivants :
-
MANAGE SCHEDULER -
CREATE JOB -
Privilège sur l'adresse distante inscrite
-
Sujets
- Inscription et gestion d'une adresse distante sur une base de données Autonomous AI
En tant qu'utilisateur ADMIN, effectuez les étapes suivantes pour inscrire et gérer des adresses distantes dans votre base de données Autonomous AI. - Création et gestion de travaux de planificateur pour appeler des scripts Python
Affiche les étapes de création et de gestion de travaux de planificateur pour appeler des scripts Python à partir d'une base de données Autonomous AI.
Inscription et gestion de l'adresse distante sur la base de données Autonomous AI
En tant qu'utilisateur ADMIN, effectuez les étapes suivantes pour inscrire et gérer les adresses distantes dans votre base de données Autonomous AI.
Inscription d'une adresse distante
Utilisez DBMS_CLOUD_FUNCTION_ADMIN.REGISTER_REMOTE_EXECUTION_ENV pour inscrire une adresse distante.
Exemple :
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;
/Cet exemple crée la bibliothèque rem_executable et inscrit l'instance d'agent EXTPROC indiquée dans le paramètre remote_endpoint_url dans votre base de données Autonomous AI. L'instance d'agent EXTPROC est préconfigurée pour héberger les scripts Python sur le port 16000.
Pour plus d'informations, reportez-vous à Procédure REGISTER_REMOTE_EXECUTION_ENV.
Gestion des privilèges sur une adresse inscrite
Cette étape est facultative et n'est requise que lorsqu'un utilisateur autre que l'administrateur doit appeler des scripts Python à partir d'une base de données Autonomous AI.
Utilisez DBMS_CLOUD_FUNCTION_ADMIN.GRANT_REMOTE_EXECUTION_ENV pour accorder le privilège sur l'adresse inscrite à un utilisateur autre que l'administrateur.
Exemple :
BEGIN
DBMS_CLOUD_FUNCTION_ADMIN.GRANT_REMOTE_EXECUTION_ENV (
remote_endpoint_name => 'REM_EXECUTABLE',
user_name => 'username');
END;
/Cet exemple accorde le privilège sur REM_EXECUTABLE à l'utilisateur indiqué. Pour plus d'informations, reportez-vous à Procédure GRANT_REMOTE_EXECUTION_ENV.
Une fois que vous avez accordé le privilège sur l'adresse inscrite, vous pouvez utiliser DBMS_CLOUD_FUNCTION_ADMIN.REVOKE_REMOTE_EXECUTION_ENV pour révoquer le privilège sur l'adresse inscrite en tant qu'utilisateur.
Exemple :
BEGIN
DBMS_CLOUD_FUNCTION_ADMIN.REVOKE_REMOTE_EXECUTION_ENV (
remote_endpoint_name => 'REM_EXECUTABLE',
user_name => 'username');
END;
/Cet exemple révoque le privilège sur REM_EXECUTABLE de l'utilisateur indiqué. Pour plus d'informations, reportez-vous à Procédure REVOKE_REMOTE_EXECUTION_ENV.
Vous pouvez interroger DBA_CLOUD_FUNCTION_REMOTE_EXECUTION_GRANT pour répertorier les droits d'accès accordés à toutes les adresses distantes. Pour plus d'informations, reportez-vous à DBA_CLOUD_FUNCTION_REMOTE_EXECUTION_GRANT View.
Suppression d'une adresse inscrite
Utilisez DBMS_CLOUD_FUNCTION_ADMIN.DEREGISTER_REMOTE_EXECUTION_ENV pour enlever une adresse distante inscrite.
Exemple :
BEGIN
DBMS_CLOUD_FUNCTION_ADMIN.DEREGISTER_REMOTE_EXECUTION_ENV (
remote_endpoint_name => 'REM_EXECUTABLE');
END;
/Cette opération enlève l'adresse distante rem_executable de votre base de données Autonomous AI. Pour plus d'informations, reportez-vous à Procédure DEREGISTER_REMOTE_EXECUTION_ENV.
Rubrique parent : Etapes d'appel de scripts Python
Créer et gérer des travaux du planificateur pour appeler des scripts Python
Affiche les étapes permettant de créer et de gérer des travaux de planificateur pour appeler des scripts Python à partir d'une base de données Autonomous AI.
Rubrique parent : Etapes d'appel de scripts Python