Ошибка пространства кучи и повреждение базы данных H2 - PullRequest
2 голосов
/ 19 сентября 2011

Для нашего многопоточного приложения, которое использует базу данных H2, мы увидели следующую ошибку в наших журналах сразу после ошибки кучи:

java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError:Пространство кучи Java ........ org.h2.jdbc.JdbcSQLException: файл поврежден при чтении записи: «[17806] ключ данных потока: 1922 позиции: 11 осталось: 0».Возможное решение: использовать инструмент восстановления;Оператор SQL: обновить ключи, заданные принято = ложно, где принято = истина [90030-155] в org.h2.message.DbException.getJdbcSQLException (DbException.java: 327) в org.h2.message.DbException.get (DbException.java:167) в org.h2.message.DbException.get (DbException.java:144) в org.h2.index.PageDataIndex.getPage (PageDataIndex.java:230) в org.h2.index.PageDataNode.getNextPage (PageDataNode.j: 226) в org.h2.index.PageDataLeaf.getNextPage (PageDataLeaf.java:391) в org.h2.index.PageDataCursor.nextRow (PageDataCursor.java:90) в org.h2.index.PageDataCursataCore (.java: 49) в org.h2.index.IndexCursor.next (IndexCursor.java:235) в org.h2.table.TableFilter.next (TableFilter.java:352) в org.h2.command.dml.Update.update(Update.java:89) в org.h2.command.CommandContainer.update (CommandContainer.java:71) в org.h2.command.Command.executeUpdate (Command.java:212) в org.h2.jdbc.JdbcStatement.executeUpdateInternal (JdbcStatement.java: 125) в org.h2.jdbc.JdbcStatement.executeUpdate (JdbcStatement.java:110)... 6 more

Это известная проблема с H2?

Кроме того, когда я пытался восстановить данные с помощью инструмента восстановления из поврежденной базы данных, я смог восстановить только10% от этого.Первоначальный размер БД составлял 1,6 ГБ, а размер восстановленной базы данных - всего 81 МБ.Я экспортировал все данные из поврежденной базы данных в файл .sql, используя инструмент восстановления, а затем заново создал базу данных, запустив этот сценарий для базы данных H2.Есть что-то еще, что мне не хватает?

1 Ответ

0 голосов
/ 02 июля 2013

Это означает, что ваша база данных была повреждена. Относительно того, почему он был поврежден, сказать сложнее.

Инструмент восстановления будет делать все возможное, но когда БД сильно повреждена, он не всегда может многое сделать.

Документация для инструмента восстановления находится здесь: http://h2database.com/html/advanced.html#using_recover_tool

...