Llamada a Procedimientos Externos como Funciones SQL
Muestra los pasos para llamar a procedimientos externos mediante PL/SQL en la base de datos.
- Visión general de procedimientos externos
Los procedimientos externos son funciones escritas en un lenguaje de tercera generación y que se pueden llamar desde PL/SQL o SQL como si fueran una rutina o función PL/SQL. - Acerca del uso de procedimientos externos en Autonomous Database
Puede llamar y utilizar procedimientos externos en Autonomous Database con funciones definidas por el usuario. - Definición del procedimiento C
Defina el procedimiento C mediante uno de estos prototipos. - Creación de un archivo de biblioteca compartida (.so)
Cree una biblioteca de objetos compartidos (archivo.so
). La biblioteca de objetos compartidos contiene el procedimiento C (procedimiento externo) que se definió en el paso anterior. - Obtener la aplicación de pila EXTPROC de OCI Marketplace
Muestra los pasos para obtener la aplicación de pilaEXTPROC
de OCI Marketplace. - Inicio de la aplicación de pila EXTPROC
Inicie la aplicación de pilaEXTPROC
desde la página Detalles de aplicación EXTPROC. - Crear pila para aplicación de agente EXTPROC
Muestra los pasos para crear pila para la instanciaEXTPROC
. - Carga de cartera para crear una conexión segura a la instancia de agente de EXTPROC
Se crea una cartera autofirmada como parte de la creación de la aplicación de agenteEXTPROC
. Esta cartera permite acceder a la instancia de agenteExtrpoc
. - Pasos para llamar a un procedimiento externo como función SQL
Muestra los pasos para llamar a un procedimiento externo como función SQL.
Tema principal: Llamada a funciones definidas por el usuario
Visión general de procedimientos externos
Los procedimientos externos son funciones escritas en un lenguaje de tercera generación y que se pueden llamar desde PL/SQL o SQL como si fueran una rutina o función PL/SQL.
Los procedimientos externos promueven la reutilización, la eficiencia y la modularidad. Las bibliotecas de enlaces dinámicos (DLL) existentes escritas en otros lenguajes se pueden llamar desde programas PL/SQL. Las DLL se cargan solo cuando es necesario y se pueden mejorar sin afectar a los programas de llamada.
El uso de procedimientos externos también mejora el rendimiento, ya que los lenguajes de tercera generación realizan determinadas tareas de forma más eficaz que PL/SQL, que es más adecuado para el procesamiento de transacciones SQL.
Los procedimientos externos son útiles cuando:
-
Resolver problemas científicos y de ingeniería
-
Análisis de Datos
-
Control de dispositivos y procesos en tiempo real
Consulte Definición de Procedimiento Externo para obtener más información.
Tema principal: Llamada a procedimientos externos como funciones SQL
Acerca del uso de procedimientos externos en Autonomous Database
Puede llamar y utilizar procedimientos externos en Autonomous Database con funciones definidas por el usuario.
No instala procedimientos externos en una instancia de Autonomous Database. Para utilizar un procedimiento externo, el procedimiento se aloja de forma remota en una máquina virtual que se ejecuta en una red virtual en la nube (VCN) de Oracle Cloud Infrastructure.
Los procedimientos externos solo están soportados cuando Autonomous Database está en un punto final privado. La instancia de agente EXTPROC
se aloja en una subred privada y Autonomous Database accede al agente EXTPROC
a través de un punto final de conexión inversa (RCE).
Autonomous Database solo soporta procedimientos externos de lenguaje C.
Los procedimientos externos se despliegan mediante:
-
Una imagen de contenedor proporcionada por Oracle con el agente
EXTPROC
instalado y configurado como parte de la pila de Oracle Cloud Infrastructure (OCI) Marketplace.La instancia de agente
EXTPROC
se aloja de forma remota en una máquina virtual que se ejecuta en una red virtual en la nube (VCN) de Oracle Cloud Infrastructure. La comunicación segura entre Autonomous Database y la instancia de agenteEXTPROC
se garantiza mediante la definición de reglas de grupo de seguridad de red (NSG) para que el tráfico se permita desde la instancia de Autonomous Database que se ejecuta en un punto final privado a la instancia de agenteEXTPROC
.La imagen de agente
EXTPROC
está preconfigurada para alojar y ejecutar procedimientos externos en el puerto 16000. -
Procedimientos PL/SQL para crear una biblioteca y registrar y llamar a funciones y procedimientos externos.
Consulte DBMS_CLOUD_FUNCTION Package para obtener más información.
Siga estos pasos para llamar a un procedimiento externo en Autonomous Database:
-
Defina el procedimiento C. Consulte Define the C Procedure.
-
Cree una biblioteca de objetos compartidos (archivo
.so
). Consulte Creación de un archivo de biblioteca compartida (.so). -
Inicie la aplicación de pila
EXTPROC
de Autonomous Database. Consulte Obtención de la aplicación de pila EXTPROC de OCI Marketplace. -
Aprovisione y configure el agente
EXTPROC
de Oracle Autonomous Database. Consulte Creación de pila para la aplicación de agente EXTPROC para obtener más información. -
Configure Autonomous Database para conectarse a la instancia de agente
EXTPROC
. Consulte Carga de cartera para crear una conexión segura a la instancia de agente EXTPROC para obtener más información. -
Cree una biblioteca remota mediante
DBMS_CLOUD_FUNCTION.CREATE_CATALOG
. Consulte Pasos para llamar a un procedimiento externo como función SQL para obtener más información. -
Utilice la función definida por el usuario que ha creado en el paso anterior. Consulte Pasos para llamar a un procedimiento externo como función SQL para obtener más información.
Tema principal: Llamada a procedimientos externos como funciones SQL
Definición del procedimiento C
Defina el procedimiento C utilizando uno de estos prototipos.
-
Prototipos de estilo Kernighan & Ritchie. Por ejemplo:
void UpdateSalary(x) float x; ...
-
Prototipos ISO/ANSI distintos de los tipos de datos numéricos que son inferiores al ancho completo (como
float
,short
,char
). Por ejemplo:void UpdateSalary(double x) ...
-
Otros tipos de dato que no cambian de tamaño en las promociones de argumentos por defecto.
En este ejemplo se cambia el tamaño en las promociones de argumentos por defecto:
void UpdateSalary(float x) ...
Tema principal: Llamada a procedimientos externos como funciones SQL
Crear un archivo de biblioteca compartida (.so)
Cree una biblioteca de objetos compartidos (archivo .so
). La biblioteca de objetos compartidos contiene el procedimiento C (procedimiento externo) que se definió en el paso anterior.
Puede generar una biblioteca de objetos compartidos mediante el siguiente comando:
gcc -I/u01/app/oracle/extproc_libs/ -shared -fPIC -o extproc.so UpdateSalary.c
Esto crea la biblioteca de objetos compartidos (.so
), extproc.so
. El procedimiento UpdateSalary
, definido en el paso anterior, se encuentra en la biblioteca extproc.so
. Las bibliotecas de objetos compartidos (.so
) se cargan dinámicamente en tiempo de ejecución.
Tema principal: Llamada a procedimientos externos como funciones SQL
Obtén la aplicación de pila EXTPROC de OCI Marketplace
Muestra los pasos para obtener la aplicación de pila EXTPROC
de OCI Marketplace.
Tema principal: Llamada a procedimientos externos como funciones SQL
Iniciar aplicación de pila EXTPROC
Inicie la aplicación de pila EXTPROC
desde la página Detalles de aplicación de EXTPROC.
Esto le llevará a la página Crear pila que permite crear pila para el agente EXTPROC
.
Tema principal: Llamada a procedimientos externos como funciones SQL
Crear pila para aplicación de agente EXTPROC
Muestra los pasos para crear la pila para la instancia EXTPROC
.
Tema principal: Llamada a procedimientos externos como funciones SQL
Carga de Cartera para Crear Conexión Segura a la Instancia de Agente EXTPROC
Se crea una cartera autofirmada como parte de la creación de la aplicación de agente EXTPROC
. Esta cartera permite acceder a la instancia de agente Extrpoc
.
EXTPROC
, la instancia de Autonomous Database y el agente EXTPROC
se conectan mediante la seguridad de capa de transporte mutuo (mTLS). Al utilizar la seguridad de capa de transporte mutuo (mTLS), los clientes se conectan a través de una conexión de base de datos TCPS ( TCP seguro) mediante el uso del estándar TLS 1.2 con un certificado de autoridad de certificación (CA) de cliente de confianza. Consulte Acerca de la autenticación TLS mutua (mTLS) para obtener más información.
También puede obtener y utilizar un certificado público emitido por una autoridad de certificación (CA).
Como requisito, debe exportar la cartera a Object Storage desde el directorio /u01/app/oracle/extproc_wallet
de la máquina virtual donde se ejecuta EXTPROC
.
Siga estos pasos para cargar la cartera en Autonomous Database:
Tema principal: Llamada a procedimientos externos como funciones SQL
Pasos para Llamar a un Procedimiento Externo como Función SQL
Muestra los pasos para llamar a un procedimiento externo como una función SQL.
Después de iniciar la aplicación de pila EXTPROC
de OCI Marketplace y configurarla para ejecutar procedimientos externos, se crea una biblioteca de funciones de envoltorio SQL que hacen referencia a sus respectivos procedimientos externos y llaman a ellos.
Como requisito, las bibliotecas de la lista blanca se deben copiar en el directorio /u01/app/oracle/extproc_libs
de la VM EXTPROC
.
Tema principal: Llamada a procedimientos externos como funciones SQL