Tabellen ohne Primärschlüssel migrieren

Auf dieser Seite wird beschrieben, wie Sie Oracle-Tabellen migrieren, die noch keine Primärschlüssel haben.

Für die Migration mit Database Migration Service müssen Ihre PostgreSQL-Zieltabellen Primärschlüssel haben. Im Standardkonvertierungsarbeitsbereich des Database Migration Service wird dies automatisch erledigt, indem für Tabellen ohne Primärschlüssel rowid-Spalten erstellt werden.

Wenn Sie jedoch den alten Konvertierungsarbeitsbereich mit dem Ora2Pg-Migrationstool verwenden und Ihre Oracle-Quelltabellen keine Primärschlüssel haben, müssen Sie die Schlüssel manuell erstellen.

In den folgenden Abschnitten werden Optionen zum Erstellen von Primärschlüsseln für Ihre Oracle-Quelltabellen beschrieben.

Primären Schlüssel mithilfe vorhandener Spalten erstellen

Ihre Tabelle hat möglicherweise bereits einen logischen Primärschlüssel, der auf einer Spalte oder einer Kombination von Spalten basiert. Es kann beispielsweise Spalten mit einer eindeutigen Einschränkung oder einem Index geben. Verwenden Sie diese Spalten, um einen neuen Primärschlüssel im Ziel-AlloyDB for PostgreSQL-Cluster zu generieren.

Primärschlüssel mit der Spalte rowid erstellen

In Oracle-Datenbanken wird die Position jeder Zeile in einer Tabelle in einer rowid-Pseudospalte gespeichert. Wenn Sie Oracle-Tabellen ohne Primärschlüssel migrieren möchten, fügen Sie der Ziel-PostgreSQL-Datenbank eine neue Spalte vom Typ rowid hinzu. Database Migration Service füllt die Spalte mit den entsprechenden numerischen Werten aus der Quell-Oracle-rowid-Pseudospalte.

Führen Sie folgenden Befehl aus, um die Spalte hinzuzufügen und als Primärschlüssel festzulegen:

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

Ersetzen Sie Folgendes:

  • TABLE_NAME: Der Name der Tabelle, der Sie die Spalte hinzufügen möchten.
  • CONSTRAINT_NAME: Die Kennzeichnung für die PRIMARY KEY-Einschränkung.

Primärschlüssel mit allen Spalten erstellen

Wenn Sie die oben beschriebenen Optionen nicht verwenden können und Ihre Oracle-Quelltabelle keine doppelten Zeilen enthält, erstellen Sie einen Primärschlüssel mit allen Spalten der Tabelle. Achten Sie darauf, dass Sie die vom PostgreSQL-Cluster zulässige maximale Länge des Primärschlüssels nicht überschreiten.