Mit der Utility-Anweisung REORG kann der Datenbankverwalter den Catalog-Space, einzelne Anwender-Spaces oder auch einzelne Basistabellen auf Anwender-Spaces reorganisieren. Bei der Reorganisation speichert SESAM/SQL logisch zusammengehörige Speicherbereiche auch physikalisch zusammenhängend ab.
Zweck der Reorganisation
Die Blöcke des Catalog-Space, der einzelnen Anwender-Spaces und der Basistabellen sind jeweils in logischer Reihenfolge verkettet. Zu Beginn der Bearbeitung stimmen physikalische Reihenfolge (nach aufsteigenden Blocknummern) und logische Reihenfolge (inhaltlich, entlang der Verkettung) der Blöcke überein.
Im Verlauf des Datenbankbetriebs kann SESAM/SQL neue Blöcke anlegen, wenn der freie Platz in den bereits vorhandenen Blöcken für neu hinzukommende Daten nicht mehr ausreicht. Die logische Reihenfolge neuer und alter Blöcke ist dann durch die Verkettung gesichert, stimmt aber nicht mehr mit der physikalischen Reihenfolge überein. Dies kann bei sequenzieller Abarbeitung eines Space die Zugriffsgeschwindigkeit erheblich beeinträchtigen..
Die Reorganisation stellt die Übereinstimmung von logischer und physikalischer Reihenfolge der Blöcke wieder her.
Bei der Reorganisation berücksichtigt SESAM/SQL auch die Freiplatzreservierung, die der Datenbankverwalter zuvor für den betreffenden Space (Catalog-Space oder AnwenderSpace) mit den Anweisungen CREATE CATALOG, CREATE SPACE bzw. ALTER SPACE in der Klausel PCTFREE vereinbart hat.
Utility-Anweisung REORG [CATALOG_]SPACE
Wenn der Datenbankverwalter zuvor mit der SQL-Anweisung ALTER SPACE für den zu reorganisierenden Anwender-Space eine neue Storage Group angegeben hat, dann erfolgt bei der Reorganisation die physikalische Verlagerung des Anwender-Space auf diese Storage Group, wenn nicht durch die Angabe von COPY oder die Angabe einer Arbeitsdatei eine andere Festlegung erfolgt.
SESAM/SQL reorganisiert den Space in eine Arbeitsdatei. Die Arbeitsdatei kann vorgegeben werden. Sonst verwendet SESAM/SQL eine Standard-Arbeitsdatei, deren Name aus dem Namen der Space-Datei durch Ergänzung mit dem Suffix .REORG gebildet wird. Die Standard-Arbeitsdatei kann auch vom Anwender angelegt werden; sie wird dann mit den definierten Dateimerkmalen als Standard-Arbeitsdatei verwendet.
Mit der Anweisungsfolge EXPORT TABLE, DROP TABLE und IMPORT TABLE können Sie einen Space, der Tabellen und Indizes enthält, so umstrukturieren, dass Indizes und Tabellen auf separaten Spaces liegen. Zunächst wird die betroffene Tabelle mit den dazugehörigen Indizes in eine Exportdatei exportiert. Die Tabelle selbst wird mit DROP TABLE gelöscht. Anschließend wird die Tabelle mit IMPORT TABLE aus der Export-Datei wieder auf den ursprünglichen Space importiert. Für die Indizes kann dabei ein separater Index-Space angegeben werden (siehe Abschnitt „Basistabellen importieren mit IMPORT TABLE“).
Eine einfachere Vorgehensweise ist möglich, wenn auf einem reinen Tabellen-Space von SESAM/SQL Indizes zu Eindeutigkeitsbedingungen angelegt worden sind. Diese Indizes können dadurch auf andere Spaces verlagert werden, dass die Indizes explizit mit CREATE INDEX auf anderen Spaces angelegt werden. SESAM/SQL verlegt dann die Eindeutigkeitsbedingung (UNIQUE) auf den explizit definierten Index und löscht den implizit definierten..
Utility-Anweisung REORG ONLINE TABLE
SESAM/SQL führt die Reorganisation einer Basistabelle durch Modifizieren und Kopieren der Blöcke innerhalb des Anwender-Space durch. Da hierfür keine exklusiven Transaktionssperren benötigt werden, können andere DML-Anwendungen lesend und ändernd auf die Basistabelle zugreifen.
Bei partitionierten Tabellen kann auch eine einzelne Partition reorganisiert werden. Die Partition wird durch die Klausel ON SPACE festgelegt. Sonst werden nacheinander alle Partitionen der Basistabelle reorganisiert.