Halaman ini menjelaskan cara memigrasikan tabel Oracle yang belum memiliki kunci utama.
Database Migration Service mengharuskan tabel PostgreSQL tujuan Anda memiliki kunci utama.
Ruang kerja konversi Database Migration Service default menangani hal ini secara otomatis dengan
membuat kolom rowid
untuk tabel Anda yang tidak memiliki kunci utama.
Namun, jika Anda menggunakan ruang kerja konversi lama dengan alat migrasi Ora2Pg, dan tabel sumber Oracle tidak memiliki kunci utama, Anda harus membuat kunci secara manual.
Bagian berikut memberikan opsi cara membuat kunci utama untuk tabel sumber Oracle Anda.
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 di cluster AlloyDB untuk PostgreSQL tujuan.
Membuat kunci utama menggunakan kolom rowid
Database Oracle menggunakan kolom pseudo rowid
untuk menyimpan lokasi setiap baris dalam
tabel. Untuk memigrasikan tabel Oracle yang tidak memiliki kunci utama, tambahkan kolom rowid
baru di database PostgreSQL tujuan. Database Migration Service mengisi
kolom dengan nilai numerik yang sesuai dari pseudokolom rowid
Oracle
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_NAME PRIMARY KEY (rowid);
Ganti kode berikut:
- TABLE_NAME: Nama tabel tempat Anda ingin menambahkan kolom.
- CONSTRAINT_NAME: ID untuk batasan
PRIMARY KEY
.
Membuat kunci utama menggunakan semua kolom
Jika Anda tidak dapat menggunakan opsi yang dijelaskan sebelumnya, dan tabel Oracle sumber Anda tidak memiliki baris duplikat, buat kunci utama menggunakan semua kolom tabel. Pastikan Anda tidak melebihi panjang maksimum kunci utama yang diizinkan oleh cluster PostgreSQL.