HANA DB: große Tabellen performant kopieren
In einem aktuellen Kunden-Projekt gab es die Anforderung, eine Tabelle mit extrem vielen Einträgen in einen neuen Namensraum zu migrieren. Da das Umbenennen von SAP-Tabellen nicht möglich ist, blieb nur das Kopieren. Allerdings ist dies bei einer Tabelle mit 1,8 Mrd. Einträgen eine echte Herausforderung, was sowohl die Laufzeit als auch die Durchführung an sich angeht.
Letztendlich hat nur die folgende Herangehensweise funktioniert:
Kopie direkt auf der HANA DB
Prüfung freier Speicher
Zunächst ist es erforderlich die Größe der zu kopierenden Tabelle zu evaluieren (Transaktion DBACOCKPIT -> Diagnose -> Tabellen/Views) und den verfügbaren, freien Speicher zu ermitteln (Transaktion DBACOCKPIT -> Aktueller Status -> Überblick).
Ist genug Speicherkapazität vorhanden, kann nun über das folgende Statement die Tabelle kopiert werden, entweder über eine SQL-Anweisung im Hana-Studio oder per "EXEC SQL" im ABAP:
Tabelle kopieren
Verwenden Sie folgendes Statement für das Kopieren der Tabelle: CREATE (COLUMN) TABLE "/<Namensraum1>/<Tabellenname>" LIKE "/<Namensraum1>/<Tabellenname>" WITH DATA
Eine Doku finden Sie auf https://help.sap.com/viewer/4fe29514fd584807ac9f2a04f6754767/2.0.03/en-US/20d58a5f75191014b2fe92141b7df228.html#loio20d58a5f75191014b2fe92141b7df228__create_table_like_clause (Stand: 12.10.2020)
ABAP Dictionary nachziehen
Da die kopierte Tabelle jetzt zwar auf der Datenbank, aber nicht im ABAP Dictionary existiert, muss die Tabelle jetzt noch (wie üblich) in der SE11 kopiert werden. Nun ist die kopierte Tabelle auch im SAP sichtbar (inkl. Daten). Eine weitere Bearbeitung (z.B. SE14) ist nicht notwendig.
Laufzeit
Die Kopie einer Tabelle mit 1,8 Mrd. Zeilen und einer Gesamtspaltenbreite von 781 Zeichen hat ca. 6h benötigt.