Plattendatei rekonstruieren
Komponente: | BS2000 |
Funktionsbereich: | Dateiverarbeitung |
Anwendungsbereich: | FILE |
Privilegierung: | STD-PROCESSING |
Funktionsbeschreibung
Das Kommando REPAIR-DISK-FILES rekonstruiert eine Plattendatei, die wegen Systemzusammenbruchs oder Auftragsabbruchs nicht ordnungsgemäß geschlossen wurde. Das bedeutet: der Katalogeintrag wird aktualisiert, eine eventuell vorhandene Sperre wird implizit aufgehoben und die Datei geschlossen (siehe Kommando REMOVE-FILE-ALLOCATION-LOCKS); ISAM-Dateien werden anhand der vorhandenen Datensätze rekonstruiert. Dateien, die zu rekonstruieren sind, können mit dem Kommando SHOW-FILE-ATTRIBUTES mit dem Auswahlkriterium STATUS=*PAR(REPAIR-NEEDED =*YES) angezeigt werden.
Die Rekonstruktion von Dateien ist im allgemeinen Teil des Handbuchs „Einführung in das DVS“ [13] beschrieben.
Bei NK-ISAM Dateien können die Zähler für den primary Index des Levels 1 aus- oder ein-geschaltet, sowie aktualisiert werden.
Privilegierte Funktionen
Falls die Rekonstruktion wegen einer Dateisperre nicht möglich ist, erhält die Systembetreuung im Dialogbetrieb die Meldung DMS06F0 (im Batchbetrieb wird die Kommandobearbeitung ohne Rückfrage abgebrochen) und kann dann ggf. das Aufheben der Dateisperre und damit die Rekonstruktion erzwingen. Bei einer erzwungenen Rekonstruktion muss jedoch sichergestellt sein, dass die Datei zu diesem Zeitpunkt nicht zum Schreiben geöffnet ist.
Format
REPAIR-DISK-FILES | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Operandenbeschreibung
FILE-STATUS = *OPEN(...) / *ANY(...)
Gibt an, ob die Datei nur dann zu rekonstruieren ist, wenn sie nicht ordnungsgemäß geschlossen wurde, oder in jedem Fall.
FILE-STATUS = *OPEN(...)
Die Datei soll nur dann rekonstruiert werden, wenn sie nicht ordnungsgemäß geschlossen wurde.
FILE-NAME = <filename 1..54> / <partial-filename 2..53>
Bezeichnet die wiederherzustellende permanente oder temporäre Datei, Dateigenerationsgruppe oder Dateigenerationen. Wird FILE-NAME teilqualifiziert angegeben,
muss ISAM-COPY-NAME (falls benötigt) auch teilqualifiziert angegeben werden
wird ISAM-COPY-NAME beim Wiederherstellen von Generationen ignoriert.
Nur die eigene Benutzerkennung darf angegeben werden.
Die Wiederherstellung der Datei ist abhängig von der Zugriffsmethode, mit der die Datei erstellt wurde (siehe Ausgabefeld FILE-STRUC, Kommando SHOW-FILE-ATTRIBUTES):
PAM: Die Dateisperre wird aufgehoben; ist die Datei als offen gekennzeichnet, führt das System eine privilegierte Schließoperation durch; der Last Page Pointer (LPP) wird, falls notwendig, aktualisiert:
Für eine K-PAM-Datei (BLOCK-CONTR=PAMKEY) zeigt der LPP dann auf die letzte reservierte PAM-Seite (entspricht der Dateigröße).
Für eine NK-PAM-Datei (BLOCK-CONTR=DATA/NO) zeigt der LPP dann auf einen Wert, der sich aus der Dateigröße, abgerundet auf ein Vielfaches der Anzahl PAM-Seiten des Datenblockes (siehe Blockungsfaktor im Ausgabefeld BUF-LEN, Kommando SHOW-FILE-ATTRIBUTES), ergibt.
Der Last Byte Pointer wird sowohl bei K- als auch NK-PAM-Dateien auf Blockgrenze hochgesetzt.
Für eine Datei auf einer im Dual-Modus betriebenen Platte (siehe Handbuch „DRV“ [11]) wird der Inhalt der Datenblöcke nicht aktualisiert. Dies kann jedoch mit FILE-STATUS= *ANY(...) erreicht werden.
SAM: Die Dateisperre wird aufgehoben. Ist die Datei als offen gekennzeichnet, wird der Last Page Pointer, falls nötig, auf die höchste beschriebene PAM-Seite der Datei gesetzt. Danach wird die Datei geschlossen.
Für eine Datei auf einer im Dual-Modus betriebenen Platte (siehe Handbuch „DRV“ [11]) wird der Inhalt der Datenblöcke aktualisiert.
ISAM: Die Dateisperre wird aufgehoben. Die Datei wird anhand der rekonstruierbaren Datenblöcke neu erstellt. Sekundär-Schlüssel, die als vollständig gekennzeichnet sind, werden wieder neu erstellt.
Unabhängig von der Zugriffsmethode bleiben Sperren von Concurrent Copy bestehen, falls die Concurrent-Copy-Session noch nicht beendet ist.
SELECT = *ANY-VOLUME / *PRIVATE-DISK / *PUBLIC-DISK
Beschränkt die Auswahl der Dateien auf den angegebenen Datenträger.
Dieser Operand ist nur sinnvoll, wenn bei FILE-NAME ein teilqualifizierter Dateiname oder der Name einer Dateigenerationsgruppe angegeben wurde.
SELECT = *ANY-VOLUME
Es werden die angegebenen Dateien ausgewählt, unabhängig davon, auf welchem Datenträger sie sich befinden.
SELECT = *PRIVATE-DISK
Es werden die angegebenen Dateien ausgewählt, die sich auf Privatplatte befinden.
SELECT = *PUBLIC-DISK
Es werden die angegebenen Dateien ausgewählt, die sich auf gemeinschaftlichem Datenträger (Platte) befinden.
SELECT = *NET-STORAGE
Es werden die angegebenen Dateien ausgewählt, die sich auf einem Net-Storage-Volume befinden.
FILE-STATUS = *ANY(...)
Die Datei soll in jedem Fall rekonstruiert werden.
FILE-NAME = <filename 1..54>
Bezeichnet die wiederherzustellende permanente oder temporäre Datei, Dateigenerationsgruppe oder Dateigenerationen. Nur die eigene Benutzerkennung darf angegeben werden.
Die Wiederherstellung der Datei ist abhängig von der Zugriffsmethode, mit der die Datei erstellt wurde (siehe Ausgabefeld FILE-STRUC, Kommando SHOW-FILE-ATTRIBUTES):
PAM: Die Dateisperre wird aufgehoben; ist die Datei als offen gekennzeichnet, führt das System eine privilegierte Schließoperation durch, und der Last Page Pointer (LPP) wird aktualisiert:
Für eine Datei, die mit BLOCK-CONTROL-INFO=*WITHIN-DATA-BLOCK bzw. *PAMKEY erstellt wurde, zeigt der Last Page Pointer dann auf die letzte beschriebene PAM-Seite.
Für eine Datei, die mit BLOCK-CONTROL-INFO=*NO erstellt wurde, zeigt der Last Page Pointer dann auf einen Wert, der sich aus der Dateigröße, abgerundet auf ein Vielfaches der Anzahl von PAM-Seiten eines Datenblockes (siehe Blockungsfaktor im Ausgabefeld BUF-LEN, Kommando SHOW-FILE-ATTRIBUTES), ergibt.
Der Last Byte Pointer wird sowohl bei K- als auch NK-PAM-Dateien auf Blockgrenze hochgesetzt.
Für eine Datei auf einer im Dual-Modus betriebenen Platte (siehe Handbuch „DRV“ [11]) wird der Inhalt der Datenblöcke, falls nötig, aktualisiert.
SAM: Die Dateisperre wird aufgehoben. Ist die Datei als offen gekennzeichet, führt das System eine privilegierte Schließoperation durch, und der Last Page Pointer wird auf die letzte beschriebene PAM-Seite gesetzt. Für eine Datei auf einer im Dual-Modus betriebenen Platte (siehe Handbuch „DRV“ [11]) wird der Inhalt der Datenblöcke, falls nötig, aktualisiert.
ISAM: Die Dateisperre wird aufgehoben. Die Datei wird anhand der rekonstruierbaren Datenblöcke neu erstellt. Sekundär-Schlüssel, die als vollständig gekennzeichnet sind, werden wieder neu erstellt.
Unabhängig von der Zugriffsmethode bleiben Sperren von Concurrent Copy bestehen, falls die Concurrent-Copy-Session noch nicht beendet ist.
SELECT = *ANY-VOLUME / *PRIVATE-DISK / *PUBLIC-DISK
Beschränkt die Auswahl der Dateien auf den angegebenen Datenträger.
Dieser Operand ist nur sinnvoll, wenn bei FILE-NAME ein teilqualifizierter Dateiname oder der Name einer Dateigenerationsgruppe angegeben wurde.
SELECT = *ANY-VOLUME
Es werden die angegebenen Dateien ausgewählt, unabhängig davon, auf welchem Datenträger sie sich befinden.
SELECT = *PRIVATE-DISK
Es werden die angegebenen Dateien ausgewählt, die sich auf Privatplatte befinden.
SELECT = *PUBLIC-DISK
Es werden die angegebenen Dateien ausgewählt, die sich auf gemeinschaftlichem Datenträger (Platte) befinden.
SELECT = *NET-STORAGE
Es werden die angegebenen Dateien ausgewählt, die sich auf einem Net-Storage-Volume befinden.
FILE-STATUS = *CLOSED(...)
Es werden nur geschlossene ISAM-Dateien mit der Eigenschaft BLOCK-CONTROL=*WITHIN-DATA-BLOCKS bearbeitet (NK-ISAM Dateien).
FILE-NAME = <filename 1..54>
Bezeichnet die permanente oder temporäre Datei. Nur die eigene Benutzerkennung darf angegeben werden.
INDEX-STATISTICS = *UPDATE / *ON / *OFF
Es werden die angegebenen Dateien ausgewählt, die sich auf einem Net-Storage-Volume befinden.
INDEX-STATISTICS = *UPDATE
Die Zähler werden in der Datei überprüft. Sind die Zähler ungültig , werden sie neu erstellt.
INDEX-STATISTICS = *ON
Die Zählung wird für die angegebene Datei eingeschaltet und die Zähler initialisiert.
INDEX-STATISTICS = *OFF
Die Zählung wird für die angegebene Datei abgeschaltet und die Zähler für ungültig erklärt.
ISAM-COPY-NAME = *SAME / <partial-filename 2..53> / <filename 1..54>
ISAM-COPY-NAME ist nur bei der Rekonstruktion von ISAM-Dateien sinnvoll und bezeichnet die Datei, in der die ISAM-Datei rekonstruiert werden soll. Die Datei erhält die Verschlüsselungsattribute der zu rekonstruierenden Datei.
ISAM-COPY-NAME kann der Name einer permanenten oder temporären Datei oder einer Dateigeneration sein, nicht jedoch der Name einer Dateigenerationsgruppe.
Für Dateien unter einer fremden Benutzerkennung muss der Benutzer das Recht zum schreibenden Zugriff besitzen.
ISAM-COPY-NAME darf nicht mit FILE-NAME übereinstimmen.
Ist FILE-NAME teilqualifiziert, muss auch ISAM-COPY-NAME teilqualifiziert angegeben werden.
Ohne Angabe von ISAM-COPY-NAME erstellt das System eine Arbeitsdatei für die Rekonstruktion der ISAM-Datei (Voreinstellung *SAME).
Soll die Rekonstruktion auf privater Platte erfolgen, so muss die Datei katalogisiert sein. Sind Daten- und Indexblöcke der zu rekonstruierenden Datei auf getrennten Platten abgelegt, so muss außerdem für die Rekonstruktions-Kopie entsprechend Speicherplatz angefordert werden (CREATE-FILE bzw. MODIFY-FILE-ATTRIBUTES).
Nur die eigene Benutzerkennung darf angegeben werden.
ISAM-COPY-NAME = *SAME
Die Rekonstruktion erfolgt in die bei FILE-NAME angegebene Datei. Dies geschieht über eine Arbeitsdatei, die das System erstellt.
Für ISAM-Dateien auf Privatplatte oder unter fremder Benutzerkennung wird die Arbeitsdatei in die bei FILE-NAME angegebene Datei kopiert und anschließend gelöscht. Da das Kopieren sehr zeitaufwändig sein kann, wird die Angabe eines vollqualifizierten Dateinamens empfohlen.
Für ISAM-Dateien auf PUBLIC-Platten unter eigener Benutzerkennung wird die Arbeitsdatei nur umkatalogisiert und die Originaldatei gelöscht.
Besteht für die ISAM-Datei auf PUBLIC-Platte eine Sperre von Concurrent Copy, die nicht zurückgesetzt werden konnte, wird die Meldung DMS06EE ausgegeben. Die reparierte ISAM-Datei ist in der Arbeitsdatei REPAIR.<tsn>.hhmmss enthalten, da die Originaldatei wegen der Sperre von Concurrent Copy nicht gelöscht werden konnte und das anschließende Umbenennen der Arbeitsdatei auf den Namen der Originaldatei nicht mehr durchgeführt wurde.
ISAM-REPAIR-INFO = *NO / *YES(...)
Der Operand ISAM-REPAIR-INFO wird nur für ISAM-Dateien ausgewertet: Gibt an, ob Dateiblöcke, die nicht rekonstruierbar sind, protokolliert werden sollen.
ISAM-REPAIR-INFO = *NO
Nicht rekonstruierbare Dateiblöcke werden nicht protokolliert.
ISAM-REPAIR-INFO = *YES(...)
Für nicht rekonstruierbare Dateiblöcke werden die Blocknummern ausgegeben. Die Ausgabe kann dabei nach SYSOUT (Voreinstellung) oder nach SYSLST erfolgen.
OUTPUT = *SYSOUT / *SYSLST
Gibt an, wohin die Blocknummern der nicht rekonstruierbaren Dateiblöcke ausgegeben werden. Die Ausgabe nach SYSOUT ist voreingestellt.
Kommando-Returncode
(SC2) | SC1 | Maincode | Bedeutung / garantierte Meldungen |
---|---|---|---|
0 | CMD0001 | Kommando ausgeführt | |
1 | 0 | CMD0001 | Keine Aktion nötig |
2 | 0 | DMS06E6 | Die im Kommando angegebene Datei ist leer |
2 | 0 | DMS06E9 | Kein gültiger Satz beim Wiederherstellen der ISAM-Datei gefunden |
2 | 0 | DMS06ED | Fehler beim Schreiben der nicht wiederherstellbaren Blöcke in Hilfsdatei |
1 | CMD0202 | Syntax- oder Semantikfehler im Kommando | |
32 | DMS0584 | Während der Verarbeitung wurde ein Zustand gemeldet, der die Fortführung der Funktion nicht zulässt. | |
64 | CMD0102 | Unterbrechung mit K2-Taste | |
64 | CMD0216 | Privilegien-Fehler | |
64 | DMS0501 | Angeforderter Katalog nicht verfügbar | |
64 | DMS0512 | Angeforderter Katalog nicht gefunden | |
64 | DMS051B | Gewünschte Benutzerkennung nicht im Pubset | |
64 | DMS051C | Benutzer hat auf Pubset kein Zugriffsrecht | |
64 | DMS0533 | Angegebene Datei im Pubset nicht gefunden | |
64 | DMS0535 | Angegebene Datei nicht mehrfach benutzbar | |
64 | DMS055C | Der Katalogeintrag konnte auf dem zugewiesenen Datenträger nicht gefunden werden | |
64 | DMS0583 | Bei der Wiederherstellung der Datei trat ein Fehler auf. | |
64 | DMS0585 | Während der Katalogverarbeitung bzw. während der Mehrrechnerverarbeitung wurde ein Fehler festgestellt. | |
64 | DMS0586 | Der Zugriff bzw. die Belegung eines Datenträgers ist derzeit nicht möglich | |
64 | DMS0587 | Die Benutzung des angegebenen Kommandos wurde von der Systembetreuung eingeschränkt | |
64 | DMS0588 | Die Plattenspeicher-Zuweisung konnte nicht durchgeführt werden | |
64 | DMS05F8 | DVS-Fehler wurde gemeldet | |
64 | DMS05FC | Angegebene Benutzer-Kennung nicht im HOME-Pubset | |
64 | DMS0609 | Zugriff auf Systemdatei nicht möglich | |
64 | DMS06E4 | Datei ist zerstört | |
64 | DMS06E7 | Wiederherstellung mit eingeg. Kommando für diesen Dateityp nicht möglich | |
64 | DMS06FF | BCAM-Verbindung unterbrochen | |
64 | DMS0804 | Datei mit WROUT=NO erstellt. Konsistenz-Prüfung nicht sinnvoll | |
130 | DMS0524 | Systemadressraum erschöpft | |
130 | DMS053C | In der Katalog-Datei des Pubsets kein Platz | |
130 | DMS0582 | Die Datei ist derzeit gesperrt oder in Gebrauch und kann nicht bearbeitet werden | |
130 | DMS0585 | Während der Katalogverarbeitung bzw. während der Mehrrechnerverarbeitung wurde ein Fehler festgestellt. | |
130 | DMS0586 | Der Zugriff bzw. die Belegung eines Datenträgers ist derzeit nicht möglich | |
130 | DMS0588 | Die Plattenspeicher-Zuweisung konnte nicht durchgeführt werden | |
130 | DMS0594 | Nicht genügend virtueller Speicherplatz vorhanden | |
130 | DMS05C8 | Maximale erlaubte Anzahl von Dateien erreicht |
Hinweise zur Rekonstruktion von ISAM-Dateien
Das Rückschreiben von Datenpuffern auf die Platten erfolgt bei ISAM-Dateien, sobald ein neuer Datenblock in den Hauptspeicher geholt werden muss. Dadurch können die letzten vorgenommenen Änderungen bei der rekonstruierten ISAM-Datei fehlen (bei WRITE-IMMEDIATE=*YES höchstens ein Satz).
Fehlt die Angabe ISAM-COPY-NAME für eine ISAM-Datei auf gemeinschaftlichen Datenträgern, wird sie in einer Arbeitsdatei rekonstruiert, die vom System erstellt wird. Anschließend wird die Datei FILE-NAME gelöscht, und zwar ohne explizite „DESTROY-Angabe“ (siehe Kommando CREATE-FILE, MODIFY-FILE-ATTRIBUTES), und die Arbeitsdatei in FILE-NAME umbenannt.
Fehlt die Angabe ISAM-COPY-NAME für eine ISAM-Datei auf privaten Datenträgern, wird sie in einer temporären Arbeitsdatei auf gemeinschaftlichen Datenträgern rekonstruiert. Anschließend wird die Arbeitsdatei in die Datei FILE-NAME kopiert und expliziter „DESTROY-Angabe“ (siehe Kommandos CREATE-FILE, MODIFY-FILE-ATTRIBUTES) gelöscht. Dieser Vorgang kann sehr zeitaufwändig sein, sodass es günstiger ist, ISAM-COPY-NAME anzugeben.
Wird im Kommando REPAIR-DISK-FILES ISAM-COPY-NAME angegeben, wird FILE-NAME dort rekonstruiert. FILE-NAME selbst bleibt unverändert. Soll ISAM-COPY-NAME auf privaten Datenträgern stehen oder handelt es sich bei FILE-NAME um eine Datei auf privaten Datenträgern, muss ISAM-COPY-NAME vor Eingabe des Kommandos REPAIR-DISK-FILES katalogisiert werden.
Stehen Daten- und Indexblöcke auf getrennten Datenträgern, muss der Benutzer außerdem für ISAM-COPY-NAME Speicherplatz reservieren (Kommando CREATE-FILE, MODIFY-FILE-ATTRIBUTES).In den Datenblöcken der rekonstruierten Datei wird kein Platz für spätere Erweiterungen frei gehalten, was der Vereinbarung PADDING-FACTOR=0 im Kommando ADD-FILE-LINK entspricht.
ISAM-Dateien mit Daten- und Indexblöcken auf getrennten privaten Datenträgern können mit dem Kommando REPAIR-DISK-FILE nur rekonstruiert werden, wenn BUFFER-LENGTH=*STD gilt.
Enthält ein ISAM-Datenblock Daten, die keinem definierten Datensatz zugeordnet werden können, wird der gesamte Block in der PAM-Datei S.dateiname1.REPAIR sichergestellt. Nach der Bearbeitung REPAIR-DISK-FILES steht diese Datei dem Benutzer zu eigenen Rekonstruktionsversuchen zur Verfügung. Falls der neue Dateiname zu lang wird, wird dateiname1 entsprechend gekürzt.
Da bei der Wiederherstellung von ISAM-Dateien eine Dateikopie angelegt wird, die zum Pubspace zählt, muss der Anwender dafür sorgen, dass ihm genügend Speicherplatz zur Verfügung steht.
- Da bei Wiederherstellung von NK-ISAM-Dateien von einer zerstörten Datei ausgegangen wird, wird mit INDEX-STATISTICS in der Dateikopie nach Default des Systems vorgegangen.
Hinweise zu INDEX-STATISTICS bei NK-ISAM-Dateien
Bei eingeschaltetem INDEX-STATISTICS werden nur die Blöcke und freien Bytes in der primary Index-Blöcke von Level 1 gezählt. Die primary Index-Blöcke von Level 1 sind die Index-Blöcke, die sich unmittelbar vor den Daten-Blöcken befinden.
Da sich in den Index-Blöcken komprimierte Schlüssel befinden, kann die Anzahl der Schlüssel in einem Index-Block sehr unterschiedlich sein. Daher muss der Benutzer genaue Kenntnis über die Datei haben, um weitere Maßnahmen zu ergreifen. (z.B. Rekonstruktion der Datei).