Richiama procedure esterne come funzioni SQL
Mostra i passi per richiamare le procedure esterne utilizzando PL/SQL all'interno del database.
- Panoramica sulle procedure esterne
Le procedure esterne sono funzioni scritte in un linguaggio di terza generazione e richiamabili dall'interno di PL/SQL o SQL come se fossero una routine o una funzione PL/SQL. - Informazioni sull'uso delle procedure esterne in Autonomous Database
È possibile richiamare e utilizzare procedure esterne in Autonomous Database con funzioni definite dall'utente. - Definire la procedura C
Definire la procedura C utilizzando uno di questi prototipi. - Creazione di un file di libreria condivisa (.so)
Creazione di una libreria di oggetti condivisi (file.so
). La libreria di oggetti condivisi contiene la procedura C (procedura esterna) definita nel passo precedente. - Ottieni l'applicazione stack EXTPROC di OCI Marketplace
Mostra i passi per ottenere l'applicazione stackEXTPROC
di OCI Marketplace. - Avvia applicazione stack EXTPROC
Avviare l'applicazione stackEXTPROC
dalla pagina Dettagli applicazione EXTPROC. - Crea stack per applicazione agente EXTPROC
Mostra i passi per creare lo stack per l'istanzaEXTPROC
. - Carica wallet per creare una connessione sicura all'istanza dell'agente EXTPROC
Un wallet con firma automatica viene creato nell'ambito della creazione dell'applicazione agenteEXTPROC
. Questo wallet consente di accedere all'istanza dell'agenteExtrpoc
. - Passi per richiamare una procedura esterna come funzione SQL
Mostra i passi per richiamare una procedura esterna come funzione SQL.
Argomento padre: Richiama funzioni definite dall'utente
Panoramica delle procedure esterne
Le procedure esterne sono funzioni scritte in un linguaggio di terza generazione e richiamabili dall'interno di PL/SQL o SQL come se fossero una routine o una funzione PL/SQL.
Le procedure esterne promuovono la riutilizzabilità, l'efficienza e la modularità. Le librerie di collegamenti dinamici esistenti (DLL) scritte in altre lingue possono essere richiamate dai programmi PL/SQL. Le DLL vengono caricate solo quando necessario e possono essere migliorate senza influire sui programmi di chiamata.
L'utilizzo di procedure esterne migliora anche le prestazioni, poiché i linguaggi di terza generazione eseguono determinati task in modo più efficiente rispetto a PL/SQL, che è più adatto per l'elaborazione delle transazioni SQL.
Le procedure esterne sono utili quando:
-
Risolvere problemi scientifici e ingegneristici
-
Analisi dei dati
-
Controllo di dispositivi e processi in tempo reale
Per ulteriori informazioni, vedere Informazioni su una procedura esterna.
Argomento padre: Richiama procedure esterne come funzioni SQL
Informazioni sull'uso delle procedure esterne in Autonomous Database
È possibile richiamare e utilizzare procedure esterne in Autonomous Database con funzioni definite dall'utente.
Non si installano procedure esterne su un'istanza di Autonomous Database. Per utilizzare una procedura esterna, la procedura viene gestita in hosting in remoto su una VM in esecuzione in una rete cloud virtuale (VCN) Oracle Cloud Infrastructure.
Le procedure esterne sono supportate solo quando Autonomous Database si trova in un endpoint privato. L'istanza dell'agente EXTPROC
viene gestita in hosting in una subnet privata e Autonomous Database accede all'agente EXTPROC
tramite un endpoint di connessione inversa (RCE).
Autonomous Database supporta solo le procedure esterne in linguaggio C.
Le procedure esterne vengono distribuite utilizzando:
-
Un'immagine container fornita da Oracle con l'agente
EXTPROC
installata e configurata come parte dello stack Oracle Cloud Infrastructure (OCI) Marketplace.L'istanza dell'agente
EXTPROC
viene gestita in hosting in remoto su una VM in esecuzione in una rete cloud virtuale (VCN) Oracle Cloud Infrastructure. La comunicazione sicura tra l'istanza dell'agente Autonomous Database eEXTPROC
viene garantita impostando le regole del gruppo di sicurezza di rete (NSG) in modo che il traffico sia consentito dall'istanza di Autonomous Database in esecuzione su un endpoint privato all'istanza dell'agenteEXTPROC
.L'immagine dell'agente
EXTPROC
è preconfigurata per ospitare ed eseguire procedure esterne sulla porta 16000. -
Procedure PL/SQL per creare una libreria e registrare e richiamare funzioni e procedure esterne.
Per ulteriori informazioni, vedere DBMS_CLOUD_FUNCTION Package.
Attenersi alla procedura riportata di seguito per richiamare una procedura esterna su Autonomous Database.
-
Definire la procedura C. Vedere Definire la procedura C.
-
Creare una libreria di oggetti condivisi (file
.so
). Vedere Create a Shared Library (.so) File -
Avviare l'applicazione dello stack
EXTPROC
di Autonomous Database. Vedere Ottieni l'applicazione stack EXTPROC di OCI Marketplace. -
Esegui il provisioning e la configurazione dell'agente
EXTPROC
di Oracle Autonomous Database. Per ulteriori informazioni, vedere Crea stack per applicazione agente EXTPROC. -
Configurare Autonomous Database per connettersi all'istanza dell'agente
EXTPROC
. Per ulteriori informazioni, vedere Carica wallet per creare una connessione sicura all'istanza dell'agente EXTPROC. -
Creare una libreria remota utilizzando
DBMS_CLOUD_FUNCTION.CREATE_CATALOG
. Per ulteriori informazioni, vedere Passi per richiamare una procedura esterna come funzione SQL. -
Utilizzare la funzione definita dall'utente creata nel passo precedente. Per ulteriori informazioni, vedere Passi per richiamare una procedura esterna come funzione SQL.
Argomento padre: Richiama procedure esterne come funzioni SQL
Definizione della procedura C
Definire la procedura C utilizzando uno di questi prototipi.
-
prototipi in stile Kernighan & Ritchie. Ad esempio:
void UpdateSalary(x) float x; ...
-
Prototipi ISO/ANSI diversi dai tipi di dati numerici inferiori alla larghezza completa (ad esempio
float
,short
,char
). Ad esempio:void UpdateSalary(double x) ...
-
Altri tipi di dati che non modificano la dimensione nelle promozioni argomenti predefinite.
Questo esempio modifica le dimensioni nelle promozioni argomenti predefinite:
void UpdateSalary(float x) ...
Argomento padre: Richiama procedure esterne come funzioni SQL
Creazione di un file di libreria condivisa (.so)
Creare una libreria di oggetti condivisi (file .so
). La libreria di oggetti condivisi contiene la procedura C (procedura esterna) definita nel passo precedente.
È possibile generare una libreria di oggetti condivisi utilizzando il comando seguente:
gcc -I/u01/app/oracle/extproc_libs/ -shared -fPIC -o extproc.so UpdateSalary.c
In questo modo viene creato l'oggetto condiviso (.so
), la libreria extproc.so
. La procedura UpdateSalary
, definita nel passo precedente, è contenuta nella libreria extproc.so
. Le librerie di oggetti condivisi (.so
) vengono caricate in modo dinamico in fase di esecuzione.
Argomento padre: Richiama procedure esterne come funzioni SQL
Scarica l'applicazione stack EXTPROC OCI Marketplace
Mostra i passi per ottenere l'applicazione stack EXTPROC
Marketplace OCI.
Argomento padre: Richiama procedure esterne come funzioni SQL
Avvia applicazione stack EXTPROC
Avviare l'applicazione stack EXTPROC
dalla pagina Dettagli applicazione EXTPROC.
Viene visualizzata la pagina Crea stack, che consente di creare lo stack per l'agente EXTPROC
.
Argomento padre: Richiama procedure esterne come funzioni SQL
Crea stack per applicazione agente EXTPROC
Mostra i passi per creare lo stack per l'istanza EXTPROC
.
Argomento padre: Richiama procedure esterne come funzioni SQL
Carica wallet per creare una connessione sicura all'istanza dell'agente EXTPROC
Un wallet con firma automatica viene creato nell'ambito della creazione dell'applicazione agente EXTPROC
. Questo wallet consente di accedere all'istanza dell'agente Extrpoc
.
EXTPROC
, l'agente Autonomous Database e EXTPROC
si connettono utilizzando Mutual Transport Layer Security (mTLS). Quando si utilizza mTLS (Mutual Transport Layer Security), i client si connettono tramite una connessione al database TCPS (Secure TCP) utilizzando la versione TLS 1.2 standard con un certificato CA (Certificate Authority) client affidabile. Per ulteriori informazioni, vedere Informazioni sulla connessione a un'istanza di Autonomous Database.
È inoltre possibile ottenere e utilizzare un certificato pubblico emesso da un'autorità di certificazione (CA).
Come prerequisito, è necessario esportare il wallet nello storage degli oggetti dalla directory /u01/app/oracle/extproc_wallet
nella VM in cui viene eseguito EXTPROC
.
Attenersi alla procedura riportata di seguito per caricare il wallet in Autonomous Database.
Argomento padre: Richiama procedure esterne come funzioni SQL
Passi per richiamare una procedura esterna come funzione SQL
Mostra i passi per richiamare una procedura esterna come funzione SQL.
Dopo aver avviato l'applicazione dello stack EXTPROC
di OCI Marketplace e averla configurata per eseguire procedure esterne, è possibile creare una libreria di funzioni wrapper SQL che fanno riferimento e richiamano le rispettive procedure esterne.
Come prerequisito, le librerie nella lista di inclusione devono essere copiate nella directory /u01/app/oracle/extproc_libs
sulla VM EXTPROC
.
Argomento padre: Richiama procedure esterne come funzioni SQL