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à.
Puoi creare routine esterne e registrarle con i tuoi database Amazon RDS for Db2 come stored procedure esterne. Attualmente, RDS for Db2 supporta solo routine basate su Java per procedure archiviate esterne.
Procedure archiviate esterne basate su Java
Le stored procedure esterne basate su Java sono routine Java esterne registrate nel database RDS for Db2 come stored procedure esterne.
Argomenti
Limitazioni per le stored procedure esterne basate su Java
Prima di sviluppare una routine esterna, considerate le seguenti limitazioni e restrizioni.
Per creare una routine esterna, assicuratevi di utilizzare il Java Development Kit (JDK) fornito da Db2. Per ulteriori informazioni, consultate Supporto software Java per i prodotti di database Db2
Il tuo programma Java può creare file solo nella /tmp
directory e Amazon RDS non supporta l'abilitazione delle autorizzazioni eseguibili 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 Restrizioni sulle routine esterne nella documentazione
Configurazione di stored procedure esterne basate su Java
Per configurare una stored procedure esterna, create un file.jar con la routine esterna, installatelo nel database RDS for Db2, quindi registratelo come stored procedure esterna.
Argomenti
Passaggio 1: abilitare le stored procedure esterne
Per abilitare le stored procedure esterne, in un gruppo di parametri personalizzato associato all'istanza DB, imposta il parametro db2_alternate_authz_behaviour
su uno dei seguenti valori:
EXTERNAL_ROUTINE_DBADM
— Concede implicitamente l'autorizzazione a qualsiasi utente, gruppo o ruolo conDBADM
autorità.CREATE_EXTERNAL_ROUTINE
EXTERNAL_ROUTINE_DBAUTH
— Consente a un utente autorizzato di concedereDBADM
l'CREATE_EXTERNAL_ROUTINE
autorizzazione a qualsiasi utente, gruppo o ruolo. In questo caso, a nessun utente, gruppo o ruolo viene implicitamente concessa questa autorizzazione, nemmeno a un utente conDBADM
autorità.
Per ulteriori informazioni su questa impostazione, vedere l'istruzione GRANT (autorità del database)
Puoi creare e modificare un gruppo di parametri personalizzato utilizzando l' AWS Management Console AWS CLI, la o l'API Amazon RDS.
Per configurare il parametro db2_alternate_authz_behavior in un gruppo di parametri personalizzato
-
Se desideri utilizzare un gruppo di parametri DB personalizzati diverso da quello utilizzato dall'istanza DB, crea un nuovo gruppo di parametri DB. Se utilizzi il modello Bring Your Own License (BYOL), assicurati che il nuovo gruppo di parametri personalizzati includa gli IBM ID. Per informazioni su questi ID, consulta. IBM IDsper Bring Your Own License for Db2 Per ulteriori informazioni sulla creazione di un gruppo di parametri database, consulta Creazione di un gruppo di parametri DB in Amazon RDS.
-
Imposta il valore per il
db2_alternate_authz_behaviour
parametro nel tuo gruppo di parametri personalizzato. Per ulteriori informazioni sulla modifica di un gruppo di parametri, vedereModifica dei parametri in un gruppo di parametri DB in Amazon RDS .
Per configurare il parametro db2_alternate_authz_behavior in un gruppo di parametri personalizzato
-
Se desideri utilizzare un gruppo di parametri DB personalizzati diverso da quello utilizzato dall'istanza DB, crea un gruppo di parametri personalizzato eseguendo il comando. create-db-parameter-group Se utilizzi il modello Bring Your Own License (BYOL), assicurati che il nuovo gruppo di parametri personalizzati includa gli IBM ID. Per informazioni su questi ID, consulta. IBM IDsper Bring Your Own License for Db2
Includi le seguenti opzioni obbligatorie:
-
--db-parameter-group-name
— Un nome per il gruppo di parametri che state creando. -
--db-parameter-group-family
— L'edizione e la versione principale del motore Db2. I valori validi sonodb2-se-11.5
edb2-ae-11.5
. -
--description
— Una descrizione per questo gruppo di parametri.
Per ulteriori informazioni sulla creazione di un gruppo di parametri database, consulta Creazione di un gruppo di parametri DB in Amazon RDS.
L'esempio seguente mostra come creare un gruppo di parametri personalizzato denominato
MY_EXT_SP_PARAM_GROUP
per la famiglia del gruppo di parametridb2-se-11.5
.Per LinuxmacOS, oUnix:
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
db2_alternate_authz_behaviour
parametro nel gruppo di parametri personalizzato eseguendo il modify-db-parameter-groupcomando.Includi le seguenti opzioni obbligatorie:
-
--db-parameter-group-name
— Il nome del gruppo di parametri creato. -
--parameters
— Una matrice di nomi di parametri, valori e metodi di applicazione per l'aggiornamento dei parametri.
Per ulteriori informazioni sulla modifica di un gruppo di parametri, vedereModifica dei parametri in un gruppo di parametri DB in Amazon RDS .
L'esempio seguente mostra come modificare il gruppo di parametri
MY_EXT_SP_PARAM_GROUP
impostando il valore didb2_alternate_authz_behaviour
toEXTERNAL_ROUTINE_DBADM
.Per LinuxmacOS, oUnix:
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_behavior in un gruppo di parametri personalizzato
-
Se desideri utilizzare un gruppo di parametri DB personalizzato diverso da quello utilizzato dall'istanza DB, crea un nuovo gruppo di parametri DB utilizzando l'CreateDBParameterGroupoperazione API Amazon RDS. Se utilizzi il modello Bring Your Own License (BYOL), assicurati che il nuovo gruppo di parametri personalizzati includa gli ID. IBM Db2 Per informazioni su questi ID, consulta. IBM IDsper Bring Your Own License for 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 DB in Amazon RDS.
-
-
Modifica il
db2_alternate_authz_behaviour
parametro nel gruppo di parametri personalizzato che hai creato utilizzando l'ModifyDBParameterGroupoperazione dell'API RDS.Includi i parametri obbligatori seguenti:
-
DBParameterGroupName
-
Parameters
Per ulteriori informazioni sulla modifica di un gruppo di parametri, vedere. Modifica dei parametri in un gruppo di parametri DB in Amazon RDS
-
Fase 2: Installare il file.jar con la routine esterna
Dopo aver creato la routine Java, create il file.jar ed eseguitelo db2 "call sqlj.install_jar('file:
per installarlo nel database RDS for Db2.file_path
',jar_ID
)"
L'esempio seguente mostra come creare una routine Java e installarla su un database RDS for Db2. L'esempio include un codice di esempio per una routine semplice che è possibile utilizzare per testare il processo. In questo esempio si basano i seguenti presupposti:
Il codice Java è compilato su un server in cui è installato Db2. Si tratta di una procedura consigliata perché la mancata compilazione con il JDK fornito da IBM può causare errori inspiegabili.
Il database RDS for 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 si connettono al database denominato MY_DB2_DATABASE
e installano il file.jar.
db2 "connect to MY_DB2_DATABASE user
master_username
usingmaster_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 for Db2, registralo come stored procedure eseguendo il db2 CREATE PROCEDURE
comando or. 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 user
master_username
usingmaster_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: Convalida della stored procedure esterna
Utilizzate i seguenti passaggi per testare la procedura di memorizzazione esterna del campione registrata nel passaggio precedente.
Per convalidare la stored procedure esterna
-
Crea una tabella come
TEST.TEST_TABLE
nell'esempio seguente.db2 "create table TEST.TEST_TABLE(C1 char(6), C2 date)"
-
Richiama la nuova stored procedure esterna. La chiamata restituisce lo stato di
0
.db2 "call TESTSP.MYJAVASP('test')" Return Status = 0
-
Interroga la 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