Procedure archiviate esterne per Amazon RDS for 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à.

Procedure archiviate esterne per Amazon RDS for Db2

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.

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. IBM Db2

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.

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 con DBADM autorità. CREATE_EXTERNAL_ROUTINE

  • EXTERNAL_ROUTINE_DBAUTH— Consente a un utente autorizzato di concedere DBADM l'CREATE_EXTERNAL_ROUTINEautorizzazione 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 DBADM autorità.

Per ulteriori informazioni su questa impostazione, vedere l'istruzione GRANT (autorità del database) nella IBM Db2 documentazione.

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
  1. 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. IBMID per Bring Your Own License for Db2 Per ulteriori informazioni sulla creazione di un gruppo di parametri database, consulta Creazione di un gruppo di parametri del database.

  2. 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 di parametri in un gruppo di parametri del database.

Per configurare il parametro db2_alternate_authz_behavior in un gruppo di parametri personalizzato
  1. 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. IBMID per 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 sono db2-se-11.5 e db2-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 del database.

    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"
  2. 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 di parametri in un gruppo di parametri del database.

    L'esempio seguente mostra come modificare il gruppo di parametri MY_EXT_SP_PARAM_GROUP impostando il valore di db2_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
  1. 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. IBMID per 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 del database.

  2. 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 di parametri in un gruppo di parametri del database

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:file_path',jar_ID)" per installarlo nel database RDS for Db2.

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 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 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 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: 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
  1. Crea una tabella come TEST.TEST_TABLE nell'esempio seguente.

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

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