Appeler des scripts Python avec WITH_CONTEXT sur une base de données d'intelligence artificielle autonome
Affiche les étapes pour appeler des scripts Python à l'aide de WITH_CONTEXT sur votre base de données.
Rubriques
- À propos de l'appel de scripts Python avec WITH_CONTEXT sur la 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 tâches Oracle Scheduler avec l'attributWITH_CONTEXT. - Créer un script Python
Affiche un exemple de création d'un script Python - Configurer l'image de conteneur EXTPROC d'Oracle Autonomous AI Database
Décrit les étapes pour obtenir et configurer l'image de conteneur EXTPROC d'Oracle Autonomous AI Database. - Charger un 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 Autonomous AI DatabaseEXTPROC. Ce portefeuille vous permet d'accéder à l'instance d'agentExtrpoc. - Étapes d'appel de scripts Python
Affiche les étapes pour appeler des scripts Python sur une base de données d'IA autonome.
Rubrique parent : Appeler des fonctions définies par l'utilisateur
À propos de l'appel de scripts Python avec WITH_CONTEXT sur une base de données d'intelligence artificielle autonome
Vous pouvez exécuter des scripts Python sur une instance de base de données d'intelligence artificielle autonome à l'aide de travaux Oracle Scheduler avec l'attribut WITH_CONTEXT.
Lorsque vous appelez des scripts Python avec WITH_CONTEXT sur Autonomous AI Database, un pointeur de contexte est transmis au script qui permet au script de revenir à 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 autonome avec intelligence artificielle. À la place, vous hébergez le script à distance sur une image de conteneur Extproc d'Oracle Autonomous AI Database s'exécutant dans un réseau en nuage virtuel (VCN) d'Oracle Cloud Infrastructure. L'image de conteneur est préconfigurée avec l'agent EXTPROC et comprend toutes les bibliothèques nécessaires, telles que utils, onnx et python-oracledb, pour exécuter le script.
Vous appelez des scripts Python à partir de votre base de données d'intelligence artificielle autonome à l'aide des travaux Oracle Scheduler. La tâche du programmateur que vous créez doit être une tâche exécutable qui est exécutée avec l'attribut WITH_CONTEXT. Les travaux exécutables peuvent exécuter des scripts d'interpréteur de commandes ou d'autres exécutables et l'attribut Oracle Scheduler WITH_CONTEXT permet à un script d'hériter des privilèges de session courants lors de l'appel d'une procédure, d'un programme ou d'un script externe. L'attribut WITH_CONTEXT permet aux sous-programmes 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 autonome d'IA ne sont pris en charge que lorsque votre base de données se trouve sur un point d'extrémité privé. 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 Autonomous AI Database EXTPROC vous 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 Database. L'instance d'agent EXTPROC est hébergée dans un sous-réseau privé et la base de données autonome d'IA accède à l'agent EXTPROC au moyen d'un point d'extrémité de connexion inverse (RCE).
Cette fonction n'est prise en charge que pour la version de base de données Oracle 19c.
Vous déployez des scripts Python à l'aide des éléments suivants :
-
Une image de conteneur de base de données d'intelligence artificielle autonome fournie par Oracle avec l'agent
EXTPROCinstallé. Oracle fournit l'image de conteneur sur les ensembles GitHub.Voir GitHub README pour obtenir et configurer l'image de conteneur
EXTPROC:L'instance d'agent
EXTPROCest hébergée à distance sur une image de conteneur s'exécutant dans un réseau en nuage virtuel (VCN) Oracle Cloud Infrastructure. La communication sécurisée entre votre base de données d'IA autonome et l'instance d'agentEXTPROCest sécurisée en définissant des règles de groupe de sécurité de réseau de sorte que le trafic soit autorisé entre votre instance de base de données d'IA autonome s'exécutant sur un point d'extrémité privé 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'enregistrer des environnements de point d'extrémité et de gérer les privilèges sur les points d'extrémité enregistrés. Pour plus d'informations, voir Ensemble DBMS_CLOUD_FUNCTION_ADMIN.
-
Procédures PL/SQL permettant de créer et de gérer des travaux et des programmes du planificateur pour appeler des scripts Python.
Pour plus d'informations, voir DBMS_SCHEDULER.
Suivez ces étapes pour exécuter un script Python avec WITH_CONTEXT sur une instance de base de données d'IA autonome :
-
Créez un script Python. Pour plus d'informations, voir Créer un script Python.
-
Obtenez et configurez l'image de conteneur
EXTPROC. Pour plus d'informations, voir GitHub README. -
Configurez votre base de données d'intelligence artificielle autonome pour vous connecter à l'instance d'agent
EXTPROC. Pour plus d'informations, voir Charger un portefeuille pour créer une connexion sécurisée à l'instance d'agent EXTPROC. -
Appelez des scripts Python sur votre base de données d'intelligence artificielle autonome. Pour plus d'informations, voir Étapes d'appel de scripts Python.
Créer un script Python
Affiche un exemple de création d'un script Python
-
Exemple : Script Python pour créer une table dans votre 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.L'ensemble
utilsfournit une fonction d'aidegetconnection()pour obtenir une connexion à la base de données.
Pour plus d'informations, voir la documentation sur Python.
Configurer l'image de conteneur EXTPROC d'Oracle Autonomous AI Database
Décrit les étapes pour obtenir et configurer l'image de conteneur EXTPROC d'Oracle Autonomous AI Database.
Une image de conteneur de base de données Autonomous AI Database fournie par Oracle avec l'agent EXTPROC installé est hébergée sur les ensembles GitHub. Voir GitHub README pour obtenir et configurer l'image de conteneur EXTPROC.
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 Autonomous AI Database EXTPROC. Ce portefeuille vous permet d'accéder à l'instance d'agent Extrpoc.
EXTPROC, la base de données d'intelligence artificielle autonome et l'agent EXTPROC se connectent à l'aide du protocole mTLS (mutual Transport Layer Security). Lors de l'utilisation de la sécurité de la couche de transport mutuel (mTLS), les clients se connectent au moyen d'une connexion TCPS (TCP sécurisé) à la base de données à l'aide de la norme TLS 1.2 avec un certificat de client approuvé d'une autorité de certification (CA). Pour plus d'informations, voir À propos de la connexion à une instance de base de données du service d'intelligence artificielle autonome.
Vous pouvez également obtenir et utiliser un certificat public émis par une autorité de certification.
Vous devez d'abord exporter le portefeuille vers le stockage d'objets à partir du répertoire /u01/app/oracle/extproc_wallet sur la machine virtuelle où EXTPROC s'exécute.
Suivez ces étapes pour charger le portefeuille dans votre base de données d'intelligence artificielle autonome :
Etapes d'appel des scripts Python
Affiche les étapes permettant d'appeler des scripts Python sur une base de données autonome avec intelligence artificielle.
Après avoir configuré l'instance d'agent EXTPROC pour exécuter des scripts Python, vous enregistrez un point d'extrémité distant et créez des tâches du programmateur pour appeler les scripts.
Voici les conditions requises pour appeler des scripts Python sur une base de données autonome avec intelligence artificielle :
-
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 le point d'extrémité distant enregistré
-
Rubriques
- Enregistrer et gérer un point d'extrémité distant dans une base de données d'IA autonome
En tant qu'utilisateur ADMIN, effectuez les étapes suivantes pour enregistrer et gérer des points d'extrémité distants dans votre base de données d'IA autonome. - Créer et gérer des travaux du programmateur pour appeler des scripts Python
Affiche les étapes de création et de gestion des travaux du programmateur pour appeler des scripts Python à partir de la base de données autonome d'IA.
Enregistrer et gérer un point d'extrémité distant dans une base de données autonome avec intelligence artificielle
En tant qu'utilisateur ADMIN, effectuez les étapes suivantes pour enregistrer et gérer des points d'extrémité distants dans votre base de données du service d'intelligence artificielle autonome.
Enregistrer un point d'extrémité distant
Utilisez DBMS_CLOUD_FUNCTION_ADMIN.REGISTER_REMOTE_EXECUTION_ENV pour enregistrer un point d'extrémité distant.
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 enregistre l'instance d'agent EXTPROC spécifiée dans le paramètre remote_endpoint_url de votre base de données d'intelligence artificielle autonome. L'instance d'agent EXTPROC est préconfigurée pour héberger les scripts Python sur le port 16000.
Pour plus d'informations, voir ProcédureREGISTER_REMOTE_EXECUTION_ENV.
Gérer les privilèges sur un point d'extrémité enregistré
Cette étape est facultative et n'est requise que lorsqu'un utilisateur autre qu'ADMIN doit appeler des scripts Python à partir de la base de données autonome avec intelligence artificielle.
Utilisez DBMS_CLOUD_FUNCTION_ADMIN.GRANT_REMOTE_EXECUTION_ENV pour accorder le privilège sur le point d'extrémité enregistré à 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 spécifié. Pour plus d'informations, voir ProcédureGRANT_REMOTE_EXECUTION_ENV.
Après avoir accordé le privilège sur le point d'extrémité enregistré, vous pouvez utiliser DBMS_CLOUD_FUNCTION_ADMIN.REVOKE_REMOTE_EXECUTION_ENV pour révoquer le privilège sur le point d'extrémité enregistré d'un 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 spécifié. Pour plus d'informations, voir ProcédureREVOKE_REMOTE_EXECUTION_ENV.
Vous pouvez interroger DBA_CLOUD_FUNCTION_REMOTE_EXECUTION_GRANT pour lister les autorisations accordées pour tous les points d'extrémité distants. Pour plus d'informations, voir Vue DBA_CLOUD_FUNCTION_REMOTE_EXECUTION_GRANT.
Supprimer un point d'extrémité enregistré
Utilisez DBMS_CLOUD_FUNCTION_ADMIN.DEREGISTER_REMOTE_EXECUTION_ENV pour supprimer un point d'extrémité distant enregistré.
Exemple :
BEGIN
DBMS_CLOUD_FUNCTION_ADMIN.DEREGISTER_REMOTE_EXECUTION_ENV (
remote_endpoint_name => 'REM_EXECUTABLE');
END;
/Cela supprime le point d'extrémité distant rem_executable de votre base de données d'intelligence artificielle autonome. Pour plus d'informations, voir ProcédureDEREGISTER_REMOTE_EXECUTION_ENV.
Rubrique parent : Étapes d'appel de scripts Python
Créer et gérer des travaux du programmateur pour appeler des scripts Python
Affiche les étapes de création et de gestion des tâches de programmateur pour appeler des scripts Python à partir de la base de données d'intelligence artificielle autonome.
Rubrique parent : Étapes d'appel de scripts Python