Willkommen, Gast
Home › Foren › Nuclos Bedienung › Administration und Installation › Not in GZIP format nach DB Restore
Hallo,
bei einem System musste ich jetzt ein Datenbankbackup einspielen. Dieses DB Backup war von Version 2.7.3 und die installierte Applikationsversion 2.7.3-R0014.
Beim Start des Servers erscheint folgender Fehler:
2011-02-16 22:16:42,069 INFO [org.nuclos.server.dblayer.impl.postgresql.PostgreSQLDBAccess] - Schema name resolved to 'nuclos'
2011-02-16 22:16:42,069 INFO [org.nuclos.server.dblayer.impl.postgresql.PostgreSQLDBAccess] - Auto savepoint activated
2011-02-16 22:16:42,102 INFO [org.nuclos.server.database.DataBaseHelper] - Nuclos auto-setup is enabled
2011-02-16 22:16:42,118 INFO [org.nuclos.server.database.DataBaseHelper] - Nuclos version found in schema nuclos: 2.7.3 (2011-01-21)
2011-02-16 22:16:42,128 INFO [org.nuclos.server.database.DataBaseHelper] - Existing Nuclos installation found in schema nuclos
2011-02-16 22:16:43,186 FATAL [org.nuclos.server.database.DataBaseHelper] - Error initializing Nuclos datasource/database access
java.lang.RuntimeException: java.io.IOException: Not in GZIP format
at org.nuclos.server.autosync.AutoDbSetup.uncompressSchema(AutoDbSetup.java:297)
at org.nuclos.server.autosync.AutoDbSetup.getInstalledSchemaFor(AutoDbSetup.java:177)
at org.nuclos.server.autosync.AutoDbSetup.getUpdateStatementsSince(AutoDbSetup.java:247)
at org.nuclos.server.database.DataBaseHelper.
at org.nuclos.server.common.ServerParameterProvider.getParametersFromDB(ServerParameterProvider.java:123)
at org.nuclos.server.common.ServerParameterProvider.loadParameters(ServerParameterProvider.java:98)
at org.nuclos.server.common.ServerParameterProvider.
at org.nuclos.server.common.ServerParameterProvider.getInstance(ServerParameterProvider.java:65)
at org.nuclos.server.masterdata.ejb3.MasterDataFacadeBean.postConstruct(MasterDataFacadeBean.java:148)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:340)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:293)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:130)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:394)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1413)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4135)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:637)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:563)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:498)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
at org.apache.catalina.core.StandardService.start(StandardService.java:519)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.io.IOException: Not in GZIP format
at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:137)
at java.util.zip.GZIPInputStream.
at java.util.zip.GZIPInputStream.
at org.nuclos.server.autosync.AutoDbSetup.uncompressSchema(AutoDbSetup.java:293)
... 53 more
Ich habe gesehen, das dies mit der AutoDbSetup.java in Methode uncompressSchema zu tun hat, die fehlschlägt.
Wie ist das zu fixen?
Was ist u.U. mit dem Restore fehlgeschlagen? Einen DB Fehler gab es beim Restore nicht.
Das Datenbankbackup musste eingespielt werden, da es zu einem schweren Applikationsfehler kam, der versucht wurde, in der DB händisch zu korrigieren (https://www.nuclos.de/index.php/de/nuclos-forum/vorgaenge-und-objekte/2429-schwerer-fehler-in-entitaetenwizard#2429).
Danke und Gruß
Jan
Hallo,
für das AutoDbSetup wird auf gespeicherte Strukturinformationen über das Nuclos-System zurückgegriffen. Daraus ermittelt der AutoDbSetup dann, welche Änderungen für das Update durchzuführen sind.
Die Daten werden als gzip-komprimiertes XML in der Spalte BLBDATA (vom Typ BYTEA) der System-Tabelle T_AD_RELEASE gespeichert. Bitte prüfen Sie diese Tabelle bzw. Spalte nach dem Zurückspielen des Dumps. Relevant ist der Datensatz über die letzte Version (hier also 2.7.3).
Der Exception nach sind diese Daten korrupt. Am besten wäre es daher, den Inhalt dieser Spalte in eine Datei zu speichern und zu untersuchen bzw. probehalber mit einem Pack-Programm zu öffnen.
Laut Exception ist bereits der Header nicht korrekt. Dies sind die ersten beiden Bytes und sollten sich direkt mit dem folgenden SQL überprüfen lassen:
select strrelease, encode(substring(blbdata for 2), 'hex') from t_ad_release order by datchanged desc
Der korrekte GZip-Header wäre ‚1f8b‘.
Viele Grüße,
alpha
Ergebnis:
postgres=# select strrelease, encode(substring(blbdata for 2), 'hex') from nuclos.t_ad_release order by datchanged desc;
strrelease | encode
------------+--------
2.7.3 | 1fc3
2.7.1 | 1fc3
2.6.2 | 1fc3
2.6.1 | 1fc3
(4 rows)
Inhalt des Dumps:
INSERT INTO "nuclos"."t_ad_release" VALUES ('40051513','','NUCLOS','2011-01-21','2011-01-21','Nuclos 2.7.3','2.7.3','2011-01-21 10:56:06.247','AUTOSETUP','2011-01-21 10:56:06.247','AUTOSETUP','1');
Ich versuche es selbst zu fixen, jedoch würde Hilfe hier sicherlich schneller zum Ziel führen.
Danke und Gruß
Jan
Hallo,
scheinbar hat es bei unseren Backups regelmäßig unbemerkt das bytea-feld zerschossen, sodass wir dies nicht mehr rekonstruieren können.
Können Sie uns den Inhalt des Feldes zur Verfügung stellen, damit wir die DB reparieren können ?
Danke und Gruß
Jan
Hallo Jan,
ich habe mal schnell ein Insert-Script aus unserer T_AD_RELEASE-Tabelle generieren lassen.
Auf Grund der Größenbeschränkung für Dateianhänge im Forum, habe ich mal nur den Datensatz für Version 2.7.3 angehängt.
Die INTIDs sind logischerweise andere – daher würde ich das INSERT-Statement so nicht ausführen, aber der Wert des BLOB-Feldes ist ja das entscheidende, wenn ich das richtig verstanden habe und den sollte man ja so kopieren können.
Viel Erfolg und Grüße,
Matthias [file name=T_AD_RELEASE.txt size=25746]https://www.nuclos.de/media/kunena/attachments/legacy/files/T_AD_RELEASE.txt[/file]
Vielen Dank Matthias .. damit sind wir schon mal einen Schritt weitergekommen.
jetzt gibt es folgenden Fehler:
2011-02-17 14:29:55,791 INFO [org.nuclos.server.database.DataBaseHelper] - Auto-Update: 99 statement(s) to execute...
2011-02-17 14:29:55,793 INFO [org.nuclos.server.database.DataBaseHelper] - Auto-Update #1: Drop procedure GETNEXTSEQUENTIALNUMBER...
2011-02-17 14:29:55,802 ERROR [org.nuclos.server.dblayer.impl.postgresql.PostgreSQLDBAccess] - Exception during structure change logging: org.nuclos.server.dblayer.DbException: Cannot interpret header for callable GETNEXTSEQUENTIALNUMBER
2011-02-17 14:29:55,803 FATAL [org.nuclos.server.database.DataBaseHelper] - Error during Auto-Update #1: Drop procedure GETNEXTSEQUENTIALNUMBER: org.nuclos.server.dblayer.DbException: Cannot interpret header for callable GETNEXTSEQUENTIALNUMBER
org.nuclos.server.dblayer.DbException: Cannot interpret header for callable GETNEXTSEQUENTIALNUMBER
Die Funktionen sind in der DB aber vorhanden und gehören auch, wie alle anderen Objekte, dem User nuclos.
Hallo,
Die im Fehler genannte Prozedur „GETNEXTSEQUENTIALNUMBER“ ist Teil der Sequenzsimulierung für Transact SQL-Datenbanken. Kann es sein, dass die gepostete T_AD_RELEASE keine PostgreSQL-Datenbank ist?
Die Strukturinformationen in der T_AD_RELEASE sind teilweise Datenbanktyp-abhängig, da sie auch die Details über Sequenzen, Stored Procecdures etc. enthalten.
Als „Quelle“ eignet sich daher nur eine andere PostgreSQL-Datenbank. Wir versuchen gerade, einen geeigneten Eintrag bereitzustellen.
Viele Grüße,
alpha
Hallo,
das ist korrekt – wir setzen den SQL Server ein. Das war mir nicht bewusste, dass der BLOB-Inhalt db-abhängig ist. Dann müsste jemand mit kompatibler DB bitte den entsprechenden Feldinhalt noch einmal an Jan posten.
Lieben Gruß,
Matthias
Hallo,
anbei eine Datei mit einem Base64-kodierten Eintrag eingepackt in ein SELECT DECODE(…, ‚base64‘)-Statement.
Das Statement müsste noch zu einem entsprechenden INSERT umgebaut werden.
Viele Grüße,
alpha [file name=blbdata_pgsql2.txt size=16471]https://www.nuclos.de/media/kunena/attachments/legacy/files/blbdata_pgsql2.txt[/file]
Ja Wahnsinn ! Es Läuft wieder.
Habe zwar alle bestehenden Jobs truncaten müssen, kann diese jedoch schnell neu aufsetzen.
Mal ein Lob an alle Helfer! Es scheint mir, wir haben mit Nuclos auf das richtige Pferd gesetzt. Weiter so !
Danke und Gruß
Jan
ps: wir werden unser Backuptool mal in die Tiefe testen müssen, damit solche Probleme in Zukunft nicht mehr auftreten.
moved to new topic: „can’t read StateModelLayout“
Du musst angemeldet sein, um auf dieses Thema antworten zu können.