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 for Db2
Vous pouvez créer des routines externes et les enregistrer dans vos bases de données Amazon RDS for Db2 en tant que procédures stockées externes. Actuellement, RDS for 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 for Db2 en tant que procédures stockées externes.
Rubriques
Limites pour les 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 Support logiciel Java pour les produits de base de données Db2.
Votre programme Java peut créer des fichiers uniquement dans le répertoire /tmp 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 Restrictions sur les routines externes
Configuration des 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 for Db2, puis enregistrez-le en tant que procédure stockée externe.
Rubriques
Étape 1 : activation des procédures stockées externes
Pour activer des procédures stockées externes, dans un groupe de paramètres personnalisés 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 à tout utilisateur, groupe ou rôle ayant l’autoritéDBADMl’autorisationCREATE_EXTERNAL_ROUTINE.EXTERNAL_ROUTINE_DBAUTH: permet à un utilisateur ayant l’autoritéDBADMd’accorder des autorisationsCREATE_EXTERNAL_ROUTINEà tout utilisateur, groupe ou rôle. Dans ce cas, aucun utilisateur, groupe ou rôle ne reçoit implicitement cette autorisation, pas même un utilisateur ayant l’autoritéDBADM.
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és à l’aide de la AWS Management Console, de l’AWS CLI ou de l’API Amazon RDS.
Configuration du 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 que votre instance de base de données utilise, créez un nouveau groupe de paramètres de base de données. Si vous utilisez le modèle Apportez votre propre licence (BYOL), assurez-vous que le nouveau groupe de paramètres personnalisés inclut les identifiants IBM. Pour plus d’informations sur ces identifiants, consultez Identifiants IBM pour Apportez votre propre licence (BYOL) pour Db2. Pour plus d’informations sur la création d’un groupe de paramètres de base de données, consultez Création d’un groupe de paramètres de base de données dans Amazon RDS.
-
Définissez la valeur du paramètre
db2_alternate_authz_behaviourdans votre groupe de paramètres personnalisés. Pour plus d’informations sur la modification d’un groupe de paramètres, consultez Modification de paramètres dans un groupe de paramètres de base de données dans Amazon RDS.
Configuration du 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 que votre instance de base de données utilise, créez un groupe de paramètres personnalisés en exécutant la commande create-db-parameter-group. Si vous utilisez le modèle Apportez votre propre licence (BYOL), assurez-vous que le nouveau groupe de paramètres personnalisés inclut les identifiants IBM. Pour plus d’informations sur ces identifiants, consultez Identifiants IBM pour Apportez votre propre licence (BYOL) pour Db2.
Inclure les options requises suivantes :
-
--db-parameter-group-name: nom du groupe de paramètres que vous créez. -
--db-parameter-group-family: édition et version majeure du moteur Db2. Les valeurs valides sontdb2-se-11.5etdb2-ae-11.5. -
--description: description de ce groupe de paramètres.
Pour plus d’informations sur la création d’un groupe de paramètres de base de données, consultez Création d’un groupe de paramètres de base de données dans Amazon RDS.
L’exemple suivant montre comment créer un groupe de paramètres personnalisés nommé
MY_EXT_SP_PARAM_GROUPpour la famille de groupes de paramètresdb2-se-11.5.Pour Linux, macOS 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"Pour 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 paramètre
db2_alternate_authz_behaviourdans votre groupe de paramètres personnalisés en exécutant la commande modify-db-parameter-group.Inclure les options requises suivantes :
-
--db-parameter-group-name: nom du groupe de paramètres que vous avez créé. -
--parameters: tableau des noms de paramètres, des valeurs et méthode d’application pour la mise à jour des paramètres.
Pour plus d’informations sur la modification d’un groupe de paramètres, consultez Modification de paramètres dans 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_GROUPen définissant la valeur dedb2_alternate_authz_behavioursurEXTERNAL_ROUTINE_DBADM.Pour Linux, macOS 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"Pour 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" -
Configuration du 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 que votre instance de base de données utilise, créez un nouveau groupe de paramètres de base de données à l’aide de l’opération Amazon RDS API CreateDBParameterGroup. Si vous utilisez le modèle Apportez votre propre licence (BYOL), assurez-vous que le nouveau groupe de paramètres personnalisés inclut les identifiants IBM Db2. Pour plus d’informations sur ces identifiants, consultez Identifiants IBM pour Apportez votre propre licence (BYOL) pour Db2.
Incluez les paramètres requis suivants :
-
DBParameterGroupName -
DBParameterGroupFamily -
Description
Pour plus d’informations sur la création d’un groupe de paramètres de base de données, consultez Création d’un groupe de paramètres de base de données dans Amazon RDS.
-
-
Modifiez le paramètre
db2_alternate_authz_behaviourdans votre groupe de paramètres personnalisés que vous avez créé à l’aide de l’opération RDS API ModifyDBParameterGroup.Incluez les paramètres requis suivants :
-
DBParameterGroupName -
Parameters
Pour plus d’informations sur la modification d’un groupe de paramètres, consultez Modification de paramètres dans un groupe de paramètres de base de données dans Amazon RDS.
-
Étape 2 : installation du fichier .jar avec votre routine externe
Après avoir créé votre routine Java, créez le fichier .jar, puis exécutez db2 "call sqlj.install_jar('file: pour l’installer sur votre base de données RDS for 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 for Db2. L’exemple comprend 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 for Db2 cataloguée localement.
Si vous souhaitez essayer le processus avec l’exemple de code suivant, copiez-le et 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 un 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 usermaster_usernameusingmaster_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 for Db2, enregistrez-le en tant que procédure stockée en exécutant la commande db2 CREATE PROCEDURE ou 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 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';
Étape 4 : validation de 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 une table comme
TEST.TEST_TABLEdans 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 un résultat similaire à l’exemple suivant :
C1 C2 ------ ---------- test 02/05/2024