Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Externe gespeicherte Prozeduren für Amazon RDS for Db2
Sie können externe Routinen erstellen und sie bei Ihren Amazon RDS for Db2-Datenbanken als externe gespeicherte Prozeduren registrieren. Derzeit unterstützt RDS for Db2 nur Java-basierte Routinen für externe gespeicherte Prozeduren.
Java-basierte externe gespeicherte Prozeduren
Java-basierte externe gespeicherte Prozeduren sind externe Java-Routinen, die Sie bei Ihrer RDS for Db2-Datenbank als externe gespeicherte Prozeduren registrieren.
Themen
Einschränkungen für Java-basierte externe gespeicherte Prozeduren
Bevor Sie Ihre externe Routine entwickeln, sollten Sie die folgenden Einschränkungen und Einschränkungen berücksichtigen.
Stellen Sie sicher, dass Sie das von Db2 bereitgestellte Java Development Kit (JDK) verwenden, um Ihre externe Routine zu erstellen. Weitere Informationen finden Sie unter Java-Softwareunterstützung für Db2-Datenbankprodukte
Ihr Java-Programm kann Dateien nur in dem /tmp
Verzeichnis erstellen, und Amazon RDS unterstützt nicht die Aktivierung von ausführbaren Dateien oder Berechtigungen zum Festlegen von Benutzer-IDs (SUID) für diese Dateien. Ihr Java-Programm kann auch keine Socket-Systemaufrufen oder die folgenden Systemaufrufen verwenden:
_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
Weitere Einschränkungen für externe Routinen für Db2 finden Sie in der Dokumentation unter Einschränkungen für externe Routinen
Konfiguration von Java-basierten externen gespeicherten Prozeduren
Um eine externe gespeicherte Prozedur zu konfigurieren, erstellen Sie eine JAR-Datei mit Ihrer externen Routine, installieren Sie sie in Ihrer RDS for Db2-Datenbank und registrieren Sie sie dann als externe gespeicherte Prozedur.
Themen
Schritt 1: Aktivieren Sie externe gespeicherte Prozeduren
Um externe gespeicherte Prozeduren zu aktivieren, setzen Sie den Parameter in einer benutzerdefinierten Parametergruppe, die Ihrer DB-Instance zugeordnet ist, db2_alternate_authz_behaviour
auf einen der folgenden Werte:
EXTERNAL_ROUTINE_DBADM
— Erteilt implizit jedem Benutzer, jeder Gruppe oder Rolle mit entsprechenden RechtenDBADM
dieCREATE_EXTERNAL_ROUTINE
entsprechende Berechtigung.EXTERNAL_ROUTINE_DBAUTH
— Erlaubt einem Benutzer mitDBADM
Befugnis, jedem Benutzer, jeder Gruppe oder Rolle dieCREATE_EXTERNAL_ROUTINE
Berechtigung zu erteilen. In diesem Fall wird keinem Benutzer, keiner Gruppe oder Rolle implizit diese Berechtigung erteilt, nicht einmal einem Benutzer mit entsprechenden RechtenDBADM
.
Weitere Informationen zu dieser Einstellung finden Sie in der IBM Db2 Dokumentation unter GRANT-Anweisung (Datenbankautoritäten)
Sie können eine benutzerdefinierte Parametergruppe mithilfe der AWS Management Console, der oder der Amazon RDS-API erstellen und ändern. AWS CLI
Um den Parameter db2_alternate_authz_behavior in einer benutzerdefinierten Parametergruppe zu konfigurieren
-
Wenn Sie eine andere benutzerdefinierte DB-Parametergruppe als die verwenden möchten, die Ihre DB-Instance verwendet, erstellen Sie eine neue DB-Parametergruppe. Wenn Sie das Modell Bring Your Own License (BYOL) verwenden, stellen Sie sicher, dass die neue benutzerdefinierte Parametergruppe die IBM IDs enthält. Informationen zu diesen IDs finden Sie unterIBM IDsfür Bring Your Own License für Db2. Weitere Informationen über das Erstellen einer Parametergruppe finden Sie unter Erstellen einer DB-Parametergruppe in Amazon RDS.
-
Legen Sie den Wert für den
db2_alternate_authz_behaviour
Parameter in Ihrer benutzerdefinierten Parametergruppe fest. Weitere Informationen zum Ändern einer Parametergruppe finden Sie unterÄndern von Parametern in einer DB-Parametergruppe in Amazon RDS.
So konfigurieren Sie den Parameter db2_alternate_authz_behavior in einer benutzerdefinierten Parametergruppe
-
Wenn Sie eine andere benutzerdefinierte DB-Parametergruppe als die verwenden möchten, die Ihre DB-Instance verwendet, erstellen Sie eine benutzerdefinierte Parametergruppe, indem Sie den Befehl ausführen. create-db-parameter-group Wenn Sie das Modell Bring Your Own License (BYOL) verwenden, stellen Sie sicher, dass die neue benutzerdefinierte Parametergruppe die IBM IDs enthält. Informationen zu diesen IDs finden Sie unterIBM IDsfür Bring Your Own License für Db2.
Verwenden Sie den folgenden erforderlichen Parameter:
-
--db-parameter-group-name
— Ein Name für die Parametergruppe, die Sie erstellen. -
--db-parameter-group-family
— Die Db2-Engine-Edition und die Hauptversion. Gültige Werte sinddb2-se-11.5
unddb2-ae-11.5
. -
--description
— Eine Beschreibung für diese Parametergruppe.
Weitere Informationen über das Erstellen einer Parametergruppe finden Sie unter Erstellen einer DB-Parametergruppe in Amazon RDS.
Das folgende Beispiel zeigt Ihnen, wie Sie eine benutzerdefinierte Parametergruppe erstellen, die
MY_EXT_SP_PARAM_GROUP
nach der Parametergruppenfamilie benannt istdb2-se-11.5
.Für LinuxmacOS, oderUnix:
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"
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"
-
-
Ändern Sie den
db2_alternate_authz_behaviour
Parameter in Ihrer benutzerdefinierten Parametergruppe, indem Sie den modify-db-parameter-groupBefehl ausführen.Verwenden Sie den folgenden erforderlichen Parameter:
-
--db-parameter-group-name
— Der Name der Parametergruppe, die Sie erstellt haben. -
--parameters
— Eine Reihe von Parameternamen, Werten und Anwendungsmethoden für die Parameteraktualisierung.
Weitere Hinweise zum Ändern einer Parametergruppe finden Sie unterÄndern von Parametern in einer DB-Parametergruppe in Amazon RDS.
Das folgende Beispiel zeigt, wie Sie die Parametergruppe ändern,
MY_EXT_SP_PARAM_GROUP
indem Sie den Wertdb2_alternate_authz_behaviour
auf festlegenEXTERNAL_ROUTINE_DBADM
.Für LinuxmacOS, oderUnix:
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"
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"
-
Um den Parameter db2_alternate_authz_behavior in einer benutzerdefinierten Parametergruppe zu konfigurieren
-
Wenn Sie eine andere benutzerdefinierte DB-Parametergruppe als die verwenden möchten, die Ihre DB-Instance verwendet, erstellen Sie mithilfe der Amazon CreateDBParameterGroupRDS-API-Operation eine neue DB-Parametergruppe. Wenn Sie das Modell Bring Your Own License (BYOL) verwenden, stellen Sie sicher, dass die neue benutzerdefinierte Parametergruppe die IBM Db2 IDs enthält. Informationen zu diesen IDs finden Sie unterIBM IDsfür Bring Your Own License für Db2.
Nutzen Sie die folgenden erforderlichen Parameter:
-
DBParameterGroupName
-
DBParameterGroupFamily
-
Description
Weitere Informationen über das Erstellen einer Parametergruppe finden Sie unter Erstellen einer DB-Parametergruppe in Amazon RDS.
-
-
Ändern Sie den
db2_alternate_authz_behaviour
Parameter in Ihrer benutzerdefinierten Parametergruppe, die Sie mithilfe des ModifyDBParameterGroupRDS-API-Vorgangs erstellt haben.Nutzen Sie die folgenden erforderlichen Parameter:
-
DBParameterGroupName
-
Parameters
Weitere Informationen zum Ändern einer Parametergruppe finden Sie unterÄndern von Parametern in einer DB-Parametergruppe in Amazon RDS.
-
Schritt 2: Installieren Sie die JAR-Datei mit Ihrer externen Routine
Nachdem Sie Ihre Java-Routine erstellt haben, erstellen Sie die JAR-Datei und führen Sie sie anschließend aus, db2 "call sqlj.install_jar('file:
um sie in Ihrer RDS for Db2-Datenbank zu installieren.file_path
',jar_ID
)"
Das folgende Beispiel zeigt Ihnen, wie Sie eine Java-Routine erstellen und sie in einer RDS for Db2-Datenbank installieren. Das Beispiel enthält Beispielcode für eine einfache Routine, mit der Sie den Prozess testen können. In diesem Beispiel werden die folgenden Annahmen getroffen:
Der Java-Code wird auf einem Server kompiliert, auf dem Db2 installiert ist. Dies ist eine bewährte Methode, da die Nichtkompilierung mit dem von IBM bereitgestellten JDK zu unerklärlichen Fehlern führen kann.
Auf dem Server ist die Datenbank RDS for Db2 lokal katalogisiert.
Wenn Sie den Vorgang mit dem folgenden Beispielcode ausprobieren möchten, kopieren Sie ihn und speichern Sie ihn dann in einer Datei mit dem Namen. 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; } }
Der folgende Befehl kompiliert die Java-Routine.
~/sqllib/java/jdk64/bin/javac MYJAVASP.java
Der folgende Befehl erstellt die JAR-Datei.
~/sqllib/java/jdk64/bin/jar cvf MYJAVASP.jar MYJAVASP.class
Mit den folgenden Befehlen wird eine Verbindung zur genannten Datenbank hergestellt MY_DB2_DATABASE
und die JAR-Datei installiert.
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()"
Schritt 3: Registrieren Sie die externe gespeicherte Prozedur
Nachdem Sie die JAR-Datei in Ihrer RDS for Db2-Datenbank installiert haben, registrieren Sie sie als gespeicherte Prozedur, indem Sie den Befehl db2 CREATE PROCEDURE
or db2
REPLACE PROCEDURE
ausführen.
Das folgende Beispiel zeigt Ihnen, wie Sie eine Verbindung zur Datenbank herstellen und die im vorherigen Schritt erstellte Java-Routine als gespeicherte Prozedur registrieren.
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';
Schritt 4: Überprüfen Sie die externe gespeicherte Prozedur
Verwenden Sie die folgenden Schritte, um das Beispiel für eine externe gespeicherte Prozedur zu testen, die im vorherigen Schritt registriert wurde.
Um die externe gespeicherte Prozedur zu validieren
-
Erstellen Sie eine Tabelle wie
TEST.TEST_TABLE
im folgenden Beispiel.db2 "create table TEST.TEST_TABLE(C1 char(6), C2 date)"
-
Rufen Sie die neue externe gespeicherte Prozedur auf. Der Aufruf gibt den Status zurück
0
.db2 "call TESTSP.MYJAVASP('test')" Return Status = 0
-
Fragen Sie die Tabelle ab, die Sie in Schritt 1 erstellt haben, um die Ergebnisse des Aufrufs der gespeicherten Prozedur zu überprüfen.
db2 "SELECT * from TEST.TEST_TABLE"
Die Abfrage erzeugt eine Ausgabe, die dem folgenden Beispiel ähnelt:
C1 C2 ------ ---------- test 02/05/2024