Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Migrasikan paket pragma Oracle SERIALLY_REUSABLE ke PostgreSQL
Vinay Paladi, Amazon Web Services
Ringkasan
Pola ini menyediakan step-by-step pendekatan untuk memigrasikan paket Oracle yang didefinisikan sebagai SERIALLY_REUSABLE pragma ke PostgreSQL di Amazon Web Services (AWS). Pendekatan ini mempertahankan fungsionalitas pragma SERIALLY_REUSABLE.
PostgreSQL tidak mendukung konsep paket dan pragma SERIALLY_REUSABLE. Untuk mendapatkan fungsionalitas serupa di PostgreSQL, Anda dapat membuat skema untuk paket dan menyebarkan semua objek terkait (seperti fungsi, prosedur, dan tipe) di dalam skema. Untuk mencapai fungsionalitas pragma SERIALLY_REUSABLE, contoh skrip fungsi pembungkus yang disediakan dalam pola ini menggunakan paket ekstensi AWS Schema Conversion Tool (AWS SCT).
Untuk informasi selengkapnya, lihat SERIALLY_REUSABLE Pragma
Prasyarat dan batasan
Prasyarat
Akun AWS yang aktif
Versi terbaru AWS SCT dan driver yang diperlukan
Database Edisi yang kompatibel dengan Amazon Aurora PostgreSQL atau Amazon Relational Database Service (Amazon RDS) untuk database PostgreSQL
Versi produk
Oracle Database versi 10g dan yang lebih baru
Arsitektur
Tumpukan teknologi sumber
Database Oracle di tempat
Tumpukan teknologi target
Arsitektur migrasi

Alat
Layanan AWS
AWS Schema Conversion Tool (AWS SCT) mendukung migrasi database heterogen dengan secara otomatis mengonversi skema basis data sumber dan sebagian besar kode kustom ke format yang kompatibel dengan database target.
Amazon Aurora PostgreSQL Compatible Edition adalah mesin database relasional yang dikelola sepenuhnya dan sesuai dengan ACID yang membantu Anda mengatur, mengoperasikan, dan menskalakan penerapan PostgreSQL.
Amazon Relational Database Service (Amazon RDS) untuk PostgreSQL membantu Anda mengatur, mengoperasikan, dan menskalakan database relasional PostgreSQL di AWS Cloud.
Alat-alat lainnya
pgAdmin
adalah alat manajemen sumber terbuka untuk PostgreSQL. Ini menyediakan antarmuka grafis yang membantu Anda membuat, memelihara, dan menggunakan objek database.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Siapkan AWS SCT. | Konfigurasikan konektivitas AWS SCT ke database sumber. Untuk informasi selengkapnya, lihat Menggunakan Oracle Database sebagai sumber AWS SCT. | DBA, Pengembang |
Konversi skrip. | Gunakan AWS SCT untuk mengonversi paket Oracle dengan memilih database target sebagai Aurora PostgreSQL kompatibel. | DBA, Pengembang |
Simpan file.sql. | Sebelum Anda menyimpan file.sql, ubah opsi Pengaturan Proyek di AWS SCT ke File tunggal per tahap. AWS SCT akan memisahkan file.sql menjadi beberapa file.sql berdasarkan jenis objek. | DBA, Pengembang |
Ubah kodenya. | Buka | DBA, Pengembang |
Uji konversi. | Menyebarkan | DBA, Pengembang |
Sumber daya terkait
Informasi tambahan
Source Oracle Code: CREATE OR REPLACE PACKAGE test_pkg_var IS PRAGMA SERIALLY_REUSABLE; PROCEDURE function_1 (test_id number); PROCEDURE function_2 (test_id number ); END; CREATE OR REPLACE PACKAGE BODY test_pkg_var IS PRAGMA SERIALLY_REUSABLE; v_char VARCHAR2(20) := 'shared.airline'; v_num number := 123; PROCEDURE function_1(test_id number) IS begin dbms_output.put_line( 'v_char-'|| v_char); dbms_output.put_line( 'v_num-'||v_num); v_char:='test1'; function_2(0); END; PROCEDURE function_2(test_id number) is begin dbms_output.put_line( 'v_char-'|| v_char); dbms_output.put_line( 'v_num-'||v_num); END; END test_pkg_var; Calling the above functions set serveroutput on EXEC test_pkg_var.function_1(1); EXEC test_pkg_var.function_2(1); Target Postgresql Code: CREATE SCHEMA test_pkg_var; CREATE OR REPLACE FUNCTION test_pkg_var.init(pg_serialize IN INTEGER DEFAULT 0) RETURNS void AS $BODY$ DECLARE BEGIN if aws_oracle_ext.is_package_initialized( 'test_pkg_var' ) AND pg_serialize = 0 then return; end if; PERFORM aws_oracle_ext.set_package_initialized( 'test_pkg_var' ); PERFORM aws_oracle_ext.set_package_variable( 'test_pkg_var', 'v_char', 'shared.airline.basecurrency'::CHARACTER VARYING(100)); PERFORM aws_oracle_ext.set_package_variable('test_pkg_var', 'v_num', 123::integer); END; $BODY$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION test_pkg_var.function_1(pg_serialize int default 1) RETURNS void AS $BODY$ DECLARE BEGIN PERFORM test_pkg_var.init(pg_serialize); raise notice 'v_char%',aws_oracle_ext.get_package_variable( 'test_pkg_var', 'v_char'); raise notice 'v_num%',aws_oracle_ext.get_package_variable( 'test_pkg_var', 'v_num'); PERFORM aws_oracle_ext.set_package_variable( 'test_pkg_var', 'v_char', 'test1'::varchar); PERFORM test_pkg_var.function_2(0); END; $BODY$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION test_pkg_var.function_2(IN pg_serialize integer default 1) RETURNS void AS $BODY$ DECLARE BEGIN PERFORM test_pkg_var.init(pg_serialize); raise notice 'v_char%',aws_oracle_ext.get_package_variable( 'test_pkg_var', 'v_char'); raise notice 'v_num%',aws_oracle_ext.get_package_variable( 'test_pkg_var', 'v_num'); END; $BODY$ LANGUAGE plpgsql; Calling the above functions select test_pkg_var.function_1() select test_pkg_var.function_2()