Ich habe eine riesige Tabelle mit Millionen und Millionen von Zeilen.Oracle PL/SQL Update doppelte und null Zeilen mit zufälligen sys_guid() und Primärschlüssel hinzufügen
Es hat eine GUID RAW (16 Byte) Spalte. Aus irgendeinem Grund/Aufsicht hatte diese Tabelle nie eine primäre Schlüsseleinschränkung und aufgrund eines Fehlers im Code hatte Duplikate in die GUID-Spalte (sowie einige Null-Werte)
Was ich tun möchte, ist:
- Aktualisieren Sie alle Zeilen, in denen GUID mit einem zufällig generierte GUID NULL ist (unter Verwendung von SYS_GUID() wahrscheinlich)
- Aktualisieren, um alle Zeilen, in denen GUID ist ein Duplikat mit einem zufällig generierte guid
- einen Primärschlüssel In der Tabelle , unter Verwendung der GUID-Spalte.
Die GUID-Werte müssen nicht beibehalten werden, sie müssen alle eindeutig sein. Aber der fragliche Tisch hat etwa 300 Millionen Datensätze, also suche ich nach einem Weg, der nicht zu viel Ausfallzeit bedeutet.
Dank
Was ist ein Duplikat? Wir müssen wissen, welcher Datensatz das "Original" ist, so dass es nicht ersetzt werden sollte. Bitte Tabellenstruktur einfügen. –
Es gibt keine doppelten Zeilen, nur der GUID-Wert wird dupliziert. So haben einige völlig unterschiedliche Aufzeichnungen die gleiche Guid. – bbedward
Sie haben 3 GUIDs, die gleich sind. Woher wissen wir, welcher zu ändern ist, oder sollten alle 3 geändert werden? Kannst du die Tabellenstruktur posten? –