

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# ConnConnecting ke IBM DB2 untuk Linux, UNIX, dan Windows Database dengan AWS Schema Conversion Tool
<a name="CHAP_Source.DB2LUW"></a>

Anda dapat menggunakan AWS SCT untuk mengkonversi skema, objek kode dalam bahasa SQL, dan kode aplikasi dari IBM Db2 untuk Linux, Unix, dan Windows (Db2 LUW) ke target berikut.
+ Amazon RDS for MySQL
+ Edisi yang Kompatibel dengan Amazon Aurora MySQL
+ Amazon RDS for PostgreSQL
+ Edisi yang Kompatibel dengan Amazon Aurora PostgreSQL
+ Amazon RDS for MariaDB

AWS SCT mendukung sebagai sumber Db2 LUW versi 9.1, 9.5, 9.7, 10.1, 10.5, 11.1, dan 11.5.

## Hak istimewa untuk Db2 LUW sebagai sumber
<a name="CHAP_Source.DB2LUW.Permissions"></a>

Hak istimewa yang diperlukan untuk terhubung ke database Db2 LUW, untuk memeriksa hak istimewa yang tersedia dan membaca metadata skema untuk sumber adalah sebagai berikut: 
+ Hak istimewa yang diperlukan untuk membuat koneksi:
  + TERHUBUNG PADA DATABASE
+ Hak istimewa diperlukan untuk menjalankan pernyataan SQL:
  + JALANKAN PADA PAKET NULLID. SYSSH200
+ Hak istimewa yang diperlukan untuk mendapatkan informasi tingkat instans:
  + JALANKAN PADA FUNGSI SYSPROC.ENV\$1GET\$1INST\$1INFO
  + PILIH DI SYSIBMADM.ENV\$1INST\$1INFO
  + PILIH DI SYSIBMADM.ENV\$1SYS\$1INFO
+ Hak istimewa yang diperlukan untuk memeriksa hak istimewa yang diberikan melalui peran, kelompok, dan otoritas:
  + JALANKAN PADA FUNGSI SYSPROC.AUTH\$1LIST\$1AUTHORITIES\$1FOR\$1AUTHID
  + JALANKAN PADA FUNGSI SYSPROC.AUTH\$1LIST\$1GROUPS\$1FOR\$1AUTHID
  + JALANKAN PADA FUNGSI SYSPROC.AUTH\$1LIST\$1ROLES\$1FOR\$1AUTHID
  + PILIH DI SYSIBMADM.PRIVILEGES
+ Hak istimewa yang diperlukan pada katalog dan tabel sistem:
  + PILIH DI SYSCAT.ATTRIBUTES
  + PILIH DI SYSCAT.CHECKS
  + PILIH DI SYSCAT.COLIDENTATTRIBUTES
  + PILIH DI SYSCAT.COLUMNS
  + PILIH PADA SYSCAT.DATAPARTITIONEXPRESSION
  + PILIH DI SYSCAT.DATAPARTITIONS
  + PILIH DI SYSCAT.DATATYPEDEP
  + PILIH DI SYSCAT.DATATYPES
  + PILIH DI SYSCAT.HIERARCHIES
  + PILIH DI SYSCAT.INDEXCOLUSE
  + PILIH DI SYSCAT.INDEXES
  + PILIH PADA SYSCAT.INDEXPARTITIONS
  + PILIH DI SYSCAT.KEYCOLUSE
  + PILIH DI SYSCAT.MODULEOBJECTS
  + PILIH DI SYSCAT.MODULES
  + PILIH DI SYSCAT.NICKIES
  + PILIH DI SYSCAT.PERIODS
  + PILIH DI SYSCAT.REFERENCES
  + PILIH DI SYSCAT.ROUTINEPARMS
  + PILIH DI SYSCAT.ROUTINES
  + PILIH DI SYSCAT.ROWFIELDS
  + PILIH DI SYSCAT.SCHEMATA
  + PILIH DI SYSCAT.SEQUENCES
  + PILIH DI SYSCAT.TABCONST
  + PILIH DI SYSCAT.TABLES
  + PILIH DI SYSCAT.TRIGGERS
  + PILIH DI SYSCAT.VARIABLEDEP
  + PILIH DI SYSCAT.VARIABLES
  + PILIH DI SYSCAT.VIEWS
  + PILIH PADA SYSIBM. SYSDUMMY1
+  Untuk menjalankan pernyataan SQL, akun pengguna memerlukan hak istimewa untuk menggunakan setidaknya salah satu beban kerja yang diaktifkan dalam database. Jika tidak ada beban kerja yang ditetapkan ke pengguna, pastikan bahwa beban kerja pengguna default dapat diakses oleh pengguna:
  + PENGGUNAAN PADA BEBAN KERJA SYSDEFAULTUSERWORKLOAD

Untuk menjalankan kueri, Anda perlu membuat ruang tabel sementara sistem dengan ukuran halaman 8K, 16K, dan 32K, jika tidak ada. Untuk membuat ruang tabel sementara, jalankan skrip berikut.

```
CREATE BUFFERPOOL BP8K
  IMMEDIATE
  ALL DBPARTITIONNUMS
  SIZE AUTOMATIC
  NUMBLOCKPAGES 0
  PAGESIZE 8K;
  
CREATE SYSTEM TEMPORARY TABLESPACE TS_SYS_TEMP_8K 
  PAGESIZE 8192 
  BUFFERPOOL BP8K;
  
CREATE BUFFERPOOL BP16K
  IMMEDIATE
  ALL DBPARTITIONNUMS
  SIZE AUTOMATIC
  NUMBLOCKPAGES 0
  PAGESIZE 16K;
  
CREATE SYSTEM TEMPORARY TABLESPACE TS_SYS_TEMP_BP16K 
  PAGESIZE 16384 
  BUFFERPOOL BP16K;  
  
CREATE BUFFERPOOL BP32K
  IMMEDIATE
  ALL DBPARTITIONNUMS
  SIZE AUTOMATIC
  NUMBLOCKPAGES 0
  PAGESIZE 32K;
  
CREATE SYSTEM TEMPORARY TABLESPACE TS_SYS_TEMP_BP32K 
  PAGESIZE 32768 
  BUFFERPOOL BP32K;
```

## Menghubungkan ke Db2 LUW sebagai sumber
<a name="CHAP_Source.DB2LUW.Connecting"></a>

Gunakan prosedur berikut untuk terhubung ke database sumber Db2 LUW Anda dengan file. AWS Schema Conversion Tool

**Untuk terhubung ke database sumber Db2 LUW**

1. Di dalam AWS Schema Conversion Tool, pilih **Tambahkan sumber**. 

1. **Pilih **Db2 LUW**, lalu pilih Berikutnya.** 

   Kotak dialog **Tambah sumber** muncul.

1. Untuk **nama Koneksi**, masukkan nama untuk database Anda. AWS SCT menampilkan nama ini di pohon di panel kiri. 

1. Gunakan kredensi database dari AWS Secrets Manager atau masukkan secara manual:
   + Untuk menggunakan kredensi database dari Secrets Manager, gunakan petunjuk berikut:

     1. Untuk **AWS Rahasia**, pilih nama rahasianya.

     1. **Pilih Isi untuk secara otomatis mengisi semua nilai di kotak dialog koneksi database dari Secrets Manager.**

     Untuk informasi tentang menggunakan kredensil database dari Secrets Manager, lihat. [Mengkonfigurasi AWS Secrets Manager di AWS Schema Conversion Tool](CHAP_UserInterface.SecretsManager.md)
   + Untuk memasukkan informasi koneksi database sumber IBM Db2 LUW secara manual, gunakan petunjuk berikut:  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/SchemaConversionTool/latest/userguide/CHAP_Source.DB2LUW.html)

1. Pilih **Uji Koneksi** untuk memverifikasi bahwa AWS SCT dapat terhubung ke database sumber Anda. 

1. Pilih **Connect** untuk terhubung ke database sumber Anda.

# Migrasi dari IBM DB2 untuk Linux, UNIX, dan Windows ke Amazon Relational Database Service untuk PostgreSQL atau Amazon Aurora PostgreSQL Edisi yang kompatibel dengan PostgreSQL
<a name="CHAP_Source.DB2LUW.ToPostgreSQL"></a>

Ketika Anda memigrasikan IBM Db2 LUW ke PostgreSQL, dapat mengonversi berbagai pernyataan pemicu yang digunakan dengan Db2 LUW. AWS SCT Pernyataan pemicu ini meliputi:
+ **Peristiwa pemicu — peristiwa** pemicu INSERT, DELETE, dan UPDATE menentukan bahwa tindakan yang dipicu berjalan setiap kali acara diterapkan ke tabel subjek atau tampilan subjek. Anda dapat menentukan kombinasi apa pun dari acara INSERT, DELETE, dan UPDATE, tetapi Anda dapat menentukan setiap acara hanya sekali. AWS SCT mendukung peristiwa pemicu tunggal dan ganda. Untuk acara, PostgreSQL praktis memiliki fungsi yang sama. 
+ **Event OF COLUMN** - Anda dapat menentukan nama kolom dari tabel dasar. Pemicu diaktifkan hanya dengan pembaruan kolom yang diidentifikasi dalam daftar nama kolom. PostgreSQL memiliki fungsi yang sama.
+ **Pemicu pernyataan** — Ini menentukan bahwa tindakan yang dipicu diterapkan hanya sekali untuk seluruh pernyataan. Anda tidak dapat menentukan jenis granularitas pemicu ini untuk pemicu SEBELUM atau pemicu BUKAN. Jika ditentukan, pemicu UPDATE atau DELETE diaktifkan, meskipun tidak ada baris yang terpengaruh. PostgreSQL juga memiliki fungsi ini dan memicu deklarasi untuk pemicu pernyataan identik untuk PostgreSQL dan Db2 LUW.
+ **Klausa referensi** - Ini menentukan nama korelasi untuk variabel transisi dan nama tabel untuk tabel transisi. Nama korelasi mengidentifikasi baris tertentu dalam kumpulan baris yang dipengaruhi oleh operasi SQL pemicu. Nama tabel mengidentifikasi set lengkap baris yang terpengaruh. Setiap baris yang dipengaruhi oleh operasi SQL pemicu tersedia untuk tindakan yang dipicu dengan mengkualifikasi kolom dengan nama korelasi tertentu. PostgreSQL tidak mendukung fungsi ini, dan hanya menggunakan nama korelasi BARU atau LAMA.
+ **BUKAN pemicu** - AWS SCT mendukung ini.

## Mengonversi tabel dipartisi Db2 LUW ke PostgreSQL versi 10 tabel dipartisi
<a name="CHAP_Source.DB2LUW.ToPostgreSQL.PartitionedTables"></a>

AWS SCT dapat mengkonversi tabel Db2 LUW ke tabel dipartisi di PostgreSQL 10. Ada beberapa batasan saat mengonversi tabel partisi Db2 LUW ke PostgreSQL:
+ Anda dapat membuat tabel dipartisi dengan kolom nullable di Db2 LUW, dan Anda dapat menentukan partisi untuk menyimpan nilai NULL. Namun, PostgreSQL tidak mendukung nilai NULL untuk partisi RANGE.
+ Db2 LUW dapat menggunakan klausa INCLUSIVE atau EXCLUSIVE untuk menetapkan nilai batas rentang. PostgreSQL hanya mendukung INCLUSIVE untuk batas awal dan EKSKLUSIF untuk batas akhir. Nama partisi yang dikonversi dalam format <original\$1table\$1name>\$1<original\$1partition\$1name>.
+ Anda dapat membuat kunci primer atau unik untuk tabel yang dipartisi di Db2 LUW. PostgreSQL mengharuskan Anda untuk membuat kunci primer atau unik untuk setiap partisi secara langsung. Batasan kunci primer atau unik harus dihapus dari tabel induk. Nama kunci yang dikonversi ada dalam format <original\$1key\$1name>\$1<original\$1partition \$1name>.
+ Anda dapat membuat batasan kunci asing dari dan ke tabel yang dipartisi di Db2 LUW. Namun, PostgreSQL tidak mendukung referensi kunci asing dalam tabel yang dipartisi. PostgreSQL juga tidak mendukung referensi kunci asing dari tabel yang dipartisi ke tabel lain.
+ Anda dapat membuat indeks pada tabel yang dipartisi di Db2 LUW. Namun, PostgreSQL mengharuskan Anda untuk membuat indeks untuk setiap partisi secara langsung. Indeks harus dihapus dari tabel induk. Nama indeks yang dikonversi dalam format <original\$1index\$1name>\$1<original\$1partition\$1name>.
+ Anda harus menentukan pemicu baris pada partisi individual, bukan pada tabel yang dipartisi. Pemicu harus dihapus dari tabel induk. Nama pemicu yang dikonversi ada dalam format <original\$1trigger\$1name>\$1<original\$1partition\$1name>.

## Hak istimewa untuk PostgreSQL sebagai target
<a name="CHAP_Source.DB2LUW.ToPostgreSQL.ConfigureTarget"></a>

Untuk menggunakan PostgreSQL sebagai target, membutuhkan hak istimewa. AWS SCT `CREATE ON DATABASE` Pastikan Anda memberikan hak istimewa ini untuk setiap database PostgreSQL target.

Untuk menggunakan sinonim publik yang dikonversi, ubah jalur pencarian default database menjadi`"$user", public_synonyms, public`.

Anda dapat menggunakan contoh kode berikut untuk membuat pengguna database dan memberikan hak istimewa.

```
CREATE ROLE user_name LOGIN PASSWORD 'your_password';
GRANT CREATE ON DATABASE db_name TO user_name;
ALTER DATABASE db_name SET SEARCH_PATH = "$user", public_synonyms, public;
```

Pada contoh sebelumnya, ganti *user\$1name* dengan nama pengguna Anda. Kemudian, ganti *db\$1name* dengan nama database target Anda. Akhirnya, ganti *your\$1password* dengan kata sandi yang aman.

Di PostgreSQL, hanya pemilik skema atau a yang dapat menjatuhkan skema. `superuser` Pemilik dapat menjatuhkan skema dan semua objek yang disertakan skema ini bahkan jika pemilik skema tidak memiliki beberapa objeknya.

Saat Anda menggunakan pengguna yang berbeda untuk mengonversi dan menerapkan skema yang berbeda ke basis data target Anda, Anda bisa mendapatkan pesan kesalahan saat tidak AWS SCT dapat menjatuhkan skema. Untuk menghindari pesan kesalahan ini, gunakan `superuser` peran. 

# Migrasi dari IBM DB2 untuk Linux, UNIX, dan Windows ke Amazon RDS for MySQL atau Amazon Aurora MySQL
<a name="CHAP_Source.DB2LUW.ToMySQL"></a>

Saat Anda mengonversi database IBM Db2 LUW ke RDS untuk MySQL atau Amazon Aurora MySQL, perhatikan hal-hal berikut.

## Hak istimewa untuk MySQL sebagai target
<a name="CHAP_Source.DB2LUW.ToMySQL.ConfigureTarget"></a>

Hak istimewa yang diperlukan untuk MySQL sebagai target adalah sebagai berikut:
+ BUAT PADA \$1 . \$1
+ UBAH PADA \$1 . \$1
+ JATUHKAN\$1 . \$1
+ INDEKS PADA\$1 . \$1
+ REFERENSI PADA\$1 . \$1
+ PILIH PADA \$1 . \$1
+ BUAT TAMPILAN DI \$1 . \$1
+ TAMPILKAN TAMPILAN DI \$1 . \$1
+ PEMICU PADA\$1 . \$1
+ BUAT RUTINITAS DI \$1 . \$1
+ MENGUBAH RUTINITAS PADA \$1 . \$1
+ MENGEKSEKUSI PADA \$1 . \$1
+ PILIH DI mysql.proc
+ SISIPKAN, PERBARUI PADA AWS\$1DB 2\$1EXT. \$1
+ SISIPKAN, PERBARUI, HAPUS PADA AWS\$1DB 2\$1EXT\$1DATA. \$1
+ BUAT TABEL SEMENTARA PADA AWS\$1DB 2\$1EXT\$1DATA. \$1

Anda dapat menggunakan contoh kode berikut untuk membuat pengguna database dan memberikan hak istimewa.

```
CREATE USER 'user_name' IDENTIFIED BY 'your_password';
GRANT CREATE ON *.* TO 'user_name';
GRANT ALTER ON *.* TO 'user_name';
GRANT DROP ON *.* TO 'user_name';
GRANT INDEX ON *.* TO 'user_name';
GRANT REFERENCES ON *.* TO 'user_name';
GRANT SELECT ON *.* TO 'user_name';
GRANT CREATE VIEW ON *.* TO 'user_name';
GRANT SHOW VIEW ON *.* TO 'user_name';
GRANT TRIGGER ON *.* TO 'user_name';
GRANT CREATE ROUTINE ON *.* TO 'user_name';
GRANT ALTER ROUTINE ON *.* TO 'user_name';
GRANT EXECUTE ON *.* TO 'user_name';
GRANT SELECT ON mysql.proc TO 'user_name';
GRANT INSERT, UPDATE ON AWS_DB2_EXT.* TO 'user_name';
GRANT INSERT, UPDATE, DELETE ON AWS_DB2_EXT_DATA.* TO 'user_name';
GRANT CREATE TEMPORARY TABLES ON AWS_DB2_EXT_DATA.* TO 'user_name';
```

Pada contoh sebelumnya, ganti *user\$1name* dengan nama pengguna Anda. Kemudian, ganti *your\$1password* dengan kata sandi yang aman.

Untuk menggunakan Amazon RDS for MySQL atau Aurora MySQL sebagai target, tetapkan parameter ke. `lower_case_table_names` `1` Nilai ini berarti bahwa server MySQL menangani pengidentifikasi nama objek seperti tabel, indeks, pemicu, dan database sebagai case insensitive. Jika Anda telah mengaktifkan logging biner dalam instance target Anda, maka atur `log_bin_trust_function_creators` parameternya ke`1`. Dalam hal ini, Anda tidak perlu menggunakan`DETERMINISTIC`, `READS SQL DATA` atau `NO SQL` karakteristik untuk membuat fungsi yang disimpan. Untuk mengonfigurasi parameter ini, buat grup parameter DB baru atau modifikasi grup parameter DB yang ada.