Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Procédures stockées externes pour Amazon RDS pour DB2
Vous pouvez créer des routines externes et les enregistrer dans vos bases de données Amazon RDS pour DB2 en tant que procédures stockées externes. Actuellement, RDS pour Db2 ne prend en charge que les routines basées sur Java pour les procédures stockées externes.
Procédures stockées externes basées sur Java
Les procédures stockées externes basées sur Java sont des routines Java externes que vous enregistrez dans votre base de données RDS pour DB2 en tant que procédures stockées externes.
Rubriques
Limitations des procédures stockées externes basées sur Java
Avant de développer votre routine externe, tenez compte des limites et restrictions suivantes.
Pour créer votre routine externe, assurez-vous d'utiliser le kit de développement Java (JDK) fourni par Db2. Pour plus d'informations, consultez la section Support logiciel Java pour les produits de base de données DB2
Votre programme Java peut créer des fichiers uniquement dans le /tmp
répertoire, et Amazon RDS ne prend pas en charge l'activation des autorisations d'exécution ou de définition d'un identifiant utilisateur (SUID) sur ces fichiers. Votre programme Java ne peut pas non plus utiliser les appels système socket ou les appels système suivants :
_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
Pour des restrictions supplémentaires sur les routines externes pour DB2, consultez la section Restrictions sur les routines externes
Configuration de procédures stockées externes basées sur Java
Pour configurer une procédure stockée externe, créez un fichier .jar avec votre routine externe, installez-le sur votre base de données RDS pour DB2, puis enregistrez-le en tant que procédure stockée externe.
Rubriques
Étape 1 : activer les procédures stockées externes
Pour activer les procédures stockées externes, dans un groupe de paramètres personnalisé associé à votre instance de base de données, définissez le paramètre db2_alternate_authz_behaviour
sur l'une des valeurs suivantes :
EXTERNAL_ROUTINE_DBADM
— Accorde implicitement l'CREATE_EXTERNAL_ROUTINE
autorisation à tout utilisateur, groupe ou rôle ayantDBADM
autorité.EXTERNAL_ROUTINE_DBAUTH
— Permet à un utilisateurDBADM
autorisé d'accorder desCREATE_EXTERNAL_ROUTINE
autorisations à n'importe quel utilisateur, groupe ou rôle. Dans ce cas, aucun utilisateur, groupe ou rôle ne reçoit implicitement cette autorisation, pas même un utilisateurDBADM
autorisé.
Pour plus d'informations sur ce paramètre, consultez l'instruction GRANT (autorités de base de données)
Vous pouvez créer et modifier un groupe de paramètres personnalisé à l'aide de l'API AWS Management Console, de AWS CLI, ou de l'API Amazon RDS.
Pour configurer le paramètre db2_alternate_authz_behaviour dans un groupe de paramètres personnalisé
-
Si vous souhaitez utiliser un groupe de paramètres de base de données personnalisé différent de celui utilisé par votre instance de base de données, créez un nouveau groupe de paramètres de base de données. Si vous utilisez le modèle BYOL (Bring Your Own License), assurez-vous que le nouveau groupe de paramètres personnalisés inclut les IBM identifiants. Pour plus d'informations sur ces identifiants, consultezIBM IDspour Bring Your Own License for Db2. Pour de plus amples informations sur la création d'un groupe de paramètres de base de données, veuillez consulter Création d'un groupe de paramètres de base de données dans RDSAmazon.
-
Définissez la valeur du
db2_alternate_authz_behaviour
paramètre dans votre groupe de paramètres personnalisé. Pour plus d'informations sur la modification d'un groupe de paramètres, consultezModification des paramètres d'un groupe de paramètres de base de données dans Amazon RDS.
Pour configurer le paramètre db2_alternate_authz_behaviour dans un groupe de paramètres personnalisé
-
Si vous souhaitez utiliser un groupe de paramètres de base de données personnalisé différent de celui utilisé par votre instance de base de données, créez un groupe de paramètres personnalisé en exécutant la create-db-parameter-groupcommande. Si vous utilisez le modèle BYOL (Bring Your Own License), assurez-vous que le nouveau groupe de paramètres personnalisés inclut les IBM identifiants. Pour plus d'informations sur ces identifiants, consultezIBM IDspour Bring Your Own License for Db2.
Inclure les options requises suivantes :
-
--db-parameter-group-name
— Nom du groupe de paramètres que vous créez. -
--db-parameter-group-family
— L'édition et la version majeure du moteur DB2. Les valeurs valides sontdb2-se-11.5
etdb2-ae-11.5
. -
--description
— Description de ce groupe de paramètres.
Pour de plus amples informations sur la création d'un groupe de paramètres de base de données, veuillez consulter Création d'un groupe de paramètres de base de données dans RDSAmazon.
L'exemple suivant montre comment créer un groupe de paramètres personnalisé nommé d'après
MY_EXT_SP_PARAM_GROUP
la famille de groupes de paramètresdb2-se-11.5
.Pour LinuxmacOS, ou 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"
Dans 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"
-
-
Modifiez le
db2_alternate_authz_behaviour
paramètre dans votre groupe de paramètres personnalisé en exécutant la modify-db-parameter-groupcommande.Inclure les options requises suivantes :
-
--db-parameter-group-name
— Le nom du groupe de paramètres que vous avez créé. -
--parameters
— Tableau de noms de paramètres, de valeurs et de méthodes d'application pour la mise à jour des paramètres.
Pour plus d'informations sur la modification d'un groupe de paramètres, consultezModification des paramètres d'un groupe de paramètres de base de données dans Amazon RDS.
L'exemple suivant montre comment modifier le groupe de paramètres
MY_EXT_SP_PARAM_GROUP
en définissant la valeur dedb2_alternate_authz_behaviour
toEXTERNAL_ROUTINE_DBADM
.Pour LinuxmacOS, ou 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"
Dans 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"
-
Pour configurer le paramètre db2_alternate_authz_behaviour dans un groupe de paramètres personnalisé
-
Si vous souhaitez utiliser un groupe de paramètres de base de données personnalisé différent de celui utilisé par votre instance de base de données, créez un nouveau groupe de paramètres de base de données à l'aide de l'CreateDBParameterGroupopération d'API Amazon RDS. Si vous utilisez le modèle BYOL (Bring Your Own License), assurez-vous que le nouveau groupe de paramètres personnalisés inclut les IBM Db2 identifiants. Pour plus d'informations sur ces identifiants, consultezIBM IDspour Bring Your Own License for Db2.
Incluez les paramètres requis suivants :
-
DBParameterGroupName
-
DBParameterGroupFamily
-
Description
Pour de plus amples informations sur la création d'un groupe de paramètres de base de données, veuillez consulter Création d'un groupe de paramètres de base de données dans RDSAmazon.
-
-
Modifiez le
db2_alternate_authz_behaviour
paramètre dans votre groupe de paramètres personnalisé que vous avez créé à l'aide de l'ModifyDBParameterGroupopération d'API RDS.Incluez les paramètres requis suivants :
-
DBParameterGroupName
-
Parameters
Pour plus d'informations sur la modification d'un groupe de paramètres, consultezModification des paramètres d'un groupe de paramètres de base de données dans Amazon RDS.
-
Étape 2 : installez le fichier .jar avec votre routine externe
Après avoir créé votre routine Java, créez le fichier .jar, puis exécutez-le db2 "call sqlj.install_jar('file:
pour l'installer sur votre base de données RDS pour DB2.file_path
',jar_ID
)"
L'exemple suivant montre comment créer une routine Java et l'installer sur une base de données RDS pour DB2. L'exemple inclut un exemple de code pour une routine simple que vous pouvez utiliser pour tester le processus. Cet exemple repose sur les hypothèses suivantes :
Le code Java est compilé sur un serveur sur lequel Db2 est installé. Il s'agit d'une bonne pratique, car le fait de ne pas compiler avec le JDK fourni par IBM peut entraîner des erreurs inexpliquées.
Le serveur dispose de la base de données RDS pour DB2 cataloguée localement.
Si vous souhaitez essayer le processus avec l'exemple de code suivant, copiez-le puis enregistrez-le dans un fichier nommé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; } }
La commande suivante compile la routine Java.
~/sqllib/java/jdk64/bin/javac MYJAVASP.java
La commande suivante crée le fichier .jar.
~/sqllib/java/jdk64/bin/jar cvf MYJAVASP.jar MYJAVASP.class
Les commandes suivantes se connectent à la base de données nommée MY_DB2_DATABASE
et installent le fichier .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()"
Étape 3 : enregistrement de la procédure stockée externe
Après avoir installé le fichier .jar sur votre base de données RDS pour DB2, enregistrez-le en tant que procédure stockée en exécutant la db2 CREATE PROCEDURE
commande or. db2
REPLACE PROCEDURE
L'exemple suivant montre comment se connecter à la base de données et enregistrer la routine Java créée à l'étape précédente en tant que procédure stockée.
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';
Étape 4 : Valider la procédure stockée externe
Procédez comme suit pour tester l'exemple de procédure stockée externe enregistré à l'étape précédente.
Pour valider la procédure stockée externe
-
Créez un tableau comme
TEST.TEST_TABLE
dans l'exemple suivant.db2 "create table TEST.TEST_TABLE(C1 char(6), C2 date)"
-
Appelez la nouvelle procédure stockée externe. L'appel renvoie un statut de
0
.db2 "call TESTSP.MYJAVASP('test')" Return Status = 0
-
Interrogez la table que vous avez créée à l'étape 1 pour vérifier les résultats de l'appel de procédure stockée.
db2 "SELECT * from TEST.TEST_TABLE"
La requête produit une sortie similaire à l'exemple suivant :
C1 C2 ------ ---------- test 02/05/2024