domenica 26 novembre 2017

WebSphere Portal: come far ripartire un Portale con WPSDB su derby in failed con stato SQL XJ040

A seguito di un failure del sistema operativo è capitato ad un mio cliente che un WebSphere Portal di sviluppo, con WPSDB sul derby locale  non riuscisse piu ad essere avviato.


Nel SystemOut.log si riscontrava il seguente stato:

Failed to start database 'C:/IBM/WebSphere/wp_profile/PortalServer/derby/wpsdb' with class loader [email protected], see the next exception for details.DSRA0010E: Stato SQL = XJ040, Codice errore = 40.000
Failed to start database 'C:/IBM/WebSphere/wp_profile/PortalServer/derby/wpsdb' with class loader [email protected], see the next exception for details.
Recovery failed unexpected problem log record is Not first but transaction is not in transaction table : 40980828.
ERROR XSLAO: Recovery failed unexpected problem log record is Not first but transaction is not in transaction table : 40980828.


Per verificare lo stato del db è possibile collegarsi con le utility derby e verificare lo stato delle tabelle, abbiamo quindi copiato la cartella WPSDB in c:\temp  e da un prompt dei comandi abbiamo eseguito

da  WASHOME\derby\lib

java -cp "derby.jar;derbytools.jar" org.apache.derby.tools.ij


in risposta si avrà un prompt

ij>

in cui è possibile provare a collegarsi al db tramite il comando

ij> connect 'jdbc:derby:C:/temp/wpsdb';

una volta collegati è possibile verificare l'integrità delle tabelle con il comando

SELECT schemaname || '.' || tablename as TableName,SYSCS_UTIL.SYSCS_CHECK_TABLE(schemaname, tablename) AS OK FROM sys.sysschemas s, sys.systables t WHERE s.schemaid = t.schemaid   and t.tabletype = 'T'   ;

 una volta verificata l'integrità delle tabelle , abbiamo pensato che il problema potessero essere i tranlog quindi  abbiamo creato un nuovo db vuoto con il comando

ij> connect 'jdbc:derby:MyDbTest;create=true';
Abbiamo quindi copiato la log/  dal nuovo db sostituendo al log/ del wpsdb ,ripristinata la cartella WPSDB al suo posto originario ed il Portale è partito regolarmente.

L'ispirazione per la risoluzione di questo problema è stata trovata in questo blogpost di Andrea Grassi che ringrazio !

Nessun commento:

Posta un commento