Durante questi giorni sono impegnato in una migrazione side by side da Connections 6.0 a 7.0.
La migrazione dei database preferisco farla con il tool dbt.jar che copia le tabelle dei dati da vecchio a nuovo per una serie di ragioni , fra cui :
- tipicamente la faccio nel primo giro di test mentre gli utenti lavorano , senza problemi
- mi aiuta a capire e fixare eventuali problemi sulle tabelle dei dati
In questa situazione ho trovato problemi su Wikis, Files e Metrics.
Wikis e Files
In questo caso i DB di Wikis e Files non venivano migrati in modo corretto , andavano in errore su una tabella con questo errore:
ERROR: Error occurred gathering data from the source database
com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-551, SQLSTATE=42501, SQLERRMC=LCUSER;SELECT;FILES.EVENT_STORE, DRIVER=4.29.24
com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-551, SQLSTATE=42501, SQLERRMC=LCUSER;SELECT;FILES.EVENT_STORE, DRIVER=4.29.24
dopo alcune verifiche mi sono reso conto che le tabelle in questa condizione erano 3 per entrambi i db
EVENT_PROCESSING
EVENT_STORE
FILE_LOCATION
EVENT_STORE
FILE_LOCATION
L'errore SQL è di mancato accesso ed in effetti LCUSER non poteva leggere le 3 tabelle , nè sul produzione attuale sorgente nè sul destinazione.
Dopo una verifica sugli script ho verificato che queste tabelle venivano aggiunte nel CR5 di Connections 6.0 e quindi non erano presenti negli appGrants.sql inclusi di default ( ed i dev si sono dimenticati di mettere le grant negli script di creazione ... ) .
Ho proceduto quindi ad inserirle a mano , sia su sorgente che su destinazione ( essendo poi presenti negli appGrants.sql della versione 7.0 )
CONNECT TO FILES@
GRANT DELETE,INSERT,SELECT,UPDATE ON "FILES"."EVENT_STORE" TO USER LCUSER@
GRANT DELETE,INSERT,SELECT,UPDATE ON "FILES"."EVENT_PROCESSING" TO USER LCUSER@
GRANT DELETE,INSERT,SELECT,UPDATE ON "FILES"."FILE_LOCATION" TO USER LCUSER@
COMMIT WORK@
CONNECT RESET@
CONNECT TO WIKIS@
GRANT DELETE,INSERT,SELECT,UPDATE ON "WIKIS"."EVENT_STORE" TO USER LCUSER@
GRANT DELETE,INSERT,SELECT,UPDATE ON "WIKIS"."EVENT_PROCESSING" TO USER LCUSER@
GRANT DELETE,INSERT,SELECT,UPDATE ON "WIKIS"."FILE_LOCATION" TO USER LCUSER@
COMMIT WORK@
CONNECT RESET@
Metrics
Il problema di metrics era differente, con questo errore:
com.ibm.db2.jcc.am.SqlTransactionRollbackException: Error for batch element #1: DB2 SQL Error: SQLCODE=-1476, SQLSTATE=40506, SQLERRMC=-964, DRIVER=4.29.24
ERRORCODE=-4225, SQLSTATE=null
mber of the batch..755 CEST] error.executing.transfer
Use getNextException() to retrieve the exceptions for specific batched elements. ERRORCODE=-4229, SQLSTATE=null
com.ibm.db2.jcc.am.BatchUpdateException: [jcc][t4][102][10040][4.29.24] Batch failure. The batch was submitted, but at least one exception occurred on an individual member of the batch.
Use getNextException() to retrieve the exceptions for specific batched elements. ERRORCODE=-4229, SQLSTATE=null
ERRORCODE=-4229 è un errore generico che necessita di debug, da un po' di indagini nel db2diag.log dell'instanza di destinazione , ho verificato questi errori durante la migrazione dei dati del db:
FUNCTION: DB2 UDB, data protection services, sqlpgResSpace, probe:1660
MESSAGE : ADM1822W The active transaction log is being held by dirty pages.
Database performance may be impacted.
MESSAGE : ZRC=0x870F0035=-2029060043=SQLO_NOTAVAIL
"Cannot honor the conditional request"
DIA8531C A memory access error has occurred.
MESSAGE : ZRC=0x85100009=-2062548983=SQLP_NOSPACE
"Log File has reached its saturation point"
DIA8309C Log file was full.
questi errori relativi ai log del db che si riempivano mi hanno fatto pensare, dopo aver ricreato il db di destinazione alla seguente soluzione:
db2 update db cfg for METRICS using logfilsiz 16000 logprimary 26 logsecond 6
con questo settaggio , la copia dati è terminata in modo corretto.
Nessun commento:
Posta un commento