Questa pagina spiega come eseguire la migrazione delle tabelle Oracle che non dispongono già di chiavi primarie.
Database Migration Service richiede che le tabelle PostgreSQL di destinazione abbiano chiavi primarie.
L'area di lavoro di conversione di Database Migration Service predefinita gestisce automaticamente questo problema creando colonne rowid
per le tabelle che non hanno chiavi primarie.
Tuttavia, se utilizzi l'area di lavoro di conversione precedente con lo strumento di migrazione Ora2Pg e le tabelle di origine Oracle non hanno chiavi primarie, devi creare le chiavi manualmente.
Le sezioni seguenti forniscono opzioni per creare chiavi principali per le tabelle di origine Oracle.
Creare una chiave primaria utilizzando le colonne esistenti
La tabella potrebbe già avere una chiave primaria logica basata su una colonna o su una combinazione di colonne. Ad esempio, potrebbero essere presenti colonne con un vincolo o un indice unico configurato. Utilizza queste colonne per generare una nuova chiave primaria nell'istanza PostgreSQL di destinazione.
Crea una chiave primaria utilizzando la colonna rowid
I database Oracle utilizzano una pseudocolonna rowid
per memorizzare la posizione di ogni riga in una tabella. Per eseguire la migrazione delle tabelle Oracle che non hanno chiavi primarie, aggiungi una nuova colonnarowid
nel database PostgreSQL di destinazione. Database Migration Service compila la colonna con i valori numerici corrispondenti della pseudocolonna rowid
Oracle di origine.
Per aggiungere la colonna e impostarla come chiave primaria, esegui quanto segue:
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);
Sostituisci quanto segue:
- TABLE_NAME: il nome della tabella in cui vuoi aggiungere la colonna.
- CONSTRAINT_NAME: l'identificatore del vincolo
PRIMARY KEY
.
Crea una chiave primaria utilizzando tutte le colonne
Se non puoi utilizzare le opzioni descritte in precedenza e la tabella Oracle di origine non contiene righe duplicate, crea una chiave primaria utilizzando tutte le colonne della tabella. Assicurati di non superare la lunghezza massima della chiave primaria consentita dall'istanza PostgreSQL.