Externe gespeicherte Prozeduren für Amazon RDS for Db2 - Amazon Relational Database Service

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.

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

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.

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 Rechten DBADM die CREATE_EXTERNAL_ROUTINE entsprechende Berechtigung.

  • EXTERNAL_ROUTINE_DBAUTH— Erlaubt einem Benutzer mit DBADM Befugnis, jedem Benutzer, jeder Gruppe oder Rolle die CREATE_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
  1. 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.

  2. 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
  1. 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 sind db2-se-11.5 und db2-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"
  2. Ä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 Wert db2_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
  1. 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.

  2. Ä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:file_path',jar_ID)" um sie in Ihrer RDS for Db2-Datenbank zu installieren.

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 using master_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 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';

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
  1. Erstellen Sie eine Tabelle wie TEST.TEST_TABLE im folgenden Beispiel.

    db2 "create table TEST.TEST_TABLE(C1 char(6), C2 date)"
  2. Rufen Sie die neue externe gespeicherte Prozedur auf. Der Aufruf gibt den Status zurück0.

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