

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
<a name="db2-external-stored-procedures"></a>

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
<a name="db2-external-stored-procedures-java"></a>

Prosedur tersimpan eksternal berbasis Java adalah rutinitas Java eksternal yang Anda daftarkan dengan RDS Anda untuk database Db2 sebagai prosedur tersimpan eksternal.

**Topics**
+ [Batasan untuk prosedur tersimpan eksternal berbasis Java](#db2-external-stored-procedures-java-limitations)
+ [Mengkonfigurasi prosedur tersimpan eksternal berbasis Java](#db2-external-stored-procedures-java-configuring)

### Batasan untuk prosedur tersimpan eksternal berbasis Java
<a name="db2-external-stored-procedures-java-limitations"></a>

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](https://www.ibm.com/docs/en/db2/11.5?topic=servers-java-software-support-db2-database-products).

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:
+ \$1sysctl
+ acct
+ afs\$1syscall
+ bpf
+ capset
+ chown
+ chroot
+ create\$1module
+ delete\$1module
+ fanotify\$1init
+ fanotify\$1mark
+ finit\$1module
+ fsconfig
+ fsopen
+ fspick
+ get\$1kernel\$1syms
+ getpmsg
+ init\$1module
+ mount
+ move\$1mount
+ nfsservctl
+ open\$1by\$1handle\$1at
+ open\$1tree
+ pivot\$1root
+ putpmsg
+ query\$1module
+ 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](https://www.ibm.com/docs/en/db2/11.5?topic=routines-restrictions-external) dalam dokumentasi. IBM Db2

### Mengkonfigurasi prosedur tersimpan eksternal berbasis Java
<a name="db2-external-stored-procedures-java-configuring"></a>

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.

**Topics**
+ [Langkah 1: Aktifkan prosedur tersimpan eksternal](#db2-external-stored-procedures-java-enable)
+ [Langkah 2: Instal file.jar dengan rutinitas eksternal Anda](#db2-external-stored-procedures-java-install-jar)
+ [Langkah 3: Daftarkan prosedur tersimpan eksternal](#db2-external-stored-procedures-java-register)
+ [Langkah 4: Validasi prosedur tersimpan eksternal](#db2-external-stored-procedures-java-validate)

#### Langkah 1: Aktifkan prosedur tersimpan eksternal
<a name="db2-external-stored-procedures-java-enable"></a>

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 dengan `DBADM` otoritas. `CREATE_EXTERNAL_ROUTINE`
+ `EXTERNAL_ROUTINE_DBAUTH`— Memungkinkan pengguna dengan `DBADM` wewenang untuk memberikan `CREATE_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 dengan `DBADM` otoritas.

Untuk informasi selengkapnya tentang pengaturan ini, lihat [pernyataan GRANT (otoritas database)](https://www.ibm.com/docs/en/db2/11.5?topic=statements-grant-database-authorities) dalam IBM Db2 dokumentasi.

Anda dapat membuat dan mengubah grup parameter kustom dengan menggunakan Konsol Manajemen AWS, AWS CLI, atau Amazon RDS API.

##### Konsol
<a name="db2-external-stored-procedures-java-enable-console"></a>

**Untuk mengkonfigurasi parameter db2\$1alternate\$1authz\$1behavior dalam grup parameter kustom**

1. 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 bahwa grup parameter kustom baru menyertakan. IBM IDs Untuk informasi tentang ini IDs, lihat[IBM IDs untuk membawa lisensi Anda sendiri (BYOL) untuk Db2](db2-licensing.md#db2-prereqs-ibm-info). Lihat informasi yang lebih lengkap tentang cara membuat grup parameter basis data di [Membuat grup parameter DB di Amazon RDS ](USER_WorkingWithParamGroups.Creating.md).

1. Tetapkan nilai untuk `db2_alternate_authz_behaviour` parameter dalam grup parameter kustom Anda. Lihat informasi yang lebih lengkap tentang mengubah grup parameter di [](USER_WorkingWithParamGroups.Modifying.md).

##### AWS CLI
<a name="db2-external-stored-procedures-java-enable-cli"></a>

**Untuk mengkonfigurasi parameter db2\$1alternate\$1authz\$1behavior dalam grup parameter kustom**

1. Jika Anda ingin menggunakan grup parameter DB kustom yang berbeda dari yang digunakan instans DB Anda, buat grup parameter khusus dengan menjalankan [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html)perintah. Jika Anda menggunakan model bring your own license (BYOL), pastikan bahwa grup parameter kustom baru menyertakan. IBM IDs Untuk informasi tentang ini IDs, lihat[IBM IDs untuk membawa lisensi Anda sendiri (BYOL) untuk Db2](db2-licensing.md#db2-prereqs-ibm-info).

   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 adalah `db2-se-11.5` dan `db2-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 ](USER_WorkingWithParamGroups.Creating.md).

   Contoh berikut menunjukkan cara membuat grup parameter kustom bernama `MY_EXT_SP_PARAM_GROUP` untuk keluarga grup parameter`db2-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"
   ```

1. Ubah `db2_alternate_authz_behaviour` parameter dalam grup parameter kustom Anda dengan menjalankan [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html)perintah.

   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 [](USER_WorkingWithParamGroups.Modifying.md).

   Contoh berikut menunjukkan cara memodifikasi grup parameter `MY_EXT_SP_PARAM_GROUP` dengan menetapkan nilai `db2_alternate_authz_behaviour` ke`EXTERNAL_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"
   ```

##### API RDS
<a name="db2-external-stored-procedures-java-enable-api"></a>

**Untuk mengkonfigurasi parameter db2\$1alternate\$1authz\$1behavior dalam grup parameter kustom**

1. Jika Anda ingin menggunakan grup parameter DB kustom yang berbeda dari yang digunakan instans DB Anda, buat grup parameter DB baru dengan menggunakan [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBParameterGroup.html)operasi Amazon RDS API. Jika Anda menggunakan model bring your own license (BYOL), pastikan bahwa grup parameter kustom baru menyertakan. IBM Db2 IDs Untuk informasi tentang ini IDs, lihat[IBM IDs untuk membawa lisensi Anda sendiri (BYOL) untuk Db2](db2-licensing.md#db2-prereqs-ibm-info).

   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 ](USER_WorkingWithParamGroups.Creating.md).

1. Ubah `db2_alternate_authz_behaviour` parameter dalam grup parameter kustom yang Anda buat dengan menggunakan [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBParameterGroup.html)operasi RDS API.

   Sertakan parameter-parameter yang diperlukan berikut:
   + `DBParameterGroupName`
   + `Parameters`

   Lihat informasi yang lebih lengkap tentang mengubah grup parameter di [](USER_WorkingWithParamGroups.Modifying.md).

#### Langkah 2: Instal file.jar dengan rutinitas eksternal Anda
<a name="db2-external-stored-procedures-java-install-jar"></a>

Setelah Anda membuat rutinitas Java Anda, buat file.jar dan kemudian jalankan `db2 "call sqlj.install_jar('file:file_path',jar_ID)"` untuk menginstalnya pada database RDS untuk Db2 Anda.

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 bernama`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;
}
}
```

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 using master_password" 

db2 "call sqlj.install_jar('file:/tmp/MYJAVASP.jar','MYJAVASP')"
db2 "call sqlj.refresh_classes()"
```

#### Langkah 3: Daftarkan prosedur tersimpan eksternal
<a name="db2-external-stored-procedures-java-register"></a>

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 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';
```

#### Langkah 4: Validasi prosedur tersimpan eksternal
<a name="db2-external-stored-procedures-java-validate"></a>

Gunakan langkah-langkah berikut untuk menguji sampel prosedur tersimpan eksternal yang terdaftar pada langkah sebelumnya.

**Untuk memvalidasi prosedur tersimpan eksternal**

1. Buat tabel seperti `TEST.TEST_TABLE` pada contoh berikut.

   ```
   db2 "create table TEST.TEST_TABLE(C1 char(6), C2 date)"
   ```

1. Panggil prosedur tersimpan eksternal yang baru. Panggilan mengembalikan status`0`.

   ```
   db2 "call TESTSP.MYJAVASP('test')"
   Return Status = 0
   ```

1. 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
   ```