Migrer des tables sans clé primaire

Cette page explique comment migrer des tables Oracle qui ne disposent pas encore de clés primaires.

Database Migration Service nécessite que vos tables PostgreSQL de destination disposent de clés primaires. L'espace de travail de conversion Database Migration Service par défaut gère cela automatiquement en créant des colonnes rowid pour vos tables qui ne disposent pas de clés primaires.

Toutefois, si vous utilisez l'ancien espace de travail de conversion avec l'outil de migration Ora2Pg et que vos tables sources Oracle ne comportent pas de clés primaires, vous devez créer les clés manuellement.

Les sections suivantes fournissent des options pour créer des clés primaires pour vos tables sources Oracle.

Créer une clé primaire à l'aide de colonnes existantes

Votre table peut déjà avoir une clé primaire logique basée sur une colonne ou une combinaison de colonnes. Par exemple, des colonnes peuvent être configurées avec une contrainte ou un indice uniques. Utilisez ces colonnes pour générer une nouvelle clé primaire dans le cluster AlloyDB pour PostgreSQL de destination.

Créer une clé primaire à l'aide de la colonne rowid

Les bases de données Oracle utilisent une pseudocolonne rowid pour stocker l'emplacement de chaque ligne d'une table. Pour migrer des tables Oracle sans clé primaire, ajoutez une colonne rowid dans la base de données PostgreSQL de destination. Database Migration Service renseigne la colonne avec les valeurs numériques correspondantes de la pseudocolonne rowid Oracle source.

Pour ajouter la colonne et la définir comme clé primaire, exécutez la commande suivante:

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);

Remplacez les éléments suivants :

  • TABLE_NAME: nom de la table dans laquelle vous souhaitez ajouter la colonne.
  • CONSTRAINT_NAME: identifiant de la contrainte PRIMARY KEY.

Créer une clé primaire à l'aide de toutes les colonnes

Si vous ne pouvez pas utiliser les options décrites précédemment et que votre table Oracle source ne comporte aucune ligne en double, créez une clé primaire à l'aide de toutes les colonnes de la table. Assurez-vous de ne pas dépasser la longueur maximale de la clé primaire autorisée par votre cluster PostgreSQL.