Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Stored procedure esterne per Amazon RDS per Db2
Puoi creare routine esterne e registrarle nei tuoi database Amazon RDS per Db2 come stored procedure esterne. Attualmente, RDS per Db2 supporta solo routine basate su Java per le stored procedure esterne.
Stored procedure esterne basate su Java
Le stored procedure esterne basate su Java sono routine Java esterne registrate nel database RDS per Db2 come stored procedure esterne.
Argomenti
Limitazioni per le stored procedure esterne basate su Java
Prima di sviluppare una routine esterna, considera le seguenti limitazioni e restrizioni.
Per creare una routine esterna, assicurati di utilizzare il Java Development Kit (JDK) fornito da Db2. Per ulteriori informazioni, consulta Java software support for Db2 database products
Il tuo programma Java può creare file solo nella directory /tmp e Amazon RDS non supporta l’abilitazione delle autorizzazioni di esecuzione o Set User ID (SUID) su questi file. Inoltre, il tuo programma Java non può utilizzare le chiamate di sistema socket o le seguenti chiamate di sistema:
_sysctl
acct
afs_syscall
bpf
capset
chown
chroot
create_module
delete_module
fanotify_init
fanotify_mark
finit_module
fsconfig
fsopen
fspick
get_kernel_syms
getpmsg
init_module
mount
move_mount
nfsservctl
open_by_handle_at
open_tree
pivot_root
putpmsg
query_module
quotactl
reboot
security
setdomainname
setfsuid
sethostname
sysfs
tuxcall
umount2
uselib
ustat
vhangup
vserver
Per ulteriori restrizioni sulle routine esterne per Db2, consulta Restrictions on external routines
Configurazione di stored procedure esterne basate su Java
Per configurare una stored procedure esterna, crea un file .jar con la routine esterna, installalo nel database RDS per Db2, quindi registralo come stored procedure esterna.
Argomenti
Fase 1: abilitare le stored procedure esterne
Per abilitare le stored procedure esterne, in un gruppo di parametri associato all’istanza database, imposta il parametro db2_alternate_authz_behaviour su uno dei seguenti valori:
EXTERNAL_ROUTINE_DBADM: concede implicitamente l’autorizzazioneCREATE_EXTERNAL_ROUTINEa qualsiasi utente, gruppo o ruolo con l’autoritàDBADM.EXTERNAL_ROUTINE_DBAUTH: consente a un utente con l’autoritàDBADMdi concedere l’autorizzazioneCREATE_EXTERNAL_ROUTINEa qualsiasi utente, gruppo o ruolo. In questo caso, a nessun utente, gruppo o ruolo viene implicitamente concessa questa autorizzazione, nemmeno a un utente con l’autoritàDBADM.
Per ulteriori informazioni su questa impostazione, consulta GRANT (database authorities) statement
Puoi creare e modificare un’istanza database utilizzando la Console di gestione AWS, la AWS CLI o l’API Amazon RDS.
Per configurare il parametro db2_alternate_authz_behaviour in un gruppo di parametri personalizzato
-
Se desideri utilizzare un gruppo di parametri di database personalizzato diverso da quello utilizzato dall’istanza database, crea un nuovo gruppo di parametri di database. Se utilizzi il modello di uso di licenze proprie (BYOL), assicurati che il nuovo gruppo di parametri personalizzato includa gli ID IBM. Per ulteriori informazioni su questi ID, consulta ID IBM per l’uso di licenze proprie (BYOL) per Db2. Per ulteriori informazioni sulla creazione di un gruppo di parametri database, consulta Creazione di un gruppo di parametri database in Amazon RDS.
-
Imposta il valore per il parametro
db2_alternate_authz_behaviournel tuo gruppo di parametri personalizzato. Per ulteriori informazioni sulla modifica di un gruppo di parametri, consulta Modifica dei parametri in un gruppo di parametri database in Amazon RDS.
Per configurare il parametro db2_alternate_authz_behaviour in un gruppo di parametri personalizzato
-
Se desideri utilizzare un gruppo di parametri di database personalizzato diverso da quello utilizzato dall’istanza database, crea un gruppo di parametri di database eseguendo il comando create-db-parameter-group. Se utilizzi il modello di uso di licenze proprie (BYOL), assicurati che il nuovo gruppo di parametri personalizzato includa gli ID IBM. Per ulteriori informazioni su questi ID, consulta ID IBM per l’uso di licenze proprie (BYOL) per Db2.
Includi le seguenti opzioni obbligatorie:
-
--db-parameter-group-name: un nome per il gruppo di parametri che stai creando. -
--db-parameter-group-family: l’edizione e la versione principale del motore Db2. I valori validi sonodb2-se-11.5edb2-ae-11.5. -
--description: una descrizione di questo gruppo di parametri.
Per ulteriori informazioni sulla creazione di un gruppo di parametri database, consulta Creazione di un gruppo di parametri database in Amazon RDS.
L’esempio seguente mostra come creare un gruppo di parametri personalizzato denominato
MY_EXT_SP_PARAM_GROUPper la famiglia di gruppi di parametridb2-se-11.5.Per Linux, macOS o Unix:
aws rds create-db-parameter-group \ --region us-east-1 \ --db-parameter-group-name MY_EXT_SP_PARAM_GROUP \ --db-parameter-group-family db2-se-11.5 \ --description "test db2 external routines"Per Windows:
aws rds create-db-parameter-group ^ --region us-east-1 ^ --db-parameter-group-name MY_EXT_SP_PARAM_GROUP ^ --db-parameter-group-family db2-se-11.5 ^ --description "test db2 external routines" -
-
Modifica il parametro
db2_alternate_authz_behaviournel gruppo di parametri personalizzato eseguendo il comando modify-db-parameter-group.Includi le seguenti opzioni obbligatorie:
-
--db-parameter-group-name: il nome del gruppo di parametri creato. -
--parameters: un array di nomi di parametri, valori e metodi di applicazione per l’aggiornamento del parametro.
Per ulteriori informazioni sulla modifica di un gruppo di parametri, consulta Modifica dei parametri in un gruppo di parametri database in Amazon RDS.
L’esempio seguente mostra come modificare il gruppo di parametri
MY_EXT_SP_PARAM_GROUPimpostando il valore didb2_alternate_authz_behavioursuEXTERNAL_ROUTINE_DBADM.Per Linux, macOS o Unix:
aws rds modify-db-parameter-group \ --db-parameter-group-name MY_EXT_SP_PARAM_GROUP \ --parameters "ParameterName='db2_alternate_authz_behaviour',ParameterValue='EXTERNAL_ROUTINE_DBADM',ApplyMethod=immediate"Per Windows:
aws rds modify-db-parameter-group ^ --db-parameter-group-name MY_EXT_SP_PARAM_GROUP ^ --parameters "ParameterName='db2_alternate_authz_behaviour',ParameterValue='EXTERNAL_ROUTINE_DBADM',ApplyMethod=immediate" -
Per configurare il parametro db2_alternate_authz_behaviour in un gruppo di parametri personalizzato
-
Se desideri utilizzare un gruppo di parametri di database personalizzato diverso da quello utilizzato dall’istanza database, crea un nuovo gruppo di parametri di database utilizzando l’operazione CreateDBParameterGroup dell’API Amazon RDS. Se utilizzi il modello di uso di licenze proprie (BYOL), assicurati che il nuovo gruppo di parametri personalizzato includa gli ID IBM Db2. Per ulteriori informazioni su questi ID, consulta ID IBM per l’uso di licenze proprie (BYOL) per Db2.
Includi i parametri obbligatori seguenti:
-
DBParameterGroupName -
DBParameterGroupFamily -
Description
Per ulteriori informazioni sulla creazione di un gruppo di parametri database, consulta Creazione di un gruppo di parametri database in Amazon RDS.
-
-
Modifica il parametro
db2_alternate_authz_behaviournel gruppo di parametri personalizzato che hai creato utilizzando l’operazione ModifyDBParameterGroup dell’API RDS.Includi i parametri obbligatori seguenti:
-
DBParameterGroupName -
Parameters
Per ulteriori informazioni sulla modifica di un gruppo di parametri, consulta Modifica dei parametri in un gruppo di parametri database in Amazon RDS.
-
Fase 2: installare il file .jar con la routine esterna
Dopo aver creato la routine Java, crea il file .jar ed esegui db2 "call sqlj.install_jar('file: per installarlo nel database RDS per Db2.file_path',jar_ID)"
L’esempio seguente mostra come creare una routine Java e installarla su un database RDS per Db2. L’esempio include un codice di esempio per una semplice routine da utilizzare per testare il processo. In questo esempio si presume quanto segue:
Il codice Java viene compilato su un server in cui è installato Db2. Si tratta di una best practice perché la mancata compilazione con il JDK fornito da IBM può causare errori imprevisti.
Il database RDS per Db2 è catalogato localmente sul server.
Se desideri provare il processo con il seguente codice di esempio, copialo e salvalo in un file denominato MYJAVASP.java.
import java.sql.*; public class MYJAVASP { public static void my_JAVASP (String inparam) throws SQLException, Exception { try { // Obtain the calling context's connection details. Connection myConn = DriverManager.getConnection("jdbc:default:connection"); String myQuery = "INSERT INTO TEST.TEST_TABLE VALUES (?, CURRENT DATE)"; PreparedStatement myStmt = myConn.prepareStatement(myQuery); myStmt.setString(1, inparam); myStmt.executeUpdate(); } catch (SQLException sql_ex) { throw sql_ex; } catch (Exception ex) { throw ex; } }
Il comando seguente compila la routine Java.
~/sqllib/java/jdk64/bin/javac MYJAVASP.java
Il comando seguente crea il file .jar.
~/sqllib/java/jdk64/bin/jar cvf MYJAVASP.jar MYJAVASP.class
I comandi seguenti effettuano la connessione al database denominato MY_DB2_DATABASE e installano il file .jar.
db2 "connect to MY_DB2_DATABASE usermaster_usernameusingmaster_password" db2 "call sqlj.install_jar('file:/tmp/MYJAVASP.jar','MYJAVASP')" db2 "call sqlj.refresh_classes()"
Fase 3: registrare la stored procedure esterna
Dopo aver installato il file .jar nel database RDS per Db2, registralo come stored procedure eseguendo il comando db2 CREATE PROCEDURE o db2
REPLACE PROCEDURE.
L’esempio seguente mostra come connettersi al database e registrare la routine Java creata nel passaggio precedente come stored procedure.
db2 "connect to MY_DB2_DATABASE usermaster_usernameusingmaster_password" create procedure TESTSP.MYJAVASP (in input char(6)) specific myjavasp dynamic result sets 0 deterministic language java parameter style java no dbinfo fenced threadsafe modifies sql data program type sub external name 'MYJAVASP!my_JAVASP';
Fase 4: convalidare la stored procedure esterna
Utilizza la procedura seguente per testare la stored procedure esterna di esempio che è stata registrata nel passaggio precedente.
Per convalidare la stored procedure esterna
-
Crea una tabella come
TEST.TEST_TABLEnell’esempio seguente.db2 "create table TEST.TEST_TABLE(C1 char(6), C2 date)" -
Chiama la nuova stored procedure esterna. La chiamata restituisce lo stato
0.db2 "call TESTSP.MYJAVASP('test')" Return Status = 0 -
Esegui una query sulla tabella creata nel passaggio 1 per verificare i risultati della chiamata alla stored procedure.
db2 "SELECT * from TEST.TEST_TABLE"La query produce un output simile all’esempio seguente:
C1 C2 ------ ---------- test 02/05/2024