Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Migrasi aplikasi lama dari Oracle Pro*C ke ECPG
Sai Parthasaradhi dan Mahesh Balumuri, Amazon Web Services
Ringkasan
Sebagian besar aplikasi lama yang telah tertanam kode SQL menggunakan precompiler Oracle Pro*C untuk mengakses database. Ketika Anda memigrasikan database Oracle ini ke Amazon Relational Database Service (Amazon RDS) untuk PostgreSQL atau Amazon Aurora PostgreSQL Compatible Edition, Anda harus mengonversi kode aplikasi Anda ke format yang kompatibel dengan precompiler di PostgreSQL, yang disebut ECPG. Pola ini menjelaskan cara mengonversi kode Oracle Pro*C ke padanannya di PostgreSQL ECPG.
Untuk informasi selengkapnya tentang Pro*C, lihat dokumentasi Oracle
Prasyarat dan batasan
Prasyarat
Akun AWS yang aktif
Database yang kompatibel dengan Amazon RDS for PostgreSQL atau Aurora PostgreSQL
Database Oracle berjalan di tempat
Alat
Paket PostgreSQL tercantum di bagian berikutnya.
AWS CLI — AWS Command Line Interface (AWS CLI) Command Line Interface (AWS CLI) adalah alat sumber terbuka untuk berinteraksi dengan layanan AWS melalui perintah di shell baris perintah Anda. Dengan konfigurasi minimal, Anda dapat menjalankan perintah AWS CLI yang menerapkan fungsionalitas yang setara dengan yang disediakan oleh AWS Management Console berbasis browser dari prompt perintah.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
| Instal paket PostgreSQL. | Instal paket PostgreSQL yang diperlukan dengan menggunakan perintah berikut.
| Pengembang aplikasi, DevOps insinyur |
| Instal file header dan pustaka. | Instal
Untuk lingkungan pengembangan saja, jalankan juga perintah berikut.
| Pengembang aplikasi, DevOps insinyur |
| Konfigurasikan variabel jalur lingkungan. | Mengatur jalur lingkungan untuk pustaka klien PostgreSQL.
| Pengembang aplikasi, DevOps insinyur |
| Instal perangkat lunak tambahan seperlunya. | Jika diperlukan, instal pgLoader sebagai pengganti SQL* loader di Oracle.
Jika Anda memanggil aplikasi Java apa pun dari modul Pro* C, instal Java.
Instal ant untuk mengkompilasi kode Java.
| Pengembang aplikasi, DevOps insinyur |
| Instal AWS CLI. | Instal AWS CLI untuk menjalankan perintah agar berinteraksi dengan layanan AWS seperti AWS Secrets Manager dan Amazon Simple Storage Service (Amazon S3) dari aplikasi Anda.
| Pengembang aplikasi, DevOps insinyur |
| Identifikasi program yang akan dikonversi. | Identifikasi aplikasi yang ingin Anda konversi dari Pro* C ke ECPG. | Pengembang aplikasi, Pemilik aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
| Hapus header yang tidak diinginkan. | Hapus | Pemilik aplikasi, Pengembang aplikasi |
| Perbarui deklarasi variabel. | Tambahkan Hapus
| Pengembang aplikasi, Pemilik aplikasi |
| Perbarui fungsionalitas ROWNUM. |
Kode Pro* C:
Kode ECPG:
| Pengembang aplikasi, Pemilik aplikasi |
| Perbarui parameter fungsi untuk menggunakan variabel alias. | Di PostgreSQL, parameter fungsi tidak dapat digunakan sebagai variabel host. Menimpa mereka dengan menggunakan variabel alias. Kode Pro* C:
Kode ECPG:
| Pengembang aplikasi, Pemilik aplikasi |
| Perbarui jenis struct. | Tentukan Kode Pro* C: Berkas header (
Kode ECPG: Berkas header (
Berkas Pro*C ()
File ECPG ()
| Pengembang aplikasi, Pemilik aplikasi |
| Ubah logika untuk mengambil dari kursor. | Untuk mengambil beberapa baris dari kursor dengan menggunakan variabel array, ubah kode yang akan digunakan. Kode Pro* C:
Kode ECPG:
| Pengembang aplikasi, Pemilik aplikasi |
| Ubah panggilan paket yang tidak memiliki nilai pengembalian. | Fungsi paket Oracle yang tidak memiliki nilai kembali harus dipanggil dengan variabel indikator. Jika aplikasi Anda menyertakan beberapa fungsi yang memiliki nama yang sama atau jika fungsi tipe yang tidak dikenal menghasilkan kesalahan runtime, ketikkan nilai ke tipe data. Kode Pro* C:
Kode ECPG:
| Pengembang aplikasi, Pemilik aplikasi |
| Tulis ulang variabel SQL_CURSOR. | Tulis ulang Kode Pro* C:
Kode ECPG:
| Pengembang aplikasi, Pemilik aplikasi |
| Terapkan pola migrasi umum. |
| Pengembang aplikasi, Pemilik aplikasi |
| Aktifkan debugging, jika diperlukan. | Untuk menjalankan program ECPG dalam mode debug, tambahkan perintah berikut di dalam blok fungsi utama.
| Pengembang aplikasi, Pemilik aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
| Buat file yang dapat dieksekusi untuk ECPG. | Jika Anda memiliki file sumber SQL C tertanam bernama
| Pengembang aplikasi, Pemilik aplikasi |
| Buat file make untuk kompilasi. | Buat file make untuk mengkompilasi program ECPG, seperti yang ditunjukkan pada file contoh berikut.
| Pengembang aplikasi, Pemilik aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
| Uji kode. | Uji kode aplikasi yang dikonversi untuk memastikan bahwa itu berfungsi dengan benar. | Pengembang aplikasi, Pemilik aplikasi, Insinyur uji |
Sumber daya terkait
ECPG - SQL Tertanam di C
(dokumentasi PostgreSQL) Penanganan Kesalahan
(dokumentasi PostgreSQL) Mengapa Menggunakan Oracle Pro*C/C++
Precompiler (dokumentasi Oracle)
Informasi tambahan
PostgreSQL memiliki precompiler SQL tertanam, ECPG, yang setara dengan precompiler Oracle Pro*C. ECPG mengkonversi program C yang telah tertanam pernyataan SQL untuk kode C standar dengan mengganti panggilan SQL dengan panggilan fungsi khusus. File output kemudian dapat diproses dengan rantai alat kompiler C apa pun.
File input dan output
ECPG mengonversi setiap file input yang Anda tentukan pada baris perintah ke file output C yang sesuai. Jika nama file input tidak memiliki ekstensi file, .pgc diasumsikan. Ekstensi file diganti dengan .c untuk membangun nama file output. Namun, Anda dapat mengganti nama file output default dengan menggunakan -o opsi.
Jika Anda menggunakan tanda hubung (-) sebagai nama file input, ECPG membaca program dari input standar dan menulis ke output standar, kecuali jika Anda menggantinya dengan menggunakan opsi. -o
File header
Ketika kompiler PostgreSQL mengkompilasi file kode C yang telah diproses sebelumnya, ia mencari file header ECPG di direktori PostgreSQL. include Oleh karena itu, Anda mungkin harus menggunakan -I opsi untuk mengarahkan kompiler ke direktori yang benar (misalnya,-I/usr/local/pgsql/include).
Perpustakaan
Program yang menggunakan kode C dengan SQL tertanam harus ditautkan dengan libecpg perpustakaan. Misalnya, Anda dapat menggunakan opsi -L/usr/local/pgsql/lib -lecpg tautan.
Aplikasi ECPG yang dikonversi memanggil fungsi di libpq perpustakaan melalui perpustakaan SQL tertanam (ecpglib), dan berkomunikasi dengan server PostgreSQL dengan menggunakan protokol standar. frontend/backend