Details zur History DB

Dieses Kapitel für fortgeschrittene Benutzer beschreibt die Datenpunkte und internen Vorgänge bei der Archivierung. Defaultmäßig startet WinCC OA die History DB (siehe useValueArchive).

Konfiguration der Wertarchivierung

Die historische Archivierung von Wertänderungen wird wie bisher durch die Konfigs _archive durchgeführt (siehe _archive Konfigs).

Hinweis

Eine Archivierung können Sie nicht nur auf Blattebene der DP-Struktur, sondern an jedem Knoten einstellen. Damit werden auch alle Elemente unterhalb des Knotens automatisch archiviert.

archiveReqTimeout

Die Einstellung dient dazu, falls ein Archiv abgestellt wird, laufende Abfragen trotzdem "irgendwann" (d.h. nach max. xxx Sekunden) zu beantworten. Durch den Config-Eintrag definieren Sie, wieviele Sekunden der Data-Manager (=HDB) auf diese Antworten von Archiven (bei dpPeriodRequest(), dpGetAsynch() und dpQuery()) maximal warten soll. Trifft innerhalb diese Periode nicht von allen betroffenen Archiven eine Antwort ein, wird die Anfrage mit Fehler beendet. Es sollte auf dem Defaultwert 0 bleiben (unbeschränkte Wartezeit!). Anderenfalls sind Werte ab 120 [sek] sinnvoll, da Abfragen mitunter länger dauern.

[data]

archiveReqTimeout = 120

-report 11

Mit dieser Kommandozeilenoption erhalten Sie Informationen, wieviele Abfragen (Queries) angefordert werden, und in welchen Archiv die einzelnen Datenpunkte gespeichert werden, Datenpunktname, Datenpunktnummer und die Zeitliste. Allgemeine Informationen zur HDB erhalten Sie mit -report all. Beachten Sie, dass diese Kommandozeilenoption beim Data-Manager aktiviert werden muss.

Start / Stop des Archivprozesses

Die Archivprozesse werden in der Console gestartet und gestoppt. Dabei wird jeweils die Archivnummer als Kommandozeilenparameter ("-num x") mitgegeben. Das Archiv meldet sich dann beim DM an und erhält von dort die notwendigen Konfigurationsdaten (z.B. zugeordnetes Verzeichnis usw.). Der Prozessname in der Console ist WCCOAvalarch (siehe Archivierung starten).

Da Teile der Archivkonfigurationsdaten auch im Archiv selbst abgelegt sind, erfolgt beim Start ein Gegencheck mit den im jeweiligen Archiv-DP gespeicherten Werten. Bei Abweichungen wird so vorgegangen, als ob eine Archivparameter-Änderung durch den Benutzer gemacht worden wäre. Details zur Behandlung von solchen Differenzen werden bei den einzelnen Archivparametern näher behandelt.

Ist kein interner Archiv-DP beim Starten eines Archivs vorhanden, beendet die Historienebene das Archiv wieder. Alle Archivparameter, welche mit einem dpSet() übertragen werden, werden auch gemeinsam im Archiv geändert.

Archivname und -nummer

Die Zuordnung Archivname/Archivnummer erfolgt über das Archiv- Datenpunktelement (_ValueArchive_x.general.arName). Derzeit sind die Datenpunktnamen für die internen DPs auf _ValueArchive_x vorgegeben, wobei x die Archivnummer darstellt. Für Redundante Projekte existiert für jedes Archiv ein zweiter interner DP, dessen Name mit "_<num>_2" endet. Die 2 bezeichnet die Redundanz, die andere Ziffer die Archivnummer.

Hinweis

Es wird empfohlen, dass Sie Ihre Einstellungen für Datenpunkte über die Panels vornehmen.

Außerdem wird im internen Datenpunkt des Data-Managers ("_DataManager") ein neues Element "UseValueArchive" vom Typ bool eingeführt, welches anzeigt, ob im Moment die Historiendatenbank verwendet wird. Der Wert dieses Elementes leitet sich vom entsprechenden Eintrag in der Config-Datei (s.o.) ab. Zum Neuanlegen eines Archivs wird ein neuer Archiv-DP angelegt und ein Eintrag in der Prozessliste der Console muss erfolgen (erfolgt nicht automatisch). Der Wert kann nur gelesen und nicht verändert werden.

Zusätzlich muss das Element im internen Archiv-DPE (_ValueArchive.general.createArchive) gesetzt sein, damit das Archiv das Neuanlegen des ersten Archivsatzes durchführt. Das Starten des zugehörigen Archivs erfolgt ebenfalls nicht automatisch.

Das Löschen eines Archivs besteht im Setzen des Archiv-DP-Elements "state" (s. unten) auf den Status gelöscht und dem Austragen des Archivprozesses aus der Prozessliste der Console (erfolgt nicht automatisch). Starten Sie ein Archiv mit Status "gelöscht", so wird es sofort wieder beendet. Außerdem sind alle DPE, die diesem Archiv zugeordnet sind, auf ein anderes Archiv umzustellen oder die Archivierung ist zu deaktivieren. Dies erfolgt nicht automatisch. Falls ein DPE einem gelöschten Archiv zugeordnet ist, wird es anschließend im Default-Archiv (Archiv 0) abgelegt. Alle historischen Daten der DPEs des gelöschten Archivs gehen verloren. Die Archivdateien werden nicht automatisch gelöscht.

Überwachung und Steuerung der Archivprozesse

Einstellen der Archivparameter

Die Archivparameter werden als Elemente des Archivdatenpunktes (_ValueArchive) verwaltet. Dabei gibt es reine Parameter und Aktionen. Während die Parameter nur dem Archiv mitgeteilt werden, lösen Aktionen Vorgänge im Archivprozess aus, welche über andere DPEs des Archivdatenpunktes rückgemeldet werden. In diesem Kapitel werden die "einfachen" Archivparameter beschrieben.

Die <DPE>.Get- und <DPE>.Set-Elemente werden für Parameter verwendet, welche im Archiv nicht sofort geändert werden. In <DPE>.Set wird eine gewünschte Änderung eingetragen, in <DPE>.Get wird der jeweils aktuelle Stand des Archivs angezeigt.

Die Zeitangaben zur Auslösung verschiedener Ereignisse sind als Referenzen auf einen _TimedFunc-Datenpunkttyp realisiert. Ist zu einem Prozess noch kein DP angelegt und parametriert, erfolgt eine Fehlermeldung.

Tabelle: Teile des DP _ValueArchive

Element Element Int Bedeutung
arNr 21 Archivnummer
state2) 21 0=stop, 1=online, 2=ausgelagert, 3=gelöscht -
general 1
arType1) 21 0=Werte, 1=Meldungen; default: 0
arName 42 Archivbezeichnung [18]; Achtung: Langtext!; default: ValueArchive_x
hostNameGet3) 25 Hostrechner für .Archiv [32]
hostNameSet 25 Setzen des Hostrechners
filePathGet3) 25 Basispfad für Archivsätze, 128], Default.: <proj_path>/db/VA_000x
filePathSet 25 Setzen des Basispfads
fileNameGet4) 25 Dateinamensregel für Archivsätze [64]- default: YYYYMMDDHHMOSS
fileNameSet 25 Setzen der Dateinamensregel
createArchive3) 21 1=Archiv anlegen (wird nur beachtet, wenn noch keine Archivsätze im Archivpfad sind)
forwardToRDB 23 Gibt an, ob die Werte aus dem Value Archive in die RDB weitergeleitet werden sollen. default: false
error1) 1
errNum 21 Fehler der letzten Archivoperation n.z.d.
errDp 27 DpId, welche einen Fehler (z.B. Archivüberlauf)- ausgelöst hat
errBit 23 wird bei Archivüberlauf gesetzt (zur Meldebehandlung.)
size 1
maxDpElGet4) 20 Max. Anzahl DP-Elemente
maxDpElSet 20 Setzen der max. Anz. DPE
maxValuesGet4) 20 Max. Anz. Werteinträge
maxValuesSet 20 Setzen der max. Anz. WE
maxFillPctGet4) 21 Max. Füllrate in %, 0=100 -1 = kein Archivsatzwechsel, wenn maxValues erreicht worden ist
maxFillPctSet 21 Setzen der max. Füllrate
maxHeapSizeGet4) 20 Max. Größe der Speicherhalde in Kilobytes -
maxHeapSizeSet 20 Setzen der max. Größe SH
maxCacheGet 20 Max. Größe des Archive-Eingangspuffers in MB
maxCacheSet 20 Setzen der max. Größe des Archive-Eingangspuffers (Default 32 MB)
maxCorrCacheGet 20 Max. Größe des Korrekturwert-Eingangspuffers in MB
maxCorrCacheSet 20 Setzen der max. Größe des Korrekturwert-Eingangspuffers
intervals 1
aliveInterval 20 Zykluszeit f. Zeitstempelung (in sec)
saveCycle 20 Zykluszeit f. Onlinesicherung des akt. Archivsatzes (in sec)
setMgmt 1
fileSwitch 1
switchTimeGet4) 41 Zeitpunkt Archivsatzwechsel, Referenz auf _TimedFunc, wird vom Archiv selbsttätig verwaltet
switchTimeSet 41 Setzen des Zeitpunktes
switchRoundOffGet 20 Periode in sec, die angibt, wann die Umschaltung des Schreibens in das neue Archiv tatsächlich erfolgt, d.h. der neue Archivsatz wird zum Zeitpunkt switchTime angelegt, aber erst switchRoundOff sec später aktiviert. Die "echte" Archivwechselzeit ist also switchTime + switchRoundOff -
switchRoundOffSet 20 Setzen der Übergangsperiode
overflowCountGet4) 20 min. Anz. leere Werttupel je DPE im komprimierten AS in Stufe 1
overflowCountSet 20 Setzen min. Anz. leere WT
overflowPctGet4) 21 Prozentsatz leere Werttupel im komprimierten AS in Stufe 1
overflowPctSet 21 Setzen des Prozentsatzes leere WT
overlapPeriodGet 4) 20 Zeitdauer, wie lange beim AS-Wechsel beide AS geöffnet bleiben (in sec)
overlapPeriodSet 20 Setzen der Zeitdauer
expKeepPeriodGet4) 20 Hysterese für expandierte nicht-akt. AS (in sec)
expKeepPeriodSet 20 Setzen der Hysterese
fileCompression 1
packCountGet 4) 20 Anz. AS in Komprimierung. Stufe 1
packCountSet 20 Setzen der Anz. AS
packTimeGet 4) 41 Zeitpunkt der Komprimierung. auf Stufe 2, Referenz auf _TimedFunc, wird vom Archiv selbsttätig verwaltet
packTimeSet 41 Setzen des Zeitpunktes
autoStartAfterSwitchGet 23 Startet automatisch nach gemeldetem Wechsel, bei TRUE die automatische Komprimierung der Archive
autoStartAfterSwitchSet 23 Startet automatisch nach gesetztem Wechsel, bei TRUE die automatische Komprimierung der Archive
fileMerge 4) 1
mergeCountGet 4) 20 Anz. AS bei deren Überschreitung gemerged wird
mergeCountSet 20 Setzen der Anzahl der AS
mergeTimeGet4) 41 Zeitpunkt für Merge Referenz auf _TimedFunc wird von Archiv selbsttätig verwaltet
mergeTimeSet 41 Setzen des Zeitpunkts
fileDeletion 1
keepCountGet4) 20 Max. Anz. gespeicherte AS, 0 = nur Intervall verwenden
keepCountSet 20 Setzen maximalen Anzahl gespeicherter AS
removeTimeGet4) 41 Zeitpunkt des Löschens Referenz auf _TimedFunc, wird von Archiv selbsttätig verwaltet; im Intervall-Teil dieses DPEs ist die zu speichernde Zeitperiode abgelegt (in sec)
removeTimeSet 41 Setzen des Zeitpunkt
files2) 1 von Archiv beim Start und bei Änderungen übertragen
fileName 9 Array aller Archivfiles (ohne Pfad ), jüngstes zuerst (0 = aktuell)
state 5 Stati der einzelnen Archivfiles (0 = online -1 = gelöscht)
compressionState 5 Komprimierungszustände
startTime 10 Archivsatz-Anfangszeiten
endTime 10 Archivsatz-Endzeiten
statistics 1 Werte werden erst nach Setzen von index gesetzt
index 20 Index in files.filename, welcher Archivsatz abgefragt werden soll (Wert kann geschrieben werden)
dpElementCount2) 20 Anzahl DPEs im Archivsatz
dpElements2) 29 Alle DPEs dieses Archivsatzes
dpValues2) 5 zu jedem DPE die Anzahl der Werteinträge
size2) 20 Archivsatzgröße

Anmerkungen:

  1. nur beim Archiv anlegen einstellbar, sonst read-only

  2. read-only

  3. ab nächstem Archivstart aktiv, read-only

  4. ab nächstem Archivsatzwechsel aktiv, read-only

Archivsatzwechsel/-komprimierung/-löschung

Archivsatzwechsel können automatisiert (über Archivparameter, siehe voriges Kapitel) und /oder manuell ausgelöst werden. Für letztere Methode dient das _ValueArchive_X.action.fileSwitch.start-DPE des jeweiligen Archiv-DPs. Über _ValueArchive_X.action.fileSwitch.progress- DPE wird der aktuelle Status des Archivsatzwechsels angezeigt. Das gleiche gilt für die Vorgänge Komprimierung und Löschung von Archivsätzen. Bei manuellem Auslösen der letztgenannten Vorgänge sind immer der oder die ältesten Archivsätze betroffen (Ausnahme: bei Steuerung über die Konfigurationsoberfläche [..progress=2] können auch die betroffenen Archivsätze direkt spezifiziert werden, siehe Kapitel 5). Beim Löschen von Archivsätzen ist neben der Angabe der Anzahl der zu behaltendenen Archivsätze auch die Angabe einer Zeitperiode (im interval-Teil des removeTime-Elementes) möglich. Ein Wert von 0 (als interval oder count) bedeutet, dass diese Art der Spezifikation nicht verwendet werden soll, werden beide Parameter angegeben, wird zuerst der interval- und anschließend der count-Parameter berücksichtigt. Die in diesem Kapitel besprochenen Methoden werden alle autark vom Archiv selbst durchgeführt bzw. können mit dem .start-DP-Element manuell ausgelöst werden.

Durch Setzen von maxFillPct auf -1 kann ein automatischer Archivsatzwechsel bei Erreichen der max. Werteanzahl unterbunden werden. In diesem Fall können dadurch auch Werte verloren gehen. Im errDp-DPE wird angezeigt, welcher DPE das Vollwerden eines Archivsatzes ausgelöst hat. Zusätzlich wird in diesem Fall das errBit gesetzt, um eine Meldebehandlung zu ermöglichen. Es können für die Kompression, Sicherung und Löschung maximal 9999 Dateien pro Archivsatz parametriert werden.

Der Parameter fileswitchRoundOff bestimmt, wieviele Sekunden nach dem Eintreten eines Archivsatzwechsel-Ereignisses die Umschaltung der Schreibvorgänge tatsächlich erfolgt. Dies dient dazu, bei redundanten Systemen eine gleiche Benennung der Archivdateien zu erreichen und die Umschaltzeitpunkte zu synchronisieren.

Berücksichtigen Sie, dass ein passender Wert für das Element setMgmt.fileSwitch.switchRoundOff gesetzt wird (Defaultwert 30 Sekunden). Wenn ein manueller oder zeitgesteuerter Archivsatzwechsel durchgeführt wird und während der Periode zwischen Wechsel und switchRoundOff-Sekunden später das vorige Archiv voll wird, wird kein neuer Archivsatz erstellt. In diesem Fall können Werte verloren gehen. Beachten Sie weiters, dass manuell oder zeitgesteuerte Archivsatzwechsel nicht später als mit switchRoundOff definiert, erfolgen sollen, da sonst verschiedene Archivsatz-Namen auf den redundanten System erfolgen können.

In redundanten Systemen werden zeitgesteuerte Archivsatzwechsel während der Datei-Synchronisation unterdrückt. Archivsatzwechsel, die während des Backup-Prozesses durchgeführt werden sollen, werden nach der Sicherung durchgeführt (mit Original-Zeitstempel)

Beachten Sie, dass zeitgesteuerte Archivsatzwechsel auf dem aktiven System, die nach der Redu-Datei Synchronisation und bevor das entsprechende Archiv auf dem passiven System gestartet, wurde, verschiedene Archivsatz-Dateinamen verursachen.

Tabelle 1. DPE action des DP _ValueArchive._ValueArchive
Element Element Int Bedeutung
action 1
fileList 9 Beinhaltet die Namen der zu komprimierenden Archivsätze
fileSwitch 1
start 23 Aktivierung AS-Wechsels
progress 23 1=in progress, 0=finished
fileCompression 1
start 23 Aktivierung Komprimierung
progress 23 1=in progress, 0=finished, 2=fileList auslesen
targetCompression (wird nicht verwendet) 20 gewünschte Verdichtungsstufe (0,1,2), nur mit fileList möglich
fileMerge 1
start 23 Aktivierung Zusammenfassung.
progress 23 1=in progress, 0=finished, 2=fileList auslesen
fileDeletion 1
start 23 Aktivierung Löschung
progress 23 1=in progress, 0=finished, 2=fileList auslesen
fileBackup 1
startTimeGet 41 Zeitpunkt des Backups Referenz auf _TimedFunc, wird von Konf.-Oberfläche verwaltet
startTimeSet 41 Setzen des Zeitpunkts
saveCountGet 20 Anz. nicht zu sichernder AS (mit dem jüngsten beginnend), 0 = alle abgeschlossenen Archivsätze werden gesichert
saveCountSet 20 Setzen der Anzahl
start 23 Aktivierung Backup siehe Kapitel 5)
progress 23 1=in progress, 0=finished, 2=fileList auslesen, 3=Files für Backup bereit, 4=Backup beendet
fileRestore 1
start 23 Aktivierung Restore (siehe Kapitel 5)
progress 23 1=in progress, 0=finished , 2=fileList auslesen

Die Operation fileSwitch kann nur vom Archiv oder durch manuelles Setzen des start-Elementes auf 1 aktiviert werden. Die Operationen fileCompression, fileMerge und fileDeletion können vom Archiv selbst, manuell durch Setzen des start-Elementes auf 1 und über die Konfigurationsoberfläche (siehe Datenarchivierung) aktiviert werden. Die Operation fileRestore kann nur über die Konfigurationsoberfläche aktiviert werden.

Sichern/Auslagern/Löschen

Die hier besprochenen Methoden arbeiten mit einer Kooperation von Konfigurationsoberfläche und Historienebene. Die Historienebene hat dabei zu prüfen, ob der Vorgang im Moment durchgeführt werden kann. Falls nicht, wird ein Fehlercode gesetzt, statt eine Dateiliste zurückgeliefert.

Beim Starten des Archivs werden die Elemente action.*.progress von der Historien-DB auf 0 gesetzt (Ausnahme: fileBackup.progress, damit eine begonnene Sicherung weitergeführt werden kann). Beim Starten der Konfigurationsoberfläche werden alle Status (..progress) zurückgesetzt, falls der Status > 0 war, wird die Operation frisch angestoßen (Wiederholung).

Online-Sicherung

Die Online-Sicherung dient im Gegensatz zum Auslagern, der Sicherung aller Dateien eines Archivs. Dieser Vorgang wird vom Archiv nicht selbst durchgeführt. Das Archiv wird nur veranlasst, für eine möglichst kurze Zeit, alle Dateien zu schließen. Eine extern angestoßene Sicherung, die nicht Teil des Archivprozesses oder der Historienebene ist, kann dann diese Dateien sichern. Es wird zwischen dem aktuellen Archivsatz und geschlossenen Archivsätzen unterschieden, d.h. diese können getrennt angefordert werden. Aus dem Grund ist die Zeit, die der aktuelle Archivsatz nicht verwendet werden kann, zu minimieren. In action.fileList werden die Dateinamen der gerade geschlossenen Dateien angezeigt.

Eine Online-Sicherung kann nur bei gestopptem Archiv wieder eingespielt werden. Dieser Vorgang ist ebenfalls extern anzustoßen und ist nicht Teil des Archivs oder der Historienebene.

Tabelle: DPE onlineBackup von DP _ValueArchive

Element Element Int Bedeutung
action 1 1
onlineBackup 1
startTime 41 für Automatik, dzt. N/A Referenz auf _TimedFunc., Bestimmt die Länge des timeouts des Archives bestimmen: 0 = mit _Timed Func , MAXTIME = kein timeout, sonst = Zeitdauer = timeout
endTime 41 für Automatik, dzt. N/A Referenz auf _TimedFunc. Bestimmt die Länge des timeouts des Archives bestimmen: 0 = Berechnung mit _Timed Func , MAXTIME = kein timeout, sonst = Zeitdauer = timeout
startCurrent 23 aktiviert Backup-Modus (aktueller Archivsatz)
progressCurrent 23 Rückmeldung vom Archiv, 1 = Files geschlossen Dateinamen in fileList abgelegt , 0 = Online-Sicherung. fertig
startClosed 23 aktiviert Backup-Modus (geschlossene AS)
progressClosed 23 Rückmeldung vom Archiv, 1 = Files geschlossen Dateinamen in fileList abgelegt, 0 = Online-Sicherung. fertig

Löschen von Archivsätzen

Für konstante Archivgrößen sind Lösch- und oder Auslagerungsvorgänge notwendig. Diese betreffen immer ganze Archivsätze (d.h. alle DPEs eines Archivs für einen gewissen Zeitraum). Als Parameter sind die zu löschenden Dateinamen, der action.fileList zu übergeben. Das Löschen kann manuell oder zeitgesteuert ausgelöst werden und wird von der Konfigurationsoberfläche gesteuert und aktiviert.

Redundanzabgleich: Beim Hochfahren prüft das Archiv, ob die übermittelte Files-Liste mit dem Inhalt des Archivierungs-Verzeichnisses zusammenpaßt (state = online). Überflüssige Dateien im Dateisystem werden gelöscht.

Tabelle: DPE lifeList von _ValueArchive

Element Element Int Bedeutung
action 1 1
lifeList 91 Liste der betroffenen Dateinamen

Sichern/Einlagern abgeschlossener Archivsätze

Ähnlich wie das Löschen erfolgt auch das Sichern von Archivsätzen. Es wird je Archiv für einen Zeitraum gestartet. Die Konfigurationsoberfläche meldet dabei die zu sichernden Archivsätze an das Archiv, welches diese für die Zeit der Sicherung für Schreibvorgänge sperrt. Das Skript archiv_client.ctl führt das tatsächliche Auslagern durch. (Bei neuen Projekten ist das Skript standardmäßig in der Skriptliste pvss_scripts.lst des CTRL-Managers vorhanden.) Zum zyklischen Aktivieren steht der Konfigurationsoberfläche das Element action.fileBackup.startTime zur Verfügung.

In den Strukturen action.media und archive kann eine Zuordnung Archivsatz-Dateiname - Backup-Medium (+ Zeitraum) vom Sicherungsskript abgelegt werden, um das spätere Einlagern für den Benutzer zur erleichtern. Das Auslagern kann manuell oder zeitgesteuert ausgelöst werden.

Die Einlagerung erfolgt auf dem umgekehrtem Weg.

Tabelle 2. DPE action.media von _ValueArchive
Element Element Int Bedeutung
action.media 1
change 24 für Script falls Flanke 0->1 liest neue Fileliste aus (in externem Script), 1->0 falls mediumFileList aktualisiert
fileList 9

Files auf dem aktuellen Backupmedium. device string ist Devicename vom DAT, CD, MO unter Linux,

sonst Pfad unter Windows für CD, MO

progress 21 Device Zugriff Nummern nzd. Bandlaufwerk)
redundancyDevice 25 Pfadname! DB für Redundanz auf fremden Rechner, falls leer -> NICHT kopieren !!
hostName 25 Das Element enthält den Namen des Rechners, auf dem gesichert wird
backupDevice 25 Hier wird das Device/Pfad angegeben, auf dem das Backupmedium liegt
Tabelle 3. DPE archive von _ValueArchive
Element Element Int Bedeutung
archive 1 alle abgelegten Informationen, geschrieben vom ArchivSkript
archiveFilenames 9 alle vom Systems ausgelagerten Filenamen (auf einem beliebigen Medium; jedes Archiv nur auf einem Medium!!)
archiveCompressState 5 für jeden ausgelagerten Datensatz der Komprimierungsmodus [0,1,2,...]
archiveStartTime 10 readonly (Infokopie von HDB) für jeden Datensatz die Startzeit
archiveEndTime 10 readonly für jeden Datensatz die Endzeit (wegen ev. Lücken notwendig !!)
archiveUser 9 User, der die Auslagerung gemacht hat / System
archiveDate 10 Datum und Uhrzeit der Auslagerung

Beim Start des Archivs prüft dieses den aktuellen Zustand von action.fileBackup.progress und setzt einen bereits begonnenen Sicherungsvorgang fort.

Komprimieren/Dekomprimieren von Archivsätzen

Die Komprimierung von Archivsätzen kann einerseits durch die Dateisystem-Funktion unter Windows (siehe compressValueArchive) oder durch Parametrierung der Komprimierung von Archiven ab 2.12.1 erfolgen (siehe History DB - Komprimierung der Archive).

Beim automatischen Aufruf der Komprimierung werden alle Komprimierungsstufen abgearbeitet.

Es werden nacheinander 2 Filelisten aufgebaut:

Für Stufe 1:

Alle Archivsätze die sich auf der Platte befinden, mit Ausnahme des aktuellen Archivsatzes, und die, die Komprimierungsstufe kleiner 1 haben.

Für Stufe 2:

Alle Archivsätze, die Komprimierungsstufe 1 haben (d.h. der aktuelle AS ist nicht dabei), vermindert um die Anzahl an AS die in Stufe 1 verbleiben sollen (DPE "packCount").

Die beiden Filelisten müssen addiert werden. Nach dem Addieren der Filelisten wird diese durch den Config-Eintrag maxNumberOfFilesToCompress (Default = 5, d.h. 5 Archivsätze pro Archiv werden bei jedem Durchgang komprimiert) verkürzt. Für jeden Eintrag in der Fileliste wird die Komprimierung angestoßen und zwar:

  • Falls aktuelle Stufe == 0 dann Komprimierung in Stufe 1

  • Falls aktuelle Stufe == 1 dann Komprimierung in Stufe 2

Dies gilt für die Einstellung einer automatischen Komprimierung (DPE "autoStartAfterSwitch") nach einem Archivsatzwechsel und dem Abwarten der Verzögerungszeit (DPE "expKeepPeriod"). Die Komprimierung der Archive kann ebenfalls manuell angestoßen werden (siehe Panel Historiendatenbank Aktion).

Folgende Tabelle gibt einen Überblick über die wichtigsten internen Datenpunktelemente und den parametrierbaren Wertebereich im Zusammenhang mit der History DB-Komprimierung:

Datenpunktelement Typ Wertebereich Beschreibung

ValueArchive_N.setMgmt.fileCompression.

autoStartAfterSwitch

bool TRUE, FALSE Aktiviert die automatische Komprimierung nach einem Archivsatzwechsel.

ValueArchive_N.setMgmt.fileSwitch.

expKeepPeriod

unsigned 30-7200 Verzögerungszeit zwischen Archivsatzwechsel und Starten der Komprimierung.

ValueArchive_N.setMgmt.fileCompression.

packCount

unsigned 0-99 Anzahl der Archivsätze, die in Komprimierungsstufe 1 verbleiben sollen.

ValueArchive_N.setMgmt.fileSwitch.

overflowPct

int 0-100 Prozentsatz für die Ermittlung freizuhaltender Werteinträge pro DPE. Wert wird nur bei Komprimierung in Stufe 1 verwendet.

ValueArchive_N.setMgmt.fileSwitch.

overflowCount

unsigned 0-nnnn Fixer Wert für die Menge an freizuhaltenden Werteinträgen pro DPE. Wert wird nur bei Komprimierung in Stufe 1 verwendet. Wertebereich richtet sich nach der parametrierten Anzahl der Werteinträge pro DPE.