Questa pagina spiega come eseguire la migrazione delle tabelle Oracle senza chiavi primarie.
La generazione automatica delle chiave primaria primarie spiega come Database Migration Service gestisce le tabelle di origine senza chiavi primarie.
Aggiungere manualmente le chiavi primarie mancanti mostra query di esempio che puoi utilizzare per aggiungere le chiavi primarie mancanti nello schema convertito.
Panoramica della generazione automatica chiave primaria
Le tabelle senza chiavi primarie non garantiscono una replica coerente. Database Migration Service esegue la migrazione solo delle tabelle con chiavi primarie. Se il database di origine include tabelle senza chiavi primarie, Database Migration Service può gestirle nei seguenti modi:
- Quando
converti il codice e lo schema di origine, Database Migration Service
può creare automaticamente le chiavi primarie mancanti
aggiungendo colonne
ROWIDnelle tabelle di destinazione. Questo processo automatizzato richiede che le tabelle di origine:- Non hanno già chiavi primarie.
- Non hanno un vincolo
UNIQUEsenza colonne nullable. - Non hanno un indice
UNIQUEsenza colonne nullable.
- Nei workspace di conversione legacy, Database Migration Service non crea automaticamente le chiavi primarie. Se utilizzi un workspace di conversione legacy, devi aggiungere manualmente le chiavi primarie mancanti alle tabelle nello schema PostgreSQL convertito.
Aggiungere manualmente le chiavi primarie mancanti
Per eseguire la migrazione delle tabelle Oracle senza chiavi primarie:
- Utilizza un workspace di conversione per convertire il codice e lo schema di origine.
- Per i workspace di conversione standard, consulta Convertire il codice e lo schema di origine.
- Per i workspace di conversione legacy, consulta Utilizzare i workspace di conversione legacy.
- Connettiti all'istanza Cloud SQL di destinazione con un client SQL. Puoi
utilizzare i seguenti metodi:
-
Client
psql. Puoi utilizzare questo metodo per connetterti all'IP privato dell'istanza, ma potrebbe essere necessario creare una macchina virtuale Compute Engine. -
gcloud sql connectcomando. Questo comando funziona solo per le istanze Cloud SQL con un indirizzo IP pubblico abilitato.
-
Client
- Crea i vincoli di chiave primaria mancanti per le tabelle. Per saperne di più
sulle chiavi primarie, consulta
Chiavi primarie nella documentazione di PostgreSQL.
Puoi anche espandere le seguenti sezioni per visualizzare comandi SQL di esempio:
Creare chiavi primarie utilizzando le colonne esistenti
La tabella potrebbe già avere una chiave primaria logica basata su una colonna o una combinazione di colonne. Ad esempio, potrebbero essere configurate colonne con un indice o un vincolo univoco. Utilizza queste colonne per generare una nuova chiave primaria per le tabelle nel database di origine. Ad esempio:
ALTER TABLE TABLE_NAME ADD PRIMARY KEY (COLUMN_NAME);
Sostituisci quanto segue:
- TABLE_NAME con il nome della tabella senza chiave primaria.
- COLUMN_NAME con il nome di una colonna con indice o vincolo univoco che puoi utilizzare come chiave primaria.
Creare una chiave primaria utilizzando tutte le colonne
Se non hai un vincolo preesistente che potrebbe fungere da chiave primaria, crea chiavi primarie utilizzando tutte le colonne della tabella. Assicurati di non superare la lunghezza massima della chiave primaria consentita dall'istanza PostgreSQL.
Quando crei una chiave primaria composta in questo modo, devi elencare esplicitamente tutti i nomi delle colonne che vuoi utilizzare. Non è possibile utilizzare un'istruzione per recuperare tutti i nomi delle colonne a questo scopo. Ad esempio:
ALTER TABLE TABLE_NAME ADD PRIMARY KEY (COLUMN_NAME_1, COLUMN_NAME_2, COLUMN_NAME_3, ...);
Sostituisci quanto segue:
- TABLE_NAME con il nome della tabella senza chiave primaria.
- COLUMN_NAME_1, COLUMN_NAME_2 e così via con i nomi delle colonne che vuoi utilizzare per creare la chiave primaria.
Creare un vincolo univoco con la pseudocolonna
ROWIDI database Oracle utilizzano la
ROWIDpseudocolonna per memorizzare la posizione di ogni riga in una tabella. Per eseguire la migrazione delle tabelle Oracle senza chiavi primarie, puoi aggiungere unaROWIDcolonna nel database PostgreSQL di destinazione. Database Migration Service popola la colonna con i valori numerici corrispondenti della pseudocolonnaROWIDdi Oracle di origine.Per aggiungere la colonna e impostarla come chiave primaria, esegui il comando seguente:
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);
Sostituisci quanto segue:
- TABLE_NAME con il nome della tabella in cui vuoi aggiungere la colonna.
- CONSTRAINT_DISPLAY_NAME con l'identificatore del vincolo
PRIMARY KEY.
Passaggi successivi
- Continua a lavorare con i workspace di conversione.
- Scopri di più sulle funzionalità di conversione basate su Gemini.