Home Forum Nuclos Bedienung Administration und Installation Not in GZIP format nach DB Restore

Ansicht von 11 Beiträgen - 1 bis 11 (von insgesamt 11)
  • Autor
    Beiträge
  • #3198
    Jan Giebels
    Teilnehmer

    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.(DataBaseHelper.java:120)
    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.(ServerParameterProvider.java:73)
    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.
    (GZIPInputStream.java:58)
    at java.util.zip.GZIPInputStream.
    (GZIPInputStream.java:68)
    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

    #3200
    Alpha Alpha
    Teilnehmer

    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

    #3202
    Jan Giebels
    Teilnehmer

    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

    #3203
    Jan Giebels
    Teilnehmer

    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

    #3205
    Matthias Haake
    Teilnehmer

    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]

    Attachments:
    #3206
    Jan Giebels
    Teilnehmer

    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.

    #3207
    Alpha Alpha
    Teilnehmer

    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

    #3208
    Matthias Haake
    Teilnehmer

    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

    #3211
    Alpha Alpha
    Teilnehmer

    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]

    Attachments:
    #3212
    Jan Giebels
    Teilnehmer

    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.

    #3221
    Jan Giebels
    Teilnehmer

    moved to new topic: „can’t read StateModelLayout“

Ansicht von 11 Beiträgen - 1 bis 11 (von insgesamt 11)