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 menampilkan 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.
- Tidak memiliki batasan
UNIQUEtanpa kolom yang dapat bernilai null. - Tidak memiliki indeks
UNIQUEtanpa kolom yang dapat bernilai null.
- Di ruang kerja konversi lama, Database Migration Service tidak otomatis membuat kunci utama. Jika Anda 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 langkah-langkah 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 Bekerja dengan 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 mungkin mengharuskan Anda membuat virtual machine Compute Engine. -
Perintah
gcloud sql connect. Perintah ini hanya berfungsi untuk instance Cloud SQL yang mengaktifkan alamat IP publik.
-
- Buat batasan kunci utama yang tidak ada untuk tabel Anda. Untuk mengetahui informasi selengkapnya tentang kunci primer, lihat
Kunci Primer 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 bagi 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 primer komposit dengan cara ini, Anda harus mencantumkan semua nama kolom yang ingin digunakan secara eksplisit. Pernyataan tidak dapat digunakan 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 pseudokolom
ROWIDDatabase Oracle menggunakan pseudokolom
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.