Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Prosedur tersimpan eksternal untuk Amazon RDS untuk Db2
Anda dapat membuat rutinitas eksternal dan mendaftarkannya dengan database Amazon RDS untuk Db2 Anda sebagai prosedur tersimpan eksternal. Saat ini, RDS untuk Db2 hanya mendukung rutinitas berbasis Java untuk prosedur tersimpan eksternal.
Prosedur tersimpan eksternal berbasis Java
Prosedur tersimpan eksternal berbasis Java adalah rutinitas Java eksternal yang Anda daftarkan dengan RDS Anda untuk database Db2 sebagai prosedur tersimpan eksternal.
Topik
Batasan untuk prosedur tersimpan eksternal berbasis Java
Sebelum Anda mengembangkan rutinitas eksternal Anda, pertimbangkan batasan dan batasan berikut.
Untuk membuat rutinitas eksternal Anda, pastikan untuk menggunakan Java Development Kit (JDK) yang disediakan oleh Db2. Untuk informasi selengkapnya, lihat dukungan perangkat lunak Java untuk produk database Db2
Program Java Anda dapat membuat file hanya di /tmp
direktori, dan Amazon RDS tidak mendukung pengaktifan izin executable atau Set User ID (SUID) pada file-file ini. Program Java Anda juga tidak dapat menggunakan panggilan sistem soket atau panggilan sistem berikut:
_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
Untuk pembatasan tambahan pada rutinitas eksternal untuk Db2, lihat Pembatasan rutinitas eksternal
Mengkonfigurasi prosedur tersimpan eksternal berbasis Java
Untuk mengkonfigurasi prosedur tersimpan eksternal, buat file.jar dengan rutinitas eksternal Anda, instal pada database RDS untuk Db2 Anda, dan kemudian daftarkan sebagai prosedur tersimpan eksternal.
Topik
Langkah 1: Aktifkan prosedur tersimpan eksternal
Untuk mengaktifkan prosedur tersimpan eksternal, dalam grup parameter kustom yang terkait dengan instans DB Anda, setel parameter db2_alternate_authz_behaviour
ke salah satu nilai berikut:
EXTERNAL_ROUTINE_DBADM
— Secara implisit memberikan izin kepada pengguna, grup, atau peran apa pun denganDBADM
otoritas.CREATE_EXTERNAL_ROUTINE
EXTERNAL_ROUTINE_DBAUTH
— Memungkinkan pengguna denganDBADM
wewenang untuk memberikanCREATE_EXTERNAL_ROUTINE
izin kepada pengguna, grup, atau peran apa pun. Dalam hal ini, tidak ada pengguna, grup, atau peran yang secara implisit diberikan izin ini, bahkan pengguna denganDBADM
otoritas.
Untuk informasi selengkapnya tentang pengaturan ini, lihat pernyataan GRANT (otoritas database)
Anda dapat membuat dan mengubah grup parameter kustom dengan menggunakan AWS Management Console, AWS CLI, atau Amazon RDS API.
Untuk mengkonfigurasi parameter db2_alternate_authz_behavior dalam grup parameter kustom
-
Jika Anda ingin menggunakan grup parameter DB kustom yang berbeda dari yang digunakan instans DB Anda, buat grup parameter DB baru. Jika Anda menggunakan model Bring Your Own License (BYOL), pastikan grup parameter kustom baru menyertakan IBM ID. Untuk informasi tentang ID ini, lihatIBM IDsuntuk Bawa Lisensi Anda Sendiri untuk Db2. Lihat informasi yang lebih lengkap tentang cara membuat grup parameter basis data di Membuat grup parameter DB di Amazon RDS Amazon.
-
Tetapkan nilai untuk
db2_alternate_authz_behaviour
parameter dalam grup parameter kustom Anda. Lihat informasi yang lebih lengkap tentang mengubah grup parameter di Memodifikasi parameter dalam grup parameter DB di Amazon RDS Aurora.
Untuk mengkonfigurasi parameter db2_alternate_authz_behavior dalam grup parameter kustom
-
Jika Anda ingin menggunakan grup parameter DB kustom yang berbeda dari yang digunakan instans DB Anda, buat grup parameter khusus dengan menjalankan create-db-parameter-groupperintah. Jika Anda menggunakan model Bring Your Own License (BYOL), pastikan grup parameter kustom baru menyertakan IBM ID. Untuk informasi tentang ID ini, lihatIBM IDsuntuk Bawa Lisensi Anda Sendiri untuk Db2.
Sertakan opsi-opsi yang diperlukan berikut:
-
--db-parameter-group-name
– Nama untuk grup parameter yang sedang Anda buat. -
--db-parameter-group-family
– Edisi mesin dan versi utama Db2. Nilai yang valid adalahdb2-se-11.5
dandb2-ae-11.5
. -
--description
– Deskripsi untuk grup parameter ini.
Lihat informasi yang lebih lengkap tentang cara membuat grup parameter basis data di Membuat grup parameter DB di Amazon RDS Amazon.
Contoh berikut menunjukkan cara membuat grup parameter kustom bernama
MY_EXT_SP_PARAM_GROUP
untuk keluarga grup parameterdb2-se-11.5
.Untuk Linux, macOS, atau 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"
Untuk 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"
-
-
Ubah
db2_alternate_authz_behaviour
parameter dalam grup parameter kustom Anda dengan menjalankan modify-db-parameter-groupperintah.Sertakan opsi-opsi yang diperlukan berikut:
-
--db-parameter-group-name
– Nama grup parameter yang Anda buat. -
--parameters
– Array nama parameter, nilai parameter, dan metode aplikasi untuk pembaruan parameter.
Lihat informasi yang lebih lengkap tentang mengubah grup parameter di Memodifikasi parameter dalam grup parameter DB di Amazon RDS Aurora.
Contoh berikut menunjukkan cara memodifikasi grup parameter
MY_EXT_SP_PARAM_GROUP
dengan menetapkan nilaidb2_alternate_authz_behaviour
keEXTERNAL_ROUTINE_DBADM
.Untuk Linux, macOS, atau 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"
Untuk 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"
-
Untuk mengkonfigurasi parameter db2_alternate_authz_behavior dalam grup parameter kustom
-
Jika Anda ingin menggunakan grup parameter DB kustom yang berbeda dari yang digunakan instans DB Anda, buat grup parameter DB baru dengan menggunakan CreateDBParameterGroupoperasi Amazon RDS API. Jika Anda menggunakan model Bring Your Own License (BYOL), pastikan grup parameter kustom baru menyertakan IBM Db2 ID. Untuk informasi tentang ID ini, lihatIBM IDsuntuk Bawa Lisensi Anda Sendiri untuk Db2.
Sertakan parameter-parameter yang diperlukan berikut:
-
DBParameterGroupName
-
DBParameterGroupFamily
-
Description
Lihat informasi yang lebih lengkap tentang cara membuat grup parameter basis data di Membuat grup parameter DB di Amazon RDS Amazon.
-
-
Ubah
db2_alternate_authz_behaviour
parameter dalam grup parameter kustom yang Anda buat dengan menggunakan ModifyDBParameterGroupoperasi RDS API.Sertakan parameter-parameter yang diperlukan berikut:
-
DBParameterGroupName
-
Parameters
Lihat informasi yang lebih lengkap tentang mengubah grup parameter di Memodifikasi parameter dalam grup parameter DB di Amazon RDS Aurora.
-
Langkah 2: Instal file.jar dengan rutinitas eksternal Anda
Setelah Anda membuat rutinitas Java Anda, buat file.jar dan kemudian jalankan db2 "call sqlj.install_jar('file:
untuk menginstalnya pada database RDS untuk Db2 Anda.file_path
',jar_ID
)"
Contoh berikut menunjukkan cara membuat rutin Java dan menginstalnya pada database RDS untuk Db2. Contoh termasuk kode sampel untuk rutinitas sederhana yang dapat Anda gunakan untuk menguji proses. Contoh ini membuat asumsi berikut:
Kode Java dikompilasi pada server tempat Db2 diinstal. Ini adalah praktik terbaik karena tidak mengkompilasi dengan JDK yang disediakan IBM dapat mengakibatkan kesalahan yang tidak dapat dijelaskan.
Server memiliki database RDS untuk Db2 yang dikatalogkan secara lokal.
Jika Anda ingin mencoba proses dengan kode contoh berikut, salin dan kemudian simpan ke file bernamaMYJAVASP.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; } }
Perintah berikut mengkompilasi rutin Java.
~/sqllib/java/jdk64/bin/javac MYJAVASP.java
Perintah berikut membuat file.jar.
~/sqllib/java/jdk64/bin/jar cvf MYJAVASP.jar MYJAVASP.class
Perintah berikut terhubung ke database bernama MY_DB2_DATABASE
dan menginstal file.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()"
Langkah 3: Daftarkan prosedur tersimpan eksternal
Setelah Anda menginstal file.jar pada RDS Anda untuk database Db2, daftarkan sebagai prosedur tersimpan dengan menjalankan perintah or. db2 CREATE PROCEDURE
db2
REPLACE PROCEDURE
Contoh berikut menunjukkan cara menghubungkan ke database dan mendaftarkan rutinitas Java yang dibuat pada langkah sebelumnya sebagai prosedur tersimpan.
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';
Langkah 4: Validasi prosedur tersimpan eksternal
Gunakan langkah-langkah berikut untuk menguji sampel prosedur tersimpan eksternal yang terdaftar pada langkah sebelumnya.
Untuk memvalidasi prosedur tersimpan eksternal
-
Buat tabel seperti
TEST.TEST_TABLE
pada contoh berikut.db2 "create table TEST.TEST_TABLE(C1 char(6), C2 date)"
-
Panggil prosedur tersimpan eksternal yang baru. Panggilan mengembalikan status
0
.db2 "call TESTSP.MYJAVASP('test')" Return Status = 0
-
Kueri tabel yang Anda buat di langkah 1 untuk memverifikasi hasil panggilan prosedur yang disimpan.
db2 "SELECT * from TEST.TEST_TABLE"
Query menghasilkan output yang mirip dengan contoh berikut:
C1 C2 ------ ---------- test 02/05/2024