Mögliche Config-Einträge bei der RDB-Archivierung

Auf dieser Seite finden Sie die möglichen Config-Einträge in Verbindung mit der Archivierung von Werten und Alarmen aus WinCC OA in eine relationale Datenbank. Damit der RDB Archiv-Manager voll funktionsfähig ist, müssen Einträge in den Sektionen [general] und [ValueArchiveRDB] parametriert werden.

Zusätzlich können optionale Einträge in der [ui] und [ctrl]-Sektion Abfragen in die Datenbank beschleunigen.

Einträge der config-Datei im Abschnitt [general]

Eintrag Typ Default Bereich Beschreibung
[general] useRDBArchive int 0 0|1
  • 0 = RDB Archiv-Manager ist nicht funktionsfähig
  • 1 = RDB Archiv-Manager wird aktiviert (Schreiben/Lesen zur RDB).

Einträge der config-Datei im Abschnitt [ValueArchiveRDB]

Eintrag Typ Default Bereich Beschreibung
alertUpdateDelay int 300

0 - 600

Wenn Alarme, bei denen der Voralarm in einem bereits ausgelagerten Archivsatz vorhanden ist, auftreten, versucht die Datenbank fünf Minuten lang den alten Alarm zu "erreichen". Dabei werden andere Alarme möglicherweise zurückgehalten und nicht in die Datenbank geschrieben. Um das zu verhindern und um die Zeit auf z.B. 30 Sekunden zu reduzieren, verwenden Sie [ValueArchiveRDB] "alertUpdateDelay = 30".

Anmerkung: Der Wert soll jedoch nicht höher als 300 sein.
bufferToDisk int 1 0 - 2

Auswahl des Speichermodus, in welchem die Datenblöcke gepuffert werden, bevor sie in die Datenbank geschrieben werden.

  • bufferToDisk = 0

    Ohne BufferToDisk: Im Falle eines Ausfalls der Verbindung zur RDB, werden Blöcke im Hauptspeicher gepuffert und dann in die DB geschrieben.

    Anmerkung: Daten gehen verloren, wenn der Speicherplatz überschritten wird!
  • bufferToDisk = 1

    BufferToDiskMin (Default)

  • bufferToDisk = 2

    BufferToDiskMax

bufferToDiskDir string "<Projekt_Pfad>\db\buffer" -

Absoluter Pfad zum Verzeichnis, in welchem die Daten bei bufferToDisk = 1|2 auf der Festplatte gepuffert werden.

Bei Verwendung des Default-Speicherortes, wird das Verzeichnis buffer automatisch angelegt.

Bei Verwendung eines individuellen Speicherortes ist der absolute Pfad einzugeben, z.B.: "D:\BufferToDisk\Files"

DbUser string "" - User der Datenbank
DbType string "ORACLE" "ORACLE", "Access", "SQL" Typ der Datenbank; zurzeit ist nur "ORACLE" implementiert.
Db string "" - Datenbank-Instanz
DbPass string "" -

Datenbankpasswort

Anmerkung: Bitte beachten Sie, dass dieser Config-Eintrag nur für den ersten Start benötigt wird. Danach erfolgt das Auslesen des Passworts nur noch über einen entsprechenden Datenpunkt.
delayAfterDBRestart int 30 -

Zeitliche Verzögerung der Initialisierung des RDB nach Datenbankstart in Sekunden.

Wenn die Datenbank gestoppt und wieder gestartet wird, kann es vorkommen, dass zwischen RDB und der Datenbank zwar eine gültige Verbindung hergestellt werden kann, jedoch ist die Datenbank zu diesem Zeitpunkt noch nicht vollständig hochgefahren. Mit dem Config-Eintrag "delayAfterDBRestart" wartet RDB die eingestellte Zeit ab, bevor er die Verbindungen initialisiert und somit aktiv die Werte in die Datenbank schreibt. Per Default ist dieser Eintrag auf 30 Sekunden eingestellt.

Bei jedem Verbindungsverlust zur Datenbank, und wenn eine Verbindung über die internen Datenpunktelemente "closeDBConnection" und "openDBConnection" geschlossen bzw. geöffnet wird, kommt diese Verzögerung zum Einsatz. Beim Starten des RDB-Managers wird diese Verzögerung jedoch nicht angewendet.

queryOverId bool 1 0|1

Gibt an, wie die lesenden Datenbankabfragen erfolgen:

  • 0 = Datenpunktnamen oder DPE-Namen; diese Variante bringt zwar Performanceeinbußen, aber dadurch kann man aus einem anderen WinCC OA Projekt auf die Daten in der Oracle DB zugreifen.
  • 1 = Id's (schneller)
initialEntriesInBlock int 50 - Definiert, wie groß der jeweils erste Block im Puffer nach erneuter Verbindungsaufnahme des RDB zur OracleDB ist. Alle weiteren Blöcke im Puffer haben dann die eingestellte Größe aus dem Datenpuffer im RDB Manager.pnl.
lostConnectionReportInterval float 15.0 >= 0.0

Gibt an, dass ein Flag gesetzt wird, wenn die RDB die Verbindung zu der Datenbank verliert und versucht diese wieder aufzubauen. Dadurch (das gesetzte Flag) weiß der Benutzer, dass die Verbindung verloren ist. Das Flag wird nach lostConnectionReportInterval (Sekunden) gesetzt.

Definiert, nach wie vielen Sekunden der Benutzer informiert wird, wenn der RDB-Manager die Verbindung zur Datenbank verliert und versucht diese wieder aufzubauen.

maxRequestLineCount int 0 0 - maxInt Limitiert die Größe der abgefragten Daten (dpGetPeriod, alertGetPeriod, dpQuery) auf maximal "x" Rückgabezeilen (0 = keine Beschränkung). Wird dieses Limit überschritten, wird ein Fehler (und keine Daten) zurückgegeben.
maxRequestThreads int 4 0 - 4

Anzahl von Threads und auch Verbindungen zu der Datenbank, die der RDB-Manager verwendet um parallel Operationen in der Datenbank durchzuführen (Abfragen).

Wenn queryRDBdirect = 1 verwendet wird, wird die Lese-Verbindung für den direkten

Datenbank-Zugriff nicht durch diese Einstellung beeinflusst.

(maxRequestThreads kann in diesem Fall auf 0 gesetzt werden).

openConnOnDemand bool 0 0|1

Der Config-Eintrag openConnOnDemand reduziert die Anzahl der RDB-Manager-Connections zu der relationalen Datenbank. Es werden die Read-, Info- und Delete-Connections nur bei Bedarf geöffnet und nach Abschluss der jeweiligen Operation wieder geschlossen.

Die Performance ist schlechter als wenn alle Verbindungen die ganze Zeit offen wären (openConnOnDemand=0).

Die Anzahl von Lese-Verbindung wird durch diese Einstellung nicht beeinflusst (verwenden Sie stattdessen maxRequestThreads).

Der Eintrag openConnOnDemand ist für große verteilte Systeme notwendig, wenn viele RDB-Manager in dieselbe Datenbank schreiben. Andernfalls benötigt Oracle zu viel Speicher, weil zu viele Connections gleichzeitig offen sind.

updateConnCloseDelay float 180 0 - 32767

Für Updates wird eine zusätzliche DB-Verbindung geöffnet. Sie wird nur dann verwendet wenn "openConnOnDemand" = 1 (siehe oberhalb) .

Die Update-Connection wird wieder nach updateConnCloseDelay-Sekunden nach ihrer letzten Verwendung geschlossen. Default = 180 (=3 Minuten).

oracleClientVersion int 11 >= 11 Definiert die Oracle Client Version.
queryOverBounds int 1 0|1

Gibt an, ob die Funktion dpGetPeriod() über die Grenzen des abgefragten Zeitbereichs (Parameter Count der dpGetPeriod-Funktion) abfragen soll oder nicht. Wenn der Count-Parameter der Funktion größer als 0 ist, werden auch Werte außerhalb (das heißt vor und nach) dem abgefragten Zeitbereich abgefragt. Das könnte mitunter eine längere Zeit in Anspruch nehmen. queryOverBounds = 1 bedeutet, dass Werte über die Grenzen abgefragt werden. Dies funktioniert in Verbindung mit queryRDBdirect = 1 nur für RDB-Abfragen auf ein einzelnes Datenpunktelement.

Bei queryOverBounds = 0 werden nur Werte im Intervall abgefragt. Das beschleunigt den Prozess.

queryTimeout int 0 0 - 32767

Bricht Datenbank-Abfragen nach queryTimeout Sekunden ab.

0 bedeutet kein Timeout.

queryFunction bool 0 0|1

Mit dem Config-Eintrag queryFunction = 1 wird eine Datenbank-Funktion anstatt einer Abfrage für dpGetPeriod() verwendet. Damit fallen die Einschränkungen, wie Anzahl der Tabellen und Länge des SQL-Statements, weg. Mit queryFunction = 0 wird wie bisher eine Abfrage verwendet.

Der Eintrag kann in ValueArchiveRDB-, und UI-Sektionen verwendet werden.

Anmerkung:

Bitte beachten Sie, dass dieser Eintrag nicht für den Einsatz in regulären Projekten vorgesehen ist, sondern nur für spezifische, propritäre Datenbankschemata verwendet werden kann.

Ein Einsatz in abweichenden Projekten führt dazu, dass eine korrekte Funktionsweise nicht mehr garantiert werden kann.

redirectArcGroup string - <AR_FROM> :<AR_TO>

Der Config Eintrag erlaubt es festzulegen, ob eine Archivgruppe auf eine andere Archivgruppe gemappt wird, um so das Anlegen zusätzlicher Archivgruppen zu verhindern und eine bessere Performance zu erzielen.

Beispiel

redirectArcGroup = VA10 :QPS

Die Archivgruppe VA10 wird hierbei auf die Archivgruppe QPS weiter geleitet.

redirectArcGroup = VA* :EVENT

Die Archivgruppen, welche mit "VA" beginnen werden auf die Archivgruppe Event weiter geleitet.

sendMaxTS bool 1 0|1
  • sendMaxTS = 1

    Der RDB-Manager holt sich den größten Zeitstempel aus der Datenbank und führt mit dem Data-Manager einen Datenabgleich aus. D.h. der Data-Manager sendet dem RDB-Manager alle Wertänderungen, die neuer sind als der Zeitstempel aus der Datenbank.

  • sendMaxTS = 0

    Der RDB holt den Zeitstempel nicht aus der Datenbank und es erfolgt kein Datenabgleich. Das verbessert die Hochlaufgeschwindigkeit, aber die letzte Wertänderung bis zum RDB-Start ist nicht in der Oracle-Datenbank.

  • sendMaxTS = 2

    Der letzte (zuletzt gespeicherte) Zeitstempel pro System wird in der SYSTEMS-Tabelle gespeichert und mit jedem Block der in die Datenbank geschrieben wird, aktualisiert. Beim Start des RDB-Managers wird der Zeitstempel aus der Tabelle gelesen. Das ist eine schnelle Leseoperation mit der Sie den neuesten Zeitstempel des Systems abfragen können.

SQLPreFetchCount int 1000 >= 0 Legt die Anzahl der Zeilen fest welche gebuffert werden durch die Oracle Client Library nachdem ein erfolgreich Aufruf einer Abfrage und für jeden anschließenden Abruf in der Datenbank. Für Abfragen die eine hohe Anzahl an Datenreihen zurückliefern kann die Performance signifikant verbessert werden durch erhöhen des PreFetchCount Wertes.
writeTimeout int 15 0 - 32767 Wenn Sie in der Datenbank eine INSERT- oder UPDATE-Anweisung durchführen, wartet der RDB-Manager writeTimeout-Sekunden für die Durchführung der Anweisung. Die Verbindung zur Datenbank wird wieder hergestellt, wenn das Timeout abläuft.
writeWithBulk bool 1 0|1
  • 1 = Schreibt Daten in das RDB-Archiv über die OCI Oracle Call-Schnittstelle (OCCI). Um OCI Bulk-Writing zu aktivieren, setzen Sie diesen Eintrag auf 1. Dies verbessert die Performance.
  • 0 = OCI wird nicht verwenden.
APMDbUser string 0 0|1

APM und die APM-Einträge werden verwendet um aus einer zweiten RDB Daten in ein WinCC OA Projekt abzufragen. Bei der Abfrage wird der Datenpunkt-Name und nicht die ID verwendet. Für die APM Abfrage-Funktionen siehe Kapitel Direkte Lesefunktionen

APMDbUser ist der Datenbank-Benutzer.

APMDbType string "" "ORACLE", "Access", "SQL" Datenbanktyp. Zurzeit ist nur "ORACLE" implementiert.
APMDbDb string "" - Datenbank-Instanz

Optionale Einträge der config-Datei im Abschnitt [ui] bzw. [ctrl]

Eintrag Typ Default Bereich Beschreibung
queryRDBdirect bool 0 0|1

Gibt an, über welchen Weg die lesenden Datenbankabfragen erfolgen:

0 = Standard- CTRL- Lesefunktionen (dpGet...()) über den WinCC OA Event-Manager und den WinCC OA Data-Manager.

1 = Die Standard CTRL-Lesefunktionen (dpGet...()) werden umgeleitet auf die direkten RDB-Lesefunktionen in der Control-Erweiterung "CtrlRDBArchive.dll".

Beachten Sie, dass auch die beiden notwendigen CTRL DLLs geladen werden müssen, um die direkten RDB-Lesefunktionen zu verwenden:

CtrlDLL="CtrlRDBArchive"

CtrlDLL="CtrlRDBCompr"

Anmerkung:

Um queryRDBdirect innerhalb eines verteilten Systems verwenden zu können, müssen die DB Schemata inklusive der Datenbanklinks konfiguriert werden (siehe Datenbank Schema konfigurieren).

Einträge der config-Datei im Abschnitt [data]

Eintrag Typ Default Bereich Beschreibung
statFctInitInterval uint 7200 0 - 7200

Definiert (wenn RDB verwendet wird) wie lange nachdem ein Archiv abgeschlossen wurde, zurückliegende Wertänderungen von statischen Datenpunktelementen (erkennbar an: Zeitstempel msec = 0) noch an das Archiv gesendet werden, wenn das Archiv erneut gestartet wurde.

Wenn z.B. ein Archiv um 14:30, sendet normalerweise der Data-Manager alle Letztwerte

mit einem Zeitstempel nach 14:30 an ein neu startendes Archiv. Für statistische Datenpunkte

werden aber alle Letztwerte mit Zeitstempel nach 12:30 (7200) gesendet und dadurch

an das alte Archiv gesendet (da statistische Funktionen zeitversetzt berechnet werden

und ansonsten der zuletzt errechnete Wert verloren gehen könnte).

Maximalwert: Es werden höchstens 2 Stunden zurückliegende Werte an das abgeschlossene

Archiv gesendet.

Mögliche Fehlermeldungen bei der RDB-Archivierung

WCCOArdb (97), 2005.02.16 01:06:24.322, PARAM,SEVERE, 0 , Could not find a valid Archive Set in DB for MCC:10_DS007_TT_6101.In.disvalue.value (Type: 207 Sys: 1 Dp: 65296 El: 6 Conf: 0 Det: 0 Attr: 0x0) 

In diesem Fall findet der RDB-Manager keine gültige Archivgruppe in die er schreiben kann.

WCCOArdb (97), 2005.02.16 01:43:05.911, SYS, INFO, 0, , No group found for , MCC:23_DS001_PT_6101.In.disvalue.value WCCOArdb (97), 2005.02.16 01:43:05.912, SYS, SEVERE, 0, , MCC:23_DS001_PT_6101.In.disvalue.value :Could not insert this one! I will try it again.

Diese dürfte ein Folgefehler der vorigen Meldung sein. Die Archivgruppe ist nicht bekannt, ein Einfügen der Werte ist nicht möglich.

WCCOArdb (97), 2005.02.26 08:29:48.262, SYS, INFO, 0, , Couldn´t find a valid Archive Set in the DB for , > MCC:10_LVS121_COP01S01.In.state:_original.._value, createEventStatement

In diesem Fall findet der RDB-Manager keine gültige Archivgruppe aus der er lesen kann.

WCCOArdb (97), 2005.02.23 16:28:28.957, SYS, INFO, > 0, , DpName: MCC:10_PS004_PT_1201.In.disvalue.value, ElementID: 772305585921.000000, Time stamp: 2005.02.23 16:21:36.955, DB Error: ORA-02291:  ¥·´ÍêÕûÔ¼ÊøÌõ¼þ (WESTEAST.FK_TRENDLASTVAL_ELEMEN) - δÕÒµ½¸¸Ïî¹Ø¼ü×Ö, Check the values in the table Elements. Maybe the Datamanager did not send the DP Info to me.

Diese Meldung beschreibt, dass ein Eintrag in der Element-Tabelle fehlt. Dies könnte die Ursache für die obigen Fehler sein.

writeBlockfailed - Fehler -300 -400 etc. (z.B. Bulk data NOT written into database!, ErrorCode: -300)

Fehler -300 -400 usw. Im Fehlerfall (nicht unique-constraint-Verletzungen) wird der ReturnCode um 100 multipliziert. Wenn z.B. 3 Zeilen nicht importiert werden konnten, ist der Rückgabewert -300, bei 21 ist er -2100 usw. Die Fehlerquelle ist immer dieselbe, die Anzahl der NOK-Zeilen ändert sich jedoch mit jedem Bulk-Insert.

Debug und Report Flags

Debug Flag Beschreibung
RDB_CONN Gibt Informationen über sich öffnende und schließende Verbindungen zur Datenbank aus.
RDB_INPUT Debugausgaben erfolgen bei jedem empfangenen Wert.
Report Flag Beschreibung
CONNLIST Gibt Informationen darüber aus, ob eine Verbindung offen oder geschlossen ist.