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 für Db2
Sie können externe Routinen erstellen und sie bei Ihren Datenbanken von Amazon RDS für Db2 als externe gespeicherte Prozeduren registrieren. Derzeit unterstützt RDS für Db2 nur Java-basierte Routinen als externe gespeicherte Prozeduren.
Java-basierte externe gespeicherte Prozeduren
Java-basierte externe gespeicherte Prozeduren sind externe Java-Routinen, die Sie bei Ihrer Datenbank von RDS für Db2 als externe gespeicherte Prozesse registrieren.
Themen
Einschränkungen für Java-basierte externe gespeicherte Prozeduren
Bevor Sie Ihre externe Routine entwickeln, beachten Sie die folgenden Einschränkungen.
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 software support for Db2 database products
Ihr Java-Programm kann Dateien nur im /tmp-Verzeichnis erstellen und Amazon RDS unterstützt keine Aktivierung von ausführbaren oder Set User ID (SUID)-Berechtigungen 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 IBM Db2-Dokumentation unter Restrictions on external routines
Konfigurieren 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 Datenbank von RDS für Db2 und registrieren Sie sie dann als externe gespeicherte Prozedur.
Themen
Schritt 1: Aktivieren von externen gespeicherten Prozeduren
Um externe gespeicherte Prozeduren zu aktivieren, legen Sie den Parameter db2_alternate_authz_behaviour in einer benutzerdefinierten Parametergruppe, die Ihrer DB-Instance zugeordnet ist, auf einen der folgenden Werte fest:
EXTERNAL_ROUTINE_DBADM– Erteilt implizit jedem Benutzer, jeder Gruppe oder jeder Rolle mit entsprechenderDBADM-Autorität die BerechtigungCREATE_EXTERNAL_ROUTINE.EXTERNAL_ROUTINE_DBAUTH– Erlaubt einem Benutzer mitDBADM-Autorität, jedem Benutzer, jeder Gruppe oder jeder Rolle die BerechtigungCREATE_EXTERNAL_ROUTINEzu erteilen. In diesem Fall wird keinem Benutzer, keiner Gruppe oder keiner Rolle diese Berechtigung implizit erteilt, nicht einmal einem Benutzer mit entsprechenderDBADM-Autorität.
Weitere Informationen zu dieser Einstellung finden Sie in der IBM Db2-Dokumentation unter GRANT (database authorities) statement
Sie können eine benutzerdefinierte Parametergruppe erstellen und ändern, indem Sie die AWS Management Console, die AWS CLI oder die Amazon-RDS-API verwenden.
So konfigurieren Sie den Parameter db2_alternate_authz_behavior in einer benutzerdefinierten Parametergruppe
-
Erstellen Sie eine neue DB-Parametergruppe, wenn Sie eine andere benutzerdefinierte DB-Parametergruppe verwenden möchten als die, die Ihre DB-Instance verwendet. Wenn Sie das Modell „Bring-Your-Own-License (BYOL)“ verwenden, stellen Sie sicher, dass die neue benutzerdefinierte Parametergruppe die IBM-IDs enthält. Weitere Informationen zu diesen IDs finden Sie unter IBM-IDs für Bring-Your-Own-License (BYOL) 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 Parameter
db2_alternate_authz_behaviourin 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
-
Erstellen Sie eine benutzerdefinierte Parametergruppe, indem Sie den Befehl create-db-parameter-group ausführen, wenn Sie eine andere benutzerdefinierte DB-Parametergruppe verwenden möchten als die, die Ihre DB-Instance verwendet. Wenn Sie das Modell „Bring-Your-Own-License (BYOL)“ verwenden, stellen Sie sicher, dass die neue benutzerdefinierte Parametergruppe die IBM-IDs enthält. Weitere Informationen zu diesen IDs finden Sie unter IBM-IDs für Bring-Your-Own-License (BYOL) 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.5unddb2-ae-11.5. -
--description– Die 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, wie Sie eine benutzerdefinierte Parametergruppe mit dem Namen
MY_EXT_SP_PARAM_GROUPfür die Parametergruppenfamiliedb2-se-11.5erstellen.Für Linux, macOS oder 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"Für 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 Parameter
db2_alternate_authz_behaviourin Ihrer benutzerdefinierten Parametergruppe, indem Sie den Befehl modify-db-parameter-group ausführen.Verwenden Sie den folgenden erforderlichen Parameter:
-
--db-parameter-group-name– Der Name der von Ihnen erstellten Parametergruppe. -
--parameters– Ein Array von Parameternamen, Werten und der Anwendungsmethoden für die Parameteraktualisierung.
Weitere Informationen 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
MY_EXT_SP_PARAM_GROUPändern, indem Sie den Wertdb2_alternate_authz_behaviouraufEXTERNAL_ROUTINE_DBADMfestlegen.Für Linux, macOS oder 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"Für 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" -
So konfigurieren Sie den Parameter db2_alternate_authz_behavior in einer benutzerdefinierten Parametergruppe
-
Erstellen Sie eine neue DB-Parametergruppe, indem Sie die Operation CreateDBParameterGroup der Amazon-RDS-API verwenden, wenn Sie eine andere benutzerdefinierte DB-Parametergruppe verwenden möchten als die, die Ihre DB-Instance verwendet. Wenn Sie das Modell „Bring-Your-Own-License (BYOL)“ verwenden, stellen Sie sicher, dass die neue benutzerdefinierte Parametergruppe die IBM Db2-IDs enthält. Weitere Informationen zu diesen IDs finden Sie unter IBM-IDs für Bring-Your-Own-License (BYOL) 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 Parameter
db2_alternate_authz_behaviourin Ihrer benutzerdefinierten Parametergruppe, die Sie mithilfe der RDS-API-Operation ModifyDBParameterGroup 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 der JAR-Datei mit Ihrer externen Routine
Nachdem Sie Ihre Java-Routine erstellt haben, erstellen Sie die JAR-Datei und führen Sie dann db2 "call sqlj.install_jar('file: aus, um sie in Ihrer Datenbank von RDS für Db2 zu installieren.file_path',jar_ID)"
Das folgende Beispiel zeigt, wie Sie eine Java-Routine erstellen und sie in einer Datenbank von RDS für Db2 installieren. Das Beispiel enthält Beispielcode für eine einfache Routine, die Sie zum Testen des Prozesses verwenden können. In diesem Beispiel wird Folgendes angenommen:
Der Java-Code ist auf einem Server kompiliert, auf dem Db2 installiert ist. Dies ist eine bewährte Methode, da eine fehlende Kompilierung mit dem von IBM bereitgestellten JDK zu unerklärlichen Fehlern führen kann.
Auf dem Server ist die Datenbank von RDS für Db2 lokal katalogisiert.
Wenn Sie den Prozess 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
Die folgenden Befehle stellen eine Verbindung zur Datenbank mit dem Namen MY_DB2_DATABASE her und installieren die JAR-Datei.
db2 "connect to MY_DB2_DATABASE usermaster_usernameusingmaster_password" db2 "call sqlj.install_jar('file:/tmp/MYJAVASP.jar','MYJAVASP')" db2 "call sqlj.refresh_classes()"
Schritt 3: Registrieren der externen gespeicherten Prozedur
Nachdem Sie die JAR-Datei in Ihrer Datenbank von RDS für Db2 installiert haben, registrieren Sie sie als gespeicherte Prozedur, indem Sie den Befehl db2 CREATE PROCEDURE oder db2
REPLACE PROCEDURE ausführen.
Das folgende Beispiel zeigt, 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 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';
Schritt 4: Validieren der externen gespeicherten Prozedur
Verwenden Sie die folgenden Schritte, um das Beispiel einer externen gespeicherten Prozedur zu testen, die im vorherigen Schritt registriert wurde.
So validieren Sie die externe gespeicherte Prozedur
-
Erstellen Sie eine Tabelle wie
TEST.TEST_TABLEim 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
0zurück.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 gibt eine Ausgabe ähnlich der folgenden zurück:
C1 C2 ------ ---------- test 02/05/2024