Richiama procedure esterne come funzioni SQL
Mostra i passi per richiamare le procedure esterne utilizzando PL/SQL nel 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. - Creare 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. - Ottieni l'applicazione stack OCI Marketplace EXTPROC
Mostra i passaggi per ottenere l'applicazione stack OCI MarketplaceEXTPROC
. - Avvia applicazione stack EXTPROC
Avvia l'applicazione stackEXTPROC
dalla pagina Dettagli applicazione EXTPROC. - Crea stack per l'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 come parte della creazione dell'applicazione dell'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 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 riusabilità, efficienza e 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 influenzare i programmi chiamanti.
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 sulle procedure esterne.
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 in 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 VCN (Virtual Cloud Network) di Oracle Cloud Infrastructure.
Le procedure esterne sono supportate solo quando Autonomous Database si trova su un endpoint privato. L'istanza dell'agente EXTPROC
è ospitata in una subnet privata e Autonomous Database accede all'agente EXTPROC
tramite un endpoint di connessione inversa (RCE).
Autonomous Database supporta solo procedure esterne in linguaggio C.
Le procedure esterne vengono distribuite utilizzando:
-
Un'immagine contenitore 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) di Oracle Cloud Infrastructure. La comunicazione sicura tra Autonomous Database e l'istanza dell'agenteEXTPROC
viene garantita impostando 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 per registrare e richiamare funzioni e procedure esterne.
Per ulteriori informazioni, vedere DBMS_CLOUD_FUNCTION Package.
Per richiamare una procedura esterna in Autonomous Database, effettuare le operazioni riportate di seguito.
-
Definire la procedura C. Vedere Definire la procedura C.
-
Creare una libreria di oggetti condivisi (file
.so
). Vedere Creazione di un file di libreria condivisa (.so). -
Avviare l'applicazione stack
EXTPROC
di Autonomous Database. Consulta Ottieni l'applicazione stack OCI Marketplace EXTPROC. -
Esegue il provisioning e configura l'agente
EXTPROC
di Oracle Autonomous Database. Per ulteriori informazioni, vedere Crea stack per l'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 che sono inferiori alla larghezza completa (ad esempio
float
,short
,char
). Ad esempio:void UpdateSalary(double x) ...
-
Altri tipi di dati che non modificano le dimensioni 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
Creare 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 al 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 OCI Marketplace EXTPROC Stack
Mostra i passi per ottenere l'applicazione stack EXTPROC
di OCI Marketplace.
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 l'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
Viene creato un wallet con firma automatica 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.
È anche 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
.
Per caricare il wallet in Autonomous Database, effettuare le operazioni riportate di seguito.
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 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
della VM EXTPROC
.
Argomento padre: Richiama procedure esterne come funzioni SQL