Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

DML RELOCATE - Datenseiten verlagern

&pagelevel(3)&pagelevel

Mit der Online-DML RELOCATE verlagern Sie im laufenden Betrieb Datensätze und kleine Tabellen gezielt innerhalb eines Realms. Es wird, soweit möglich, in freie Bereiche am Anfang des Realms verlagert. Dabei wird auch freier Platz in nicht vollständig belegten Seiten ausgenutzt. Durch die Verlagerung entstehen im hinteren Bereich des Realms freie Seiten. Eine RELOCATE-DML bezieht sich immer auf einen Benutzerrealm, der, wie auch die entsprechenden DBTT-Realms, im DBH im Update-Modus zugeschaltet sein muss.

Je nach Ausprägung des RELOCATE werden Sätze und Tabellen verlagert, die in nicht vollständig belegten Seiten liegen oder ganze Datenseiten, die Teile mehrseitiger Tabellen enthalten.

Folgendes wird nicht verlagert:

  • vollständig belegte Seiten, wenn sie FPA-Einträge oder DBTT-Einträge enthalten

  • DBTT-Ankerseiten

  • CALC-Seiten

  • Ankersätze von SYSTEM-Sets (Ankersätze enthalten zu DBTT-Seiten vergleichbare Informationen).

Ablauf der Verlagerung

Die Verlagerung wird folgendermaßen abgearbeitet:
Vom Ende des Realms her wird nach einer geeigneten Datenseite gesucht. Für die Sätze und Tabellen einer solchen Seite bzw. für die ganze Seite wird vom Beginn des Realms freier Platz gesucht, in den die Sätze und Tabellen einzeln verlagert werden.
Zusammengehörige Daten, die durch entsprechende SSL-Deklarationen gekennzeichnet sind, werden nach Möglichkeit auch wieder in ein und derselben Zielseite abgespeichert (Erhaltung von Clustern).
Falls Seiten einer verteilbaren Liste in einen anderen Realm verlagert werden sollen, werden die benötigten freien Seiten im Zielrealm (TARGET-REALM) gesucht.

Die Anzahl der Seiten, die mit einer RELOCATE-DML nach Möglichkeit durch Verlagerung geleert werden sollen, geben Sie über die Anweisungen der UDS-Online-Utility vor (Parameter PAGES-PER-DML der SDF-Anweisung SET-RELOCATE-PARAMETERS, siehe Abschnitt „Eigenschaften einer RELOCATE-DML festlegen (SET-RELOCATE-PARAMETERS)“).

Falls es bei der Verlagerung zu Kollisionen mit anderen Transaktionen kommt, müssen Sie damit rechnen, dass die RELOCATE-DML die Verlagerung vorzeitig abbricht, um die Behinderung für parallele Anwendungen möglichst gering zu halten. In der Transaktion bereits durchgeführte Verlagerungen bleiben dabei im Allgemeinen in dem neuen Zustand erhalten.

Fortschrittsdaten der Verlagerung

Der DBH führt in einem Sessionabschnitt interne Fortschrittsdaten über die bereits durch Verlagerung entleerten Seiten am Ende des Quellrealms (Quellpegel) sowie über die bereits aufgefüllten Seiten am Beginn des Zielrealms (Zielpegel), sodass in mehreren aufeinanderfolgenden Online-Utility-Läufen aufwandsarm die Verlagerung fortgesetzt werden kann.

Quell- und Zielpegel werden zur Information in der UDS-Online-Utility als Variablen bereitgestellt (Variable RELOC_ORIGIN für Quellpegel und Variable RELOC_DESTINATION für Zielpegel) und enthalten die Blocknummern der jeweiligen Datenbankseiten, bei denen bei weiteren Verlagerungen wieder aufgesetzt wird.

Initialisierung von Quell- und Zielpegel

Im Allgemeinen führt die erste Verlagerungstransaktion einer Folge von Verlagerungstransaktionen zur Initialisierung des Quellpegels auf die letzte nicht leere Seite am Ende des Realms und des Zielpegels auf die erste Seite am Anfang des Realms - also zunächst auf den ACTKEY0. Nach der Verarbeitung einer erfolgreichen RELOCATE-DML wird auf die Seiten positioniert, bei denen eine nachfolgende RELOCATE-DML ihre Arbeit fortsetzt. Diese Werte werden jeweils als Quell- und Zielpegel in der UDS-Online-Utility bereitgestellt.

Die Fortschrittsdaten einer Verlagerung werden in der Datenbank nicht für spätere Sessionabschnitte festgehalten. Sie gehen auch mit dem Abschalten des entsprechenden Realms verloren. Nach einem Zuschalten des Realms sind somit keine Fortschrittsdaten aus vorherigen Sessionabschnitten mehr verfügbar. Die nächste Verlagerungstransaktion kann nur mit erneuter Initialisierung von Quell- und Zielpegel erfolgen.

Es ist möglich, nach Neustart der UDS-Online-Utility gezielt eine Verlagerung in einem nicht unterbrochenen Sessionabschnitt fortzusetzen. Mit dem Parameter INITIALIZE der SDF-Anweisung SET-RELOCATE-PARAMETERS steuern Sie dabei die Initialisierung von Quell- und Zielpegel:

  • INITIALIZE=* ANY
    Da die UDS-Online-Utility evtl. nichts von dem Verlust der Fortschrittsdaten mitbekommen hat, bietet INITIALIZE=* ANY die Möglichkeit, die Verlagerungstransaktion so auszuführen, dass evtl. noch vorhandene Fortschrittsdaten weiter genutzt werden, ansonsten aber eine Initialisierung stattfindet.

  • INITIALIZE=*NO
    INITIALIZE=*NO bietet die Möglichkeit, die Neuinitialisierung explizit zu verhindern, wenn der Realm nach der letzten Verlagerungstransaktion abgeschaltet und dann wieder zugeschaltet worden ist. Es ist ja nicht auszuschließen, dass zwischen dem Abschalten und erneuten Zuschalten des Realms an diesem Änderungen vorgenommen worden sind, die eine Fortsetzung der Verlagerung nicht mehr sinnvoll macht.

  • INITIALIZE=*YES
    Es ist aber auch möglich, mit INITIALIZE=*YES eine erneute Initialisierung der Verlagerung anzustoßen. Dabei werden die Pegel initialisiert wie oben beschrieben. Diese Intialisierung wird in der ersten entsprechenden Transaktion wirksam. Alle folgenden Transaktionen einer UDS-Online-Utility werden mit INITIALIZE=*ANY ausgeführt. Dabei ist es unerheblich, ob diese Transaktionen in einer oder mehreren aufeinanderfolgenden Prozedurfolgen (SDF-Anweisung REPEAT-PROCEDURE) ausgeführt werden.

Die Initialisierung von Quell- und Zielpegel führt implizit auch zu einer Durchführung der DML FPASCAN mit *REUSE. Der explizite Aufruf von FPASCAN schadet aber nicht. Mit der DML FPASCAN wird die Seite, ab der für neu einzuspeichernde Sätze und Tabellen Platz gesucht wird, auf den Beginn des Realms bzw. auf den Zielpegel gelegt, damit parallele Neueinspeicherungen, die durch die DMLs MODIFY und STORE von Anwendungsprogrammen verursacht sind, nicht hinter dem Quellpegel der Verlagerung eingespeichert werden. Eine Beschreibung von FPASCAN finden Sie im Abschnitt „DML FPASCAN - Such-Modus für Freiplatzsuche festlegen“.

Ende der Verlagerung

Eine Folge von Verlagerungstransaktionen, bei denen Quellrealm und Zielrealm gleich sind, wird intern beendet, wenn der Quellpegel kleiner ist als der Zielpegel. Dies wird der UDS-Online-Utility bekannt gemacht und führt dazu, dass keine weiteren Verlagerungstransaktionen auf diesem Realm mehr durchgeführt werden, da diese nichts mehr zu tun haben und immer die gleiche Information über Quell- und Zielpegel zurückmelden.

Füllgrad, bis zu dem Seiten verlagert werden sollen

Im Allgemeinen kann bei der Verlagerung erst nach dem Lesen der Datenseite entschieden werden, ob die in der Seite enthaltenen Daten verlagert werden können. Mit dem Parameter SKIP-ABOVE-FILLING der SDF-Anweisung SET-RELOCATE-PARAMETERS können Sie Seiten von der Verlagerung ausschließen, die einen bestimmten, prozentualen Füllgrad übertreffen (siehe Abschnitt „Eigenschaften einer RELOCATE-DML festlegen (SET-RELOCATE-PARAMETERS)“). Der Standardwert 100 bezieht alle verlagerbaren Seiten ein. Mit einem kleineren Wert können Sie beispielsweise die Verlagerung auf dünn besetzte Seiten beschränken. Eine Angabe unter 100 benutzt der DBH auch, um anhand der Freiplatzverwaltungsdaten Seiten von der Verlagerung auszuschließen. Mit dieser Optimierung können Sie somit auch unnötiges Lesen von Datenseiten vermeiden.

Verhalten bei gesperrten Quellseiten

Mit dem Parameter CLASH-HANDLING der SDF-Anweisung SET-RELOCATE-PARAMETERS steuern Sie, wie der DBH verfahren soll, wenn er auf eine gesperrte Quellseite trifft (siehe Abschnitt „Eigenschaften einer RELOCATE-DML festlegen (SET-RELOCATE-PARAMETERS)“). Bei der Standardeinstellung BREAK-DML wird die DML unter Beibehaltung der bereits erfolgten Verlagerungen abgebrochen. Die Steuerung in der UDS-Online-Utility kann auf diese Situation reagieren und den nächsten Verlagerungsauftrag nach einer gewissen Wartezeit wiederholen. Es gibt aber auch die Möglichkeit, mit SKIP-PAGE eine gesperrte Seite jeweils zu überspringen. WAIT-FOR-TRANSACTION bietet die Möglichkeit zu warten, bis die gesperrte Quellseite von der sperrenden Transaktion freigegeben wird.