Dear All, when transferring large data from Oracle queries into a H2 database using very simple Batch Insert Statements, we eventually face reproducible exceptions after 20 mins of transfer:
Caused by: java.lang.IllegalStateException: *Chunk metadata too long* [1.4.199/3] at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:894) at org.h2.mvstore.Chunk.writeChunkHeader(Chunk.java:165) at org.h2.mvstore.MVStore.storeNow(MVStore.java:1370) at org.h2.mvstore.MVStore.store(MVStore.java:1233) at org.h2.mvstore.MVStore.commit(MVStore.java:1209) at org.h2.mvstore.MVStore.beforeWrite(MVStore.java:2480) at org.h2.mvstore.MVMap.beforeWrite(MVMap.java:897) at org.h2.mvstore.MVMap.operate(MVMap.java:1644) In the result, the top exception reads like: org.h2.jdbc.JdbcBatchUpdateException: File corrupted while reading record: "nio:/home/manticore/.manticore/ifrsbox_bak.mv.db". Possible solution: use the recovery tool; SQL statement: *insert /*+PARALLEL APPEND_VALUES*/ into CFE.INSTRUMENT (ID_INSTRUMENT ,ID_INSTRUMENT_COMMITMENT ,ID_INSTRUMENT_TYPE ,START_DATE ,END_DATE ,ID_CURRENCY ,ID_CALENDAR ,ID_BUSINESS_DAY_CONVENTION ,DISCOUNT_CURVE ,DISCOUNT_SPREAD) VALUES (? ,? ,? ,? ,? ,? ,? ,? ,? ,?)* [90030-199] at org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java:1298) at com.manticore.etl.ETLImportThread.writeDirect(ETLImportThread.java:423) at com.manticore.etl.ETLImportThread.run(ETLImportThread.java:183) org.h2.jdbc.JdbcSQLNonTransientConnectionException: File corrupted while reading record: "nio:/home/manticore/.manticore/ifrsbox_bak.mv.db". Possible solution: use the recovery tool; SQL statement: insert /*+PARALLEL APPEND_VALUES*/ into CFE.INSTRUMENT (ID_INSTRUMENT ,ID_INSTRUMENT_COMMITMENT ,ID_INSTRUMENT_TYPE ,START_DATE ,END_DATE ,ID_CURRENCY ,ID_CALENDAR ,ID_BUSINESS_DAY_CONVENTION ,DISCOUNT_CURVE ,DISCOUNT_SPREAD) VALUES (? ,? ,? ,? ,? ,? ,? ,? ,? ,?) [90030-199] at org.h2.message.DbException.getJdbcSQLException(DbException.java:617) at org.h2.message.DbException.getJdbcSQLException(DbException.java:427) at org.h2.message.DbException.get(DbException.java:194) at org.h2.mvstore.db.MVTableEngine$Store.convertIllegalStateException(MVTableEngine.java:205) at org.h2.mvstore.db.MVTable.convertException(MVTable.java:725) at org.h2.mvstore.db.MVSecondaryIndex.add(MVSecondaryIndex.java:202) at org.h2.mvstore.db.MVTable.addRow(MVTable.java:546) at org.h2.command.dml.Insert.insertRows(Insert.java:179) at org.h2.command.dml.Insert.update(Insert.java:131) at org.h2.command.CommandContainer.update(CommandContainer.java:133) at org.h2.command.Command.executeUpdate(Command.java:267) at org.h2.server.TcpServerThread.process(TcpServerThread.java:398) at org.h2.server.TcpServerThread.run(TcpServerThread.java:175) at java.lang.Thread.run(Thread.java:745) Before this happens, around 10 similar queries have been transferred successfully already. We use a recent Version 1.4.199 from GIT. It will be difficult to share the DB file because it is a bit large: [manticore@ifrsbox-app ~]$ ls -lh .manticore/ifrsbox_bak.* -rw-rw-r-- 1 manticore manticore *51G* Aug 29 03:43 .manticore/ifrsbox_bak.mv.db -rw-rw-r-- 1 manticore manticore 136K Aug 29 03:21 .manticore/ifrsbox_bak.trace.db -rw-rw-r-- 1 manticore manticore 47K Aug 28 05:26 .manticore/ifrsbox_bak.xml Anything else we could do or try from out end please? Best regards Andreas -- You received this message because you are subscribed to the Google Groups "H2 Database" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/h2-database/6c3028e7-2d4e-4de6-acf9-d59701aeb4ef%40googlegroups.com.
