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 |
|
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.
|
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.:
|
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:
|
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 |
|
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 |
|
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:
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. |