Ruang kerja konversi

Ruang kerja konversi membantu Anda mengonversi skema dan objek dari database sumber menjadi sintaksis SQL yang kompatibel dengan database tujuan. Halaman ini memberikan ringkasan ruang kerja konversi Database Migration Service:

Terlepas dari apakah Anda menggunakan konversi skema otomatis atau membuat file pemetaan konversi tambahan, ada jenis data tertentu yang tidak didukung untuk migrasi Oracle. Untuk mengetahui informasi selengkapnya, lihat Batasan yang diketahui untuk jenis data.

Konversi kode dan skema otomatis

Saat Anda membuat ruang kerja konversi, Database Migration Service akan otomatis melakukan konversi skema awal. Konversi skema otomatis mendukung subset objek database Oracle yang sangat spesifik yang tersedia.

Konversi kode otomatis memberikan dukungan untuk objek database Oracle berikut:

Elemen skema Oracle yang didukung

  • Batasan
  • Indeks (hanya indeks yang dibuat dalam skema yang sama dengan tabelnya)
  • Tampilan Terwujud
  • Jenis Objek (dukungan sebagian)
  • Urutan
  • Sinonim
  • Tabel
  • Dilihat

Elemen kode Oracle yang didukung

  • Pemicu (khusus tingkat tabel)
  • Paket
  • Functions
  • Prosedur Tersimpan

Editor SQL interaktif

Editor SQL interaktif memungkinkan Anda mengubah sintaksis PostgreSQL yang dikonversi langsung di Database Migration Service. Anda dapat menggunakannya untuk memperbaiki masalah konversi atau menyesuaikan skema agar lebih sesuai dengan kebutuhan Anda. Beberapa objek tidak dapat diubah di editor bawaan.

Objek Oracle yang dapat diedit

Setelah mengonversi kode dan skema database sumber, Anda dapat menggunakan editor interaktif untuk mengubah SQL yang dihasilkan untuk jenis objek tertentu. Objek Oracle berikut didukung oleh editor:

  • Pemicu tabel (memerlukan izin)
  • Tampilan terwujud
  • Paket
  • Fungsi, prosedur tersimpan
  • Sinonim
  • Dilihat
  • Batasan
  • Indeks
  • Urutan

Selain itu, beberapa objek dikonversi, tetapi tidak tersedia untuk diedit secara langsung di dalam Database Migration Service. Untuk mengubah objek tersebut, Anda perlu melakukan update langsung di database tujuan setelah menerapkan skema dan kode yang dikonversi.

Objek yang tidak didukung untuk pengeditan:

  • Jenis objek yang ditentukan pengguna
  • Tabel
  • Skema

Fitur konversi terbantu Gemini

Database Migration Service mengintegrasikan Gemini untuk Google Cloud ke dalam workspace konversi untuk membantu Anda mempercepat dan meningkatkan proses konversi di dua area:

  • Berikan fitur penjelasan kode dengan asisten konversi: serangkaian perintah khusus yang dapat membantu Anda lebih memahami logika konversi, mengusulkan perbaikan untuk masalah konversi, atau mengoptimalkan kode yang dikonversi.

  • Percepat penerapan perbaikan untuk masalah konversi dengan saran konversi kode Gemini: mekanisme tempat model Gemini dapat belajar saat Anda memperbaiki masalah konversi dan menyarankan perubahan pada objek lain yang rusak di ruang kerja.

Untuk mengetahui informasi selengkapnya tentang konversi yang dibantu Gemini, lihat halaman berikut:

File pemetaan konversi

Anda dapat menyesuaikan logika konversi dengan file pemetaan konversi. File pemetaan konversi adalah file teks yang berisi petunjuk yang tepat (disebut sebagai perintah konversi) untuk cara objek Oracle Anda dikonversi menjadi objek PostgreSQL.

Perintah konversi yang didukung

Database Migration Service mendukung perintah konversi berikut untuk file pemetaan konversi:

EXPORT_SCHEMA

EXPORT_SCHEMA adalah perintah wajib untuk semua file pemetaan konversi. Database Migration Service memerlukan petunjuk ini untuk memastikan bahwa skema sumber Anda dikonversi ke skema tujuan yang benar. Pastikan file pemetaan konversi Anda menyertakan baris ini:

EXPORT_SCHEMA 1

SCHEMA

Layanan Migrasi Database harus dapat menentukan skema mana yang berisi objek yang harus diubah dengan perintah konversi Anda. Perintah SCHEMA menghasilkan penyesuaian berikut pada alur konversi:

  • Database Migration Service hanya mengonversi skema ini. Jika Anda perlu mengonversi skema lain dalam satu ruang kerja konversi, Anda perlu mengupload beberapa file dengan skema yang berbeda.
  • Semua perintah penyesuaian lainnya yang diberikan dalam file Anda hanya berlaku untuk objek dalam skema khusus ini.

Gunakan format berikut:

SCHEMA SCHEMA_NAME

Dengan SCHEMA_NAME adalah nama skema Anda di database sumber.

  • Jika Anda menyertakan perintah ini dalam file pemetaan konversi, semua penyesuaian hanya diterapkan ke objek yang terdapat dalam skema khusus ini. Jika ingin menyesuaikan objek dalam skema lain, Anda perlu membuat beberapa file pemetaan konversi dan menguploadnya ke ruang kerja konversi.
  • Jika Anda melewati perintah ini, Anda harus memberikan nama skema eksplisit untuk objek yang diubah oleh perintah konversi lainnya. Misalnya, daripada menggunakan SOURCE_TABLE_NAME untuk perintah REPLACE_TABLES, Anda harus menggunakan "SCHEMA_NAME.SOURCE_TABLE_NAME".

DATA_TYPE

Anda dapat menggunakan perintah ini untuk memetakan jenis data yang didukung secara eksplisit antara sintaksis Oracle dan PostgreSQL. Perintah ini mengharapkan daftar pemetaan yang dipisahkan koma. Seluruh definisi harus diberikan dalam satu baris, tetapi Anda menyertakan beberapa perintah DATA_TYPE dalam file konfigurasi. Gunakan format berikut:

DATA_TYPE ORACLE_DATA_TYPE1:PGSQL_DATA_TYPE1
DATA_TYPE ORACLE_DATA_TYPE2:PGSQL_DATA_TYPE2...

Dengan ORACLE_DATA_TYPE dan PGSQL_DATA_TYPE adalah jenis data yang didukung oleh versi Oracle dan PostgreSQL masing-masing yang Anda gunakan dalam migrasi. Untuk mengetahui informasi tentang versi yang didukung, lihat Ringkasan skenario.

Contoh:

DATA_TYPE REAL:double precision,SMALLINT:integer

Untuk informasi selengkapnya tentang jenis data Oracle dan PostgreSQL, lihat:

MODIFY_TYPE

Dengan perintah MODIFY_TYPE, Anda dapat mengontrol jenis data yang digunakan Layanan Migrasi Database untuk mengonversi kolom tertentu dalam tabel sumber. Perintah ini mengharapkan daftar pemetaan yang dipisahkan koma. Seluruh definisi harus diberikan dalam satu baris, tetapi Anda menyertakan beberapa perintah MODIFY_TYPE dalam file konfigurasi. Gunakan format berikut:

MODIFY_TYPE SOURCE_TABLE_NAME1:COLUMN_NAME:EXPECTED_END_RESULT_DATA_TYPE
MODIFY_TYPE SOURCE_TABLE_NAME2:COLUMN_NAME:EXPECTED_END_RESULT_DATA_TYPE...

Dengan keterangan:

  • SOURCE_TABLE_NAME adalah nama tabel yang berisi kolom tempat Anda ingin mengubah jenis data.
  • COLUMN_NAME adalah nama kolom yang pemetaan konversinya ingin Anda sesuaikan.
  • EXPECTED_END_RESULT_DATA_TYPE adalah jenis data PostgreSQL yang ingin Anda gunakan untuk kolom yang dikonversi.

Contoh:

MODIFY_TYPE events:dates_and_times:DATETIME,users:pseudonym:TEXT

PG_INTEGER_TYPE

Secara default,Database Migration Service mengonversi jenis NUMBER(p,s) menjadi jenis DECIMAL(p,s) PostgreSQL.

Anda dapat mengubah perilaku ini dengan perintah PG_INTEGER_TYPE. Tetapkan nilainya ke 1 dan paksa semua jenis NUMBER dengan presisi dan skala (NUMBER(p,s)) untuk dikonversi menjadi jenis smallint, integer, atau bigint PostgreSQL berdasarkan jumlah digit presisi.

Sertakan setelan berikut dalam file pemetaan konversi Anda:

PG_INTEGER_TYPE 1

PG_NUMERIC_TYPE

Tetapkan perintah ini ke 1 jika Anda ingin mengonversi semua jenis NUMBER dengan presisi dan skala (NUMBER(p,s)) menjadi jenis real atau float PostgreSQL (berdasarkan jumlah digit presisinya).

Jika Anda menetapkan perintah ini ke 0, nilai NUMBER(p,s) akan mempertahankan nilai aslinya yang tepat dan menggunakan jenis data PostgreSQL internal.

Sertakan setelan berikut dalam file pemetaan konversi Anda:

PG_NUMERIC_TYPE 1

DEFAULT_NUMERIC

Konversi default untuk NUMBER tanpa presisi akan berubah, baik Anda juga menggunakan perintah PG_INTEGER_TYPE:

  • Jika Anda menggunakan perintah PG_INTEGER, NUMBER tanpa presisi akan dikonversi menjadi nilai DECIMAL.
  • Jika Anda tidak menggunakan perintah PG_INTEGER, NUMBER tanpa presisi akan dikonversi menjadi nilai BIGINT.

Anda dapat mengubah perilaku ini dan menggunakan perintah DEFAULT_NUMERIC untuk menentukan jenis data yang harus digunakan untuk jenis NUMBER tanpa titik presisi yang ditentukan. Gunakan format berikut:

DEFAULT_NUMERIC POSTGRESQL_NUMERIC_DATA_TYPE

Dengan POSTGRESQL_NUMERIC_DATA_TYPE adalah salah satu dari hal berikut: integer, smallint, bigint.

Contoh:

DEFAULT_NUMERIC integer

REPLACE_COLS

Anda dapat menggunakan perintah REPLACE_COLS untuk mengganti nama kolom dalam skema yang dikonversi. Perintah ini mengharapkan daftar pemetaan yang dipisahkan koma. Gunakan format berikut:

REPLACE_COLS SOURCE_TABLE_NAME1(SOURCE1_TABLE1_COLUMN_NAME1:DESTINATION_TABLE1_COLUMN_NAME1,SOURCE_TABLE1_COLUMN_NAME2:DESTINATION_TABLE1_COLUMN_NAME2),SOURCE_TABLE_NAME2(SOURCE_TABLE2_COLUMN_NAME1:DESTINATION_TABLE2_COLUMN_NAME1,SOURCE_TABLE2_COLUMN_NAME2:DESTINATION_TABLE2_COLUMN_NAME2)...

Dengan keterangan:

  • SOURCE_TABLE_NAME adalah nama tabel yang berisi kolom yang namanya ingin Anda ubah.
  • SOURCE_COLUMN_NAME adalah nama kolom di sumber yang namanya ingin Anda ubah.
  • DESTINATION_COLUMN_NAME adalah nama baru untuk kolom yang ingin Anda gunakan dalam skema yang dikonversi.

Contoh:

REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname)

REPLACE_TABLES

Anda dapat menggunakan perintah REPLACE_TABLES untuk mengganti nama tabel atau memindahkannya ke skema baru. Perintah ini mengharapkan daftar pemetaan yang dipisahkan spasi. Untuk informasi selengkapnya tentang sintaksis untuk setiap kasus penggunaan, luaskan bagian berikut.

Mengganti nama tabel

Untuk mengganti nama tabel dalam skema yang dikonversi, gunakan format berikut:

REPLACE_TABLES SOURCE_TABLE_NAME1:DESTINATION_TABLE_NAME1 SOURCE_TABLE_NAME2:DESTINATION_TABLE_NAME2

Dengan keterangan:

  • SOURCE_TABLE_NAME adalah nama tabel sumber yang ingin diganti namanya dalam skema yang dikonversi.
  • DESTINATION_TABLE_NAME adalah nama baru untuk tabel yang ingin Anda gunakan dalam skema yang dikonversi.

Contoh:

REPLACE_TABLES "events:login_events" "users:platform_users"

Memindahkan tabel antar-skema

Anda dapat menggunakan perintah ini untuk memindahkan tabel antar-skema dengan menambahkan awalan skema ke nama tabel baru. Mekanisme ini dapat digunakan terlepas dari cara Anda menggunakan perintah SCHEMA untuk seluruh file konversi. Contoh:

REPLACE_TABLES "events:NEW_SCHEMA_NAME.login_events"
    

Alias untuk menyesuaikan jenis data

Saat menggunakan perintah konversi untuk mengubah cara Database Migration Service mengonversi jenis data yang berbeda (misalnya, dengan perintah DATA_TYPE, MODIFY_TYPE, atau PG_NUMERIC_TYPE), Anda dapat menggunakan alias, bukan jenis data SQL sumber.

Luaskan bagian berikut untuk melihat daftar alias jenis data yang didukung oleh Layanan Migrasi Database.

Alias jenis data

Alias Dikonversi ke jenis PostgreSQL
bigint, int8 BIGINT
bool, boolean BOOLEAN
bytea BYTEA
char, character CHAR
character varying, varchar VARCHAR
date DATE
decimal, numeric DECIMAL
double precision, float8 DOUBLE PRECISION
real, float4 REAL
int, integer, int4 INTEGER
int2 SMALLINT
interval INTERVAL
json JSON
smallint SMALLINT
text TEXT
time TIME
timestamp TIMESTAMP
timestamptz TIMESTAMPTZ
timetz TIMETZ
uuid UUID
XML XML

Contoh file pemetaan konversi

Lihat contoh file pemetaan konversi berikut yang menggunakan semua perintah konversi skema yang didukung:

EXPORT_SCHEMA 1
SCHEMA root

PG_NUMERIC_TYPE 0
PG_INTEGER_TYPE 1
DEFAULT_NUMERIC integer
DATA_TYPE NUMBER(4\,0):integer
MODIFY_TYPE events:dates_and_times:TIMESTAMP
REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname)
REPLACE_TABLES events:login_events users:platform_users

Hasil penggunaan file ini adalah sebagai berikut:

  • EXPORT_SCHEMA 1 adalah perintah yang diperlukan.
  • SCHEMA root menghasilkan penyesuaian berikut pada flow konversi:
    • Layanan Migrasi Database hanya melakukan konversi untuk entity dalam skema root. Tidak ada skema lain yang dikonversi.
    • Semua perintah penyesuaian lainnya dalam file ini hanya berlaku untuk kolom dan jenis data yang ditentukan dalam skema root.
  • PG_INTEGER_TYPE 1 membuat Database Migration Service mengonversi semua jenis data numerik Oracle yang ditemukan dalam tabel dalam skema root menjadi jenis khusus PostgreSQL, bukan jenis numerik portabel ANSI.
  • DEFAULT_NUMERIC menyebabkan Database Migration Service mengonversi nilai NUMBER yang tidak memiliki titik presisi yang ditentukan menjadi jenis INTEGER PostgreSQL. Hal ini hanya berlaku untuk nilai NUMBER yang ditemukan dalam tabel dalam skema root.
  • DATA_TYPE NUMBER(4\,0):integer menyebabkan Database Migration Service mengonversi nilai NUMBER(4,0) tertentu ke INTEGER PostgreSQL.
  • Perintah MODIFY_TYPE menyebabkan Database Migration Service mengonversi data di kolom dates_and_times dalam tabel sumber events secara khusus ke jenis DATETIME PostgreSQL, terlepas dari format kolom sumber yang sebenarnya.
  • REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname) membuat Database Migration Service mengganti nama kolom berikut dalam skema yang dikonversi:
    • Kolom dates_and_times di tabel events sumber diganti namanya menjadi event_dates di tabel yang sama dalam skema yang dikonversi.
    • Kolom pseudonym di tabel users sumber diganti namanya menjadi nickname di tabel yang sama dalam skema yang dikonversi.
    Operasi penggantian nama hanya diterapkan ke tabel events dan users dalam skema root.
  • REPLACE_TABLES events:login_events users:platform_users mengganti nama tabel berikut dalam skema yang dikonversi:
    • Tabel events diganti namanya menjadi login_events.
    • Tabel users diganti namanya menjadi platform_users.
    Operasi penggantian nama hanya diterapkan ke tabel events dan users dalam skema root.

Ruang kerja konversi lama

Ruang kerja konversi lama adalah jenis ruang kerja konversi lama yang lebih terbatas. Ruang kerja konversi lama tidak mendukung fitur konversi yang ditingkatkan Gemini atau editor SQL interaktif. Anda hanya dapat menggunakannya untuk mengonversi skema sumber dengan alat migrasi Ora2Pg.

Sebaiknya jangan gunakan jenis ruang kerja konversi lama untuk migrasi Anda. Jika skenario Anda memerlukan penggunaan ruang kerja konversi lama, lihat Bekerja dengan ruang kerja konversi lama.

Langkah berikutnya