leider plagen mich seit mehreren Wochen immer wiederkehrende Abstürze der Datenbank des Historian.
Genutzt wird aktuell die Version 2.0.0 beta 4 wohingegen sich das gleiche Fehlerbild unter der Version 1.2.0 gezeigt hat.
Als Zentrale wird RaspberryMatic Version 3.37.8.20181026 (aber auch hier gleiches Fehlerbild unter den Vorgängerversionen des RM) verwendet. Historian läuft auf einem weiteren Raspberry OS wheezy 7 mit aktuellen Updates. Hardware schließe ich aus, da ich SD-Karte wie auch Raspberry getauscht habe.
Wie zeigt sich der Fehler: Nach einer unbestimmten Laufzeit (wenige Stunden bis max 3 Tage) ist die Datenbank nicht mehr erreichbar da sie geschlossen sei. Nach einem Neustart des Historian läuft alles wieder normal bis zum nächsten Crash.
Hier ein Auszug aus dem Fehler log welchen mit FINE angelegt wurde:
Code: Alles auswählen
2018-11-04 14:40:48|FINE |Call of method 'event' received with parameters [BidCos-RF, IEQ0168XXX:1, WORKING, false]
2018-11-04 14:40:48|FINE |Sending method result:
2018-11-04 14:40:48|FINE |Call of method 'event' received with parameters [BidCos-RF, JEQ0225XXX:1, TEMPERATURE, 20.19999998807907]
2018-11-04 14:40:48|FINE |Preprocessor: Value change is below delta, event discarded (event: BidCos-RF.JEQ0225XXX:1.TEMPERATURE, Sun Nov 04 14:40:48 CET 2018, 20.19999998807907, 2)
2018-11-04 14:40:48|FINE |Sending method result:
2018-11-04 14:40:48|FINE |Call of method 'event' received with parameters [BidCos-RF, JEQ0225XXX:1, HUMIDITY, 60]
2018-11-04 14:40:48|FINE |Preprocessor: Value change is below delta, event discarded (event: BidCos-RF.JEQ0225XXX:1.HUMIDITY, Sun Nov 04 14:40:48 CET 2018, 60, 2)
2018-11-04 14:40:48|FINE |Sending method result:
2018-11-04 14:40:48|FINE |Sending method result: [, , ]
2018-11-04 14:40:54|FINE |Call of method 'system.multicall' received with parameters [[[methodName:event, params:[BidCos-RF, HEQ0130661:2, ADJUSTING_COMMAND, 0]]]]
2018-11-04 14:40:54|FINE |Call of method 'event' received with parameters [BidCos-RF, HEQ0130XXX:2, ADJUSTING_COMMAND, 0]
2018-11-04 14:40:54|FINE |Sending method result:
2018-11-04 14:40:54|FINE |Sending method result: []
2018-11-04 14:40:54|WARNING|Failed to execute: SELECT * FROM DATA_POINTS WHERE
INTERFACE=? AND ADDRESS=? AND IDENTIFIER=? because: Die Datenbank ist bereits geschlossen
The database has been closed [90098-197]
2018-11-04 14:40:54|FINE |Call of method 'system.multicall' received with parameters [[[methodName:event, params:[BidCos-RF, HEQ0130661:2, ADJUSTING_DATA, 0]]]]
2018-11-04 14:40:54|FINE |Call of method 'event' received with parameters [BidCos-RF, HEQ0130XXX:2, ADJUSTING_DATA, 0]
2018-11-04 14:40:54|FINE |Sending method result:
2018-11-04 14:40:54|FINE |Sending method result: []
2018-11-04 14:40:54|WARNING|Failed to execute: SELECT * FROM DATA_POINTS WHERE
INTERFACE=? AND ADDRESS=? AND IDENTIFIER=? because: Die Datenbank ist bereits geschlossen
The database has been closed [90098-197]
2018-11-04 14:40:54|SEVERE |Error updating data point storage
2018-11-04 14:40:54|SEVERE |Exception: Die Datenbank ist bereits geschlossen
The database has been closed [90098-197]
2018-11-04 14:40:54|SEVERE |Detail: org.h2.jdbc.JdbcSQLException: Die Datenbank ist bereits geschlossen
The database has been closed [90098-197]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:357)
at org.h2.message.DbException.get(DbException.java:179)
at org.h2.message.DbException.get(DbException.java:155)
at org.h2.message.DbException.get(DbException.java:144)
at org.h2.engine.Database.checkPowerOff(Database.java:536)
at org.h2.command.Command.executeQuery(Command.java:228)
at org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:114)
at mdz.ccuhistorian.Database.getDataPoint(Database.groovy:256)
at mdz.ccuhistorian.ExtendedStorage.getDataPoint(ExtendedStorage.groovy:65)
at mdz.ccuhistorian.eventprocessing.DataPointStorageUpdater.consume(DataPointStorageUpdater.groovy:43)
at mdz.ccuhistorian.eventprocessing.DataPointStorageUpdater.consume(DataPointStorageUpdater.groovy)
at mdz.eventprocessing.BasicProducer.lambda$0(BasicProducer.java:36)
at mdz.eventprocessing.BasicProducer$$Lambda$2/16387954.run(Unknown Source)
at mdz.Exceptions.catchToLog(Exceptions.java:74)
at mdz.eventprocessing.BasicProducer.safeProduce(BasicProducer.java:36)
at mdz.eventprocessing.BasicProducer.produce(BasicProducer.java:42)
at mdz.eventprocessing.Buffer.purge(Buffer.java:74)
at mdz.eventprocessing.Buffer.consume(Buffer.java:65)
at mdz.eventprocessing.BasicProducer.lambda$0(BasicProducer.java:36)
at mdz.eventprocessing.BasicProducer$$Lambda$2/16387954.run(Unknown Source)
at mdz.Exceptions.catchToLog(Exceptions.java:74)
at mdz.eventprocessing.BasicProducer.safeProduce(BasicProducer.java:36)
at mdz.eventprocessing.BasicProducer.produce(BasicProducer.java:42)
at mdz.hc.itf.Manager.sendEvents(Manager.groovy:139)
Code: Alles auswählen
// CCU-Historian Konfiguration
//
// Hinweise:
// Kommentarzeilen starten mit zwei Schr‰gstrichen (//). Alle Zeichen nach den Schr‰gstrichen
// werden ignoriert. Zeichenketten als Optionswert m¸ssen von einfachen Anf¸hrungszeichen (')
// umschlossen sein. Weitere Informationen sind auch im Abschnitt 3 im Handbuch zu finden.
//
// Liste der zur Verf¸gung stehen Konfigurationsoptionen mit ihren jeweiligen Standardwerten:
//
logSystem.consoleLevel=Level.INFO
logSystem.fileLevel=Level.FINE
//logSystem.fileLevel=Level.WARNING
logSystem.fileName='/opt/ccu-historian/ccu-historian-%g.log'
logSystem.fileLimit=10000000
logSystem.fileCount=10
logSystem.binRpcLevel=Level.FINE
database.dir='/opt/ccu-historian/data'
database.name='history'
database.user='sa'
database.password='ccu-historian'
database.webEnable=true
database.webPort=8082
database.webAllowOthers=true
database.tcpEnable=true
database.tcpPort=9092
database.tcpAllowOthers=true
database.pgEnable=true
database.pgPort=5435
database.pgAllowOthers=true
webServer.port=8080
webServer.dir='/opt/ccu-historian/webapp'
webServer.logLevel=Level.WARNING
webServer.historianAddress='192.168.181.252'
historian.metaCycle=3600000 // 1 Stunde
devices.historianAddress='192.168.181.252'
// Typ der Zentrale: CCU1 oder CCU2
devices.device1.type=CCU2
// IP-Adresse der Zentrale
devices.device1.address='192.168.181.240'
// Falls CUxD verwendet wird, die Kommentarzeichen (//) vor folgender Zeile entfernen:
devices.device1.plugin1.type=CUXD
// Watchdoc
//devices.device1.watchdogProgram='WatchHistorian'
devices.device1.watchdogProgram='HistorianWatchdoc'
devices.device1.watchdogCycle=300000
// Zum Freischalten der Web-Links zu den Beispiel-Web-Seiten, die Kommentarzeichen (//) vor folgenden
// zwei Zeilen entfernen:
webServer.menuLinks.link1.text='Beispiel 1 - Vorjahresvergleich'
webServer.menuLinks.link1.address='/custom/example1.html'
// Desigen PNG
webServer.trendDesigns.png=new TrendDesign( chart: {
// Farbe der DiagrammflaÃàche
backgroundPaint=ChartColor.GRAY
// Diagramm ohne Legende
removeLegend()
}, plot: {
// Farbe der KurvenflaÃàche
backgroundPaint=ChartColor.BLACK
}
)
Die Datenbank zu verlieren wäre nur meine letzte Option, da ich gerne auf die Daten der letzten Jahre zurückgreifen möchte. Zur Ergänzung, die DB haut eine Größe von ca 1,3GB.
Für Tipps oder besser einen Lösungsansatz wäre ich sehr dankbar!
Vielen Dank und schönen Sonntag
Saho