Halaman ini menjelaskan cara memigrasikan tabel Oracle yang tidak memiliki kunci utama.
Pembuatan kunci utama otomatis menjelaskan cara Database Migration Service menangani tabel sumber yang tidak memiliki kunci utama.
Menambahkan kunci utama yang tidak ada secara manual menunjukkan contoh kueri yang dapat Anda gunakan untuk menambahkan kunci utama yang tidak ada dalam skema yang dikonversi.
Ringkasan pembuatan kunci utama otomatis
Tabel tanpa kunci utama tidak menjanjikan replikasi yang konsisten. Database Migration Service hanya memigrasikan tabel yang memiliki kunci utama. Jika database sumber Anda menyertakan tabel yang tidak memiliki kunci utama, Database Migration Service dapat menanganinya dengan cara berikut:
- Saat Anda
mengonversi kode sumber dan skema, Database Migration Service
dapat otomatis membuat kunci utama yang tidak ada
dengan menambahkan kolom
ROWIDdi tabel tujuan. Proses otomatis ini mengharuskan tabel sumber Anda:- Belum memiliki kunci utama.
- Jangan memiliki batasan
UNIQUEtanpa kolom nullable. - Jangan memiliki indeks
UNIQUEtanpa kolom nullable.
- Di ruang kerja konversi lama, Database Migration Service tidak otomatis membuat kunci utama. Jika menggunakan ruang kerja konversi lama, Anda harus menambahkan kunci utama yang tidak ada secara manual ke tabel dalam skema PostgreSQL yang dikonversi.
Menambahkan kunci utama yang tidak ada secara manual
Untuk memigrasikan tabel Oracle tanpa kunci utama, lakukan hal berikut:
- Gunakan ruang kerja konversi untuk mengonversi kode sumber dan skema Anda.
- Untuk ruang kerja konversi standar, lihat Mengonversi kode sumber dan skema Anda.
- Untuk ruang kerja konversi lama, lihat Menggunakan ruang kerja konversi lama.
- Hubungkan ke instance Cloud SQL tujuan Anda dengan klien SQL. Anda
dapat menggunakan metode berikut:
-
psqlclient. Anda dapat menggunakan metode ini untuk terhubung ke IP pribadi instance, tetapi Anda mungkin perlu membuat virtual machine Compute Engine. - Perintah
gcloud sql connect. Perintah ini hanya berfungsi untuk instance Cloud SQL yang telah mengaktifkan alamat IP publik.
-
- Buat batasan kunci utama yang tidak ada untuk tabel Anda. Untuk mengetahui informasi selengkapnya tentang kunci utama, lihat
Kunci Utama dalam dokumentasi PostgreSQL.
Anda juga dapat meluaskan bagian berikut untuk melihat contoh perintah SQL:
Membuat kunci utama menggunakan kolom yang ada
Tabel Anda mungkin sudah memiliki kunci utama logis berdasarkan kolom atau kombinasi kolom. Misalnya, mungkin ada kolom dengan batasan atau indeks unik yang dikonfigurasi. Gunakan kolom ini untuk membuat kunci utama baru untuk tabel di database sumber Anda. Contoh:
ALTER TABLE TABLE_NAME ADD PRIMARY KEY (COLUMN_NAME);
Ganti kode berikut:
- TABLE_NAME dengan nama tabel Anda yang tidak memiliki kunci utama.
- COLUMN_NAME dengan nama kolom dengan batasan atau indeks unik yang dapat Anda gunakan sebagai kunci utama.
Membuat kunci utama menggunakan semua kolom
Jika Anda tidak memiliki batasan yang sudah ada yang dapat berfungsi sebagai kunci utama, buat kunci utama menggunakan semua kolom tabel. Pastikan Anda tidak melebihi panjang maksimum kunci utama yang diizinkan oleh instance PostgreSQL Anda.
Saat membuat kunci utama gabungan dengan cara ini, Anda harus mencantumkan secara eksplisit semua nama kolom yang ingin digunakan. Anda tidak dapat menggunakan pernyataan untuk mengambil semua nama kolom untuk tujuan ini. Contoh:
ALTER TABLE TABLE_NAME ADD PRIMARY KEY (COLUMN_NAME_1, COLUMN_NAME_2, COLUMN_NAME_3, ...);
Ganti kode berikut:
- TABLE_NAME dengan nama tabel Anda yang tidak memiliki kunci utama.
- COLUMN_NAME_1, COLUMN_NAME_2, dll. dengan nama kolom yang ingin Anda gunakan untuk membuat kunci utama.
Membuat batasan unik dengan kolom semu
ROWIDDatabase Oracle menggunakan kolom semu
ROWIDuntuk menyimpan lokasi setiap baris dalam tabel. Untuk memigrasikan tabel Oracle yang tidak memiliki kunci utama, Anda dapat menambahkan kolomROWIDdi database PostgreSQL tujuan. Database Migration Service mengisi kolom dengan nilai numerik yang sesuai dari kolom semuROWIDOracle sumber.Untuk menambahkan kolom dan menetapkannya sebagai kunci utama, jalankan perintah berikut:
ALTER TABLE TABLE_NAME ADD COLUMN rowid numeric(33,0) NOT NULL; CREATE SEQUENCE TABLE_NAME_rowid_seq INCREMENT BY -1 START WITH -1 OWNED BY TABLE_NAME.rowid; ALTER TABLE TABLE_NAME ALTER COLUMN rowid SET DEFAULT nextval('TABLE_NAME_rowid_seq'); ALTER TABLE TABLE_NAME ADD CONSTRAINT CONSTRAINT_DISPLAY_NAME PRIMARY KEY (rowid);
Ganti kode berikut:
- TABLE_NAME dengan nama tabel tempat Anda ingin menambahkan kolom.
- CONSTRAINT_DISPLAY_NAME dengan ID untuk batasan
PRIMARY KEY.
Langkah berikutnya
- Lanjutkan bekerja dengan ruang kerja konversi.
- Pelajari lebih lanjut fitur konversi yang didukung Gemini.