Stored procedure esterne per Amazon RDS per Db2 - Amazon Relational Database Service

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.

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 nella documentazione di IBM Db2.

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.

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’autorizzazione CREATE_EXTERNAL_ROUTINE a qualsiasi utente, gruppo o ruolo con l’autorità DBADM.

  • EXTERNAL_ROUTINE_DBAUTH: consente a un utente con l’autorità DBADM di concedere l’autorizzazione CREATE_EXTERNAL_ROUTINE a 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 nella documentazione di IBM Db2.

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
  1. 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.

  2. Imposta il valore per il parametro db2_alternate_authz_behaviour nel 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
  1. 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 sono db2-se-11.5 e db2-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_GROUP per 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"
  2. Modifica il parametro db2_alternate_authz_behaviour nel 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_GROUP impostando il valore di db2_alternate_authz_behaviour su EXTERNAL_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
  1. 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.

  2. Modifica il parametro db2_alternate_authz_behaviour nel 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:file_path',jar_ID)" per installarlo nel database RDS per Db2.

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 user master_username using master_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 user master_username using master_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
  1. Crea una tabella come TEST.TEST_TABLE nell’esempio seguente.

    db2 "create table TEST.TEST_TABLE(C1 char(6), C2 date)"
  2. Chiama la nuova stored procedure esterna. La chiamata restituisce lo stato 0.

    db2 "call TESTSP.MYJAVASP('test')" Return Status = 0
  3. 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