Chamar Scripts Python com WITH_CONTEXT no Autonomous AI Database
Mostra as etapas para chamar scripts Python usando WITH_CONTEXT no seu banco de dados.
Tópicos
- Sobre como Chamar Scripts Python com WITH_CONTEXT no Autonomous AI Database
Você pode executar scripts Python em uma instância do Autonomous AI Database usando jobs do Oracle Scheduler com o atributoWITH_CONTEXT. - Criar um Script Python
Mostra um exemplo de criação de um script Python - Configurar Imagem do Contêiner EXTPROC do Oracle Autonomous AI Database
Descreve as etapas para obter e configurar a imagem do contêiner EXTPROC do Oracle Autonomous AI Database. - Fazer Upload da Wallet para Criar Conexão Segura com a Instância do Agente EXTPROC
Uma wallet autoassinada é criada como parte da criação do aplicativo do agente do Autonomous AI DatabaseEXTPROC. Essa wallet permite que você acesse a instância do agenteExtrpoc. - Etapas para Chamar Scripts Python
Mostra as etapas para chamar scripts Python em um Autonomous AI Database.
Tópico principal: Chamar Funções Definidas pelo Usuário
Sobre a Chamada de Scripts Python com WITH_CONTEXT no Autonomous AI Database
Você pode executar scripts Python em uma instância do Autonomous AI Database usando jobs do Oracle Scheduler com o atributo WITH_CONTEXT.
Quando você chama scripts Python com WITH_CONTEXT no Autonomous AI Database, um ponteiro de contexto é passado para o script que permite que o script chame de volta ao banco de dados. O contexto refere-se à sessão, à conexão e a qualquer estado ou dados associados que o script precise acessar ou manipular.
Você não pode executar um script Python diretamente em uma instância do Autonomous AI Database. Em vez disso, você hospeda o script remotamente em uma imagem de contêiner do Oracle Autonomous AI Database Extproc em execução em uma VCN (Virtual Cloud Network) da Oracle Cloud Infrastructure. A imagem do contêiner é pré-configurada com o agente EXTPROC e inclui todas as bibliotecas necessárias, como utils, onnx e python-oracledb, para executar o script.
Você chama scripts Python do seu Autonomous AI Database usando jobs do Oracle Scheduler. O job do Scheduler que você cria deve ser um job executável e é executado com o atributo WITH_CONTEXT. Os jobs executáveis podem executar scripts de shell ou outros executáveis e o atributo WITH_CONTEXT do Oracle Scheduler permite que um script herde os privilégios de sessão atuais ao chamar um procedimento, programa ou script externo. O atributo WITH_CONTEXT permite que rotinas externas acessem informações específicas da sessão, como esquema, privilégios e outras variáveis de contexto.
Os scripts Python do seu Autonomous AI Database só são suportados quando seu banco de dados está em um ponto final privado. Para executar scripts Python, obtenha, instale e configure a imagem do contêiner EXTPROC do Oracle Autonomous AI Database com o agente EXTPROC instalado. A imagem do contêiner do Autonomous AI Database EXTPROC permite que você chame procedimentos externos e scripts gravados em BASH, C ou Python do seu Autonomous AI Database. A instância do agente EXTPROC é hospedada em uma sub-rede privada e o Autonomous AI Database acessa o agente EXTPROC por meio de um RCE (Reverse Connection Endpoint).
Esse recurso só é suportado para a release 19c do banco de dados Oracle.
Você implanta scripts Python usando:
-
Uma imagem de contêiner do Autonomous AI Database fornecida pela Oracle com o agente
EXTPROCinstalado. O sistema Oracle fornece a imagem do contêiner nos pacotes GitHub.Consulte GitHub README para obter instruções e configurar a imagem do contêiner
EXTPROC:A instância do agente
EXTPROCé hospedada remotamente em uma imagem de contêiner em execução em uma VCN (Virtual Cloud Network) do Oracle Cloud Infrastructure. A comunicação segura entre o Autonomous AI Database e a instância do agenteEXTPROCé protegida por meio da definição de regras do Grupo de Segurança de Rede (NSG), de modo que o tráfego seja permitido da instância do Autonomous AI Database em execução em um ponto final privado para a instância do agenteEXTPROC. A imagem do agenteEXTPROCé pré-configurada para hospedar e executar procedimentos externos na porta 16000. -
Procedimentos PL/SQL para registrar ambientes de ponto final e gerenciar privilégios nos pontos finais registrados. Consulte DBMS_CLOUD_FUNCTION_ADMIN Package para obter mais informações.
-
Procedimentos PL/SQL para criar e gerenciar jobs e programas do scheduler para chamar scripts Python.
Consulte DBMS_SCHEDULER para saber mais.
Siga estas etapas para executar um script Python com WITH_CONTEXT em uma instância do Autonomous AI Database:
-
Criar um script Python. Consulte Criar um Script Python para obter mais informações.
-
Obtenha e configure a imagem do contêiner
EXTPROC. Consulte GitHub README para obter mais informações. -
Configure seu Autonomous AI Database para estabelecer conexão com a instância do agente
EXTPROC. Consulte Fazer Upload da Wallet para Criar Conexão Segura com a Instância do Agente EXTPROC para obter mais informações. -
Chame scripts Python no seu Autonomous AI Database. Consulte Etapas para Chamar Scripts Python para obter mais informações.
Tópico principal: Chamar Scripts Python com WITH_CONTEXT no Autonomous AI Database
Criar um Script Python
Mostra um exemplo de criação de um script Python
-
Exemplo: script Python para criar uma tabela no seu banco de dados.
#!/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()Este exemplo cria o script
python1.py. O script define uma funçãogsf_main(argc, argv)do Python que aceita argumentos de um job do Scheduler, cria uma tabela no banco de dados com os atributos fornecidos e trata exceções.O driver
oracledbpermite que o script se conecte ao banco de dados.O pacote
utilsfornece uma função auxiliargetconnection()para obter uma conexão de banco de dados.
Consulte a documentação do Python para obter mais informações.
Tópico principal: Chamar Scripts Python com WITH_CONTEXT no Autonomous AI Database
Configurar Imagem do Contêiner EXTPROC do Oracle Autonomous AI Database
Descreve as etapas para obter e configurar a imagem do contêiner EXTPROC do Oracle Autonomous AI Database.
Uma imagem de contêiner do Autonomous AI Database fornecida pela Oracle com o agente EXTPROC instalado é hospedada nos pacotes GitHub. Consulte GitHub README para obter instruções e configurar a imagem do contêiner EXTPROC.
Tópico principal: Chamar Scripts Python com WITH_CONTEXT no Autonomous AI Database
Fazer Upload da Wallet para Criar Conexão Segura com a Instância do Agente EXTPROC
Uma wallet autoassinada é criada como parte da criação do aplicativo do agente do Autonomous AI Database EXTPROC. Essa wallet permite que você acesse a instância do agente Extrpoc.
EXTPROC, o Autonomous AI Database e o agente EXTPROC se conectam usando mTLS (Mutual Transport Layer Security). Ao usar o mTLS (Mutual Transport Layer Security), os clientes se conectam por meio de uma conexão do banco de Dados TCPS (Secure TCP) usando o TLS 1.2 padrão com um certificado da autoridade de certificado (CA) do cliente confiável. Consulte Sobre a Conexão com uma Instância do Autonomous AI Database para obter mais informações.
Você também pode obter e usar um certificado público emitido por uma Autoridade de Certificação (CA).
Primeiro, exporte a wallet para o serviço Object Storage do diretório /u01/app/oracle/extproc_wallet na VM em que o EXTPROC é executado.
Siga estas etapas para fazer upload da wallet para o Autonomous AI Database:
Tópico principal: Chamar Scripts Python com WITH_CONTEXT no Autonomous AI Database
Etapas para Chamar Scripts Python
Mostra as etapas para chamar scripts Python em um Autonomous AI Database.
Depois de configurar a instância do agente EXTPROC para executar scripts Python, você registra um ponto final remoto e cria jobs do Scheduler para chamar os scripts.
Estes são os pré-requisitos para chamar scripts Python no Autonomous AI Database:
-
Os scripts Python devem ser copiados para a instância do agente EXTPROC.
-
Para criar e gerenciar jobs do Scheduler para chamar scripts Python com um usuário diferente de ADMIN, você deve ter os seguintes privilégios:
-
MANAGE SCHEDULER -
CREATE JOB -
Privilégio no ponto final remoto registrado
-
Tópicos
- Registrar e Gerenciar Ponto Final Remoto no Autonomous AI Database
Como usuário ADMIN, execute as etapas a seguir para registrar e gerenciar pontos finais remotos no Autonomous AI Database. - Criar e Gerenciar Jobs do Scheduler para Chamar Scripts Python
Mostra as etapas para criar e gerenciar jobs do scheduler para chamar scripts Python do Autonomous AI Database.
Tópico principal: Chamar Scripts Python com WITH_CONTEXT no Autonomous AI Database
Registrar e Gerenciar Ponto Final Remoto no Autonomous AI Database
Como usuário ADMIN, execute as etapas a seguir para registrar e gerenciar pontos finais remotos no Autonomous AI Database.
Registrar um Ponto Final Remoto
Use DBMS_CLOUD_FUNCTION_ADMIN.REGISTER_REMOTE_EXECUTION_ENV para registrar um ponto final remoto.
Exemplo:
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;
/Este exemplo cria a biblioteca rem_executable e registra a instância do agente EXTPROC especificada no parâmetro remote_endpoint_url no seu Autonomous AI Database. A instância do agente EXTPROC é pré-configurada para hospedar scripts Python na porta 16000.
Consulte REGISTER_REMOTE_EXECUTION_ENV Procedures para obter mais informações.
Gerenciar Privilégios em um Ponto Final Registrado
Essa etapa é opcional e só é necessária quando um usuário diferente do ADMIN precisa chamar scripts Python do Autonomous AI Database.
Use DBMS_CLOUD_FUNCTION_ADMIN.GRANT_REMOTE_EXECUTION_ENV para conceder privilégio no ponto final registrado a um usuário diferente do ADMIN.
Exemplo:
BEGIN
DBMS_CLOUD_FUNCTION_ADMIN.GRANT_REMOTE_EXECUTION_ENV (
remote_endpoint_name => 'REM_EXECUTABLE',
user_name => 'username');
END;
/Este exemplo concede privilégio em REM_EXECUTABLE para o usuário especificado. Consulte GRANT_REMOTE_EXECUTION_ENV Procedures para obter mais informações.
Depois de conceder privilégio no ponto final registrado, você poderá usar DBMS_CLOUD_FUNCTION_ADMIN.REVOKE_REMOTE_EXECUTION_ENV para revogar o privilégio no ponto final registrado em um usuário.
Exemplo:
BEGIN
DBMS_CLOUD_FUNCTION_ADMIN.REVOKE_REMOTE_EXECUTION_ENV (
remote_endpoint_name => 'REM_EXECUTABLE',
user_name => 'username');
END;
/Este exemplo revoga o privilégio em REM_EXECUTABLE do usuário especificado. Consulte REVOKE_REMOTE_EXECUTION_ENV Procedures para obter mais informações.
Você pode consultar o DBA_CLOUD_FUNCTION_REMOTE_EXECUTION_GRANT para listar as permissões concedidas para todos os pontos finais remotos. Consulte DBA_CLOUD_FUNCTION_REMOTE_EXECUTION_GRANT View para obter mais informações.
Remover um Ponto Final Registrado
Use DBMS_CLOUD_FUNCTION_ADMIN.DEREGISTER_REMOTE_EXECUTION_ENV para remover um ponto final remoto registrado.
Exemplo:
BEGIN
DBMS_CLOUD_FUNCTION_ADMIN.DEREGISTER_REMOTE_EXECUTION_ENV (
remote_endpoint_name => 'REM_EXECUTABLE');
END;
/Isso remove o ponto final remoto rem_executable do seu Autonomous AI Database. Consulte DEREGISTER_REMOTE_EXECUTION_ENV Procedures para obter mais informações.
Tópico principal: Etapas para Chamar Scripts Python
Criar e Gerenciar Jobs do Scheduler para Chamar Scripts Python
Mostra as etapas para criar e gerenciar jobs do scheduler para chamar scripts Python do Autonomous AI Database.
Tópico principal: Etapas para Chamar Scripts Python