The database has been closed [90098-162]

2,675 views
Skip to first unread message

Vinaya

unread,
Dec 21, 2011, 1:21:36 PM12/21/11
to H2 Database
Hello All
org.h2.jdbc.JdbcSQLException: The database has been closed [90098-162]
at
org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
at org.h2.message.DbException.get(DbException.java:169)
at org.h2.message.DbException.get(DbException.java:146)
at org.h2.message.DbException.get(DbException.java:135)
at org.h2.engine.Database.checkPowerOff(Database.java:433)
at org.h2.command.Command.executeUpdate(Command.java:237)
at
org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:
143)
at
org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java:
1092)

I am getting the above error when trying to insert 1 million rows each
having 34 columns of Strings

Any clue what could be the reason ?

Thanks
Vinaya

Vinaya

unread,
Dec 21, 2011, 1:40:24 PM12/21/11
to H2 Database, vthim...@ariba.com
$ du -h h2*
7.99GB h2Test.h2.db
11.00KB h2Test.trace.db

org.h2.jdbc.JdbcSQLException: The database has been closed [90098-162]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:
329)
at org.h2.message.DbException.get(DbException.java:169)
at org.h2.message.DbException.get(DbException.java:146)
at org.h2.message.DbException.get(DbException.java:135)
at org.h2.engine.Database.checkPowerOff(Database.java:433)
at org.h2.command.Command.executeUpdate(Command.java:237)
at
org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:
143)
at
org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java:
1092)


I am getting the above error when h2 DB size reaches 8 GB. is there a
limit ?

vinaya

Thomas Mueller

unread,
Dec 22, 2011, 2:47:24 AM12/22/11
to h2-da...@googlegroups.com
Hi,

The exception message only says the database was closed. Could you also post the contents of the file h2Test.trace.db? Maybe it contains more info.

H2 supports larger databases (see the FAQ), but possibly the file system you use only supports files up to 8 GB size. In that case, you can use the 'Split File System' - see the docs (Advanced - Split File System).

Regards,
Thomas

Vinaya Kumar Thimmappa

unread,
Dec 22, 2011, 6:28:52 AM12/22/11
to h2-da...@googlegroups.com
Hello Thomas,

Thanks for the information.I was running this on Windows 7. is there limit on file size in on this OS ?

I re-ran the same code with a different JVM flavour(earlier used sun jdk 1.6.0) which is available on ubuntu latest version and it worked fine.


vinaya


--
You received this message because you are subscribed to the Google Groups "H2 Database" group.
To post to this group, send email to h2-da...@googlegroups.com.
To unsubscribe from this group, send email to h2-database...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/h2-database?hl=en.

Vinaya Kumar Thimmappa

unread,
Dec 22, 2011, 6:47:28 AM12/22/11
to h2-da...@googlegroups.com
Hey Thomas,

here are contents of trace file

12-21 23:56:05 jdbc[2]: exception
org.h2.jdbc.JdbcSQLException: Table "STAGEDBAG" not found; SQL statement:
Select * from StagedBag [42102-162]
12-22 00:08:31 jdbc[2]: exception
org.h2.jdbc.JdbcSQLException: Out of memory.; SQL statement:
Insert into StagedBag values(?, ?, ?, ?, ?, ?, ?, ?, ?,

?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [90108-162]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
    at org.h2.message.DbException.get(DbException.java:158)
    at org.h2.message.DbException.convert(DbException.java:275)
    at org.h2.command.Command.executeUpdate(Command.java:230)

    at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:143)
    at org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java:1092)
    at com.ariba.catalog.data.DBUtil.insert(DBUtil.java:67)
    at com.ariba.catalog.data.DBUtil.readDataFromCSV(DBUtil.java:155)
    at H2Test.doWork(H2Test.java:55)
    at H2Test.main(H2Test.java:23)
Caused by: java.lang.OutOfMemoryError: Java heap space
    at org.h2.value.Value.cache(Value.java:346)
    at org.h2.value.ValueString.get(ValueString.java:127)
    at org.h2.store.Data.readValue(Data.java:767)
    at org.h2.index.PageDataLeaf.readRow(PageDataLeaf.java:600)
    at org.h2.index.PageDataLeaf.getRowAt(PageDataLeaf.java:330)
    at org.h2.index.PageDataCursor.nextRow(PageDataCursor.java:97)
    at org.h2.index.PageDataCursor.next(PageDataCursor.java:49)
    at org.h2.index.IndexCursor.next(IndexCursor.java:238)
    at org.h2.table.TableFilter.next(TableFilter.java:353)
    at org.h2.command.dml.Select.queryGroup(Select.java:311)
    at org.h2.command.dml.Select.queryWithoutCache(Select.java:613)
    at org.h2.command.dml.Query.query(Query.java:297)
    at org.h2.command.dml.Query.query(Query.java:267)
    at org.h2.command.dml.Query.query(Query.java:36)
    at org.h2.command.ddl.Analyze.analyzeTable(Analyze.java:101)
    at org.h2.table.RegularTable.analyzeIfRequired(RegularTable.java:404)
    at org.h2.table.RegularTable.addRow(RegularTable.java:153)
    at org.h2.command.dml.Insert.insertRows(Insert.java:124)
    at org.h2.command.dml.Insert.update(Insert.java:84)
    at org.h2.command.CommandContainer.update(CommandContainer.java:73)
    at org.h2.command.Command.executeUpdate(Command.java:226)
    ... 6 more
12-22 00:08:31 jdbc[2]: exception

org.h2.jdbc.JdbcSQLException: The database has been closed [90098-162]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
    at org.h2.message.DbException.get(DbException.java:169)
    at org.h2.message.DbException.get(DbException.java:146)
    at org.h2.message.DbException.get(DbException.java:135)
    at org.h2.engine.Database.checkPowerOff(Database.java:433)
    at org.h2.command.Command.executeUpdate(Command.java:237)
    at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:143)
    at org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java:1092)
    at com.ariba.catalog.data.DBUtil.insert(DBUtil.java:67)
    at com.ariba.catalog.data.DBUtil.readDataFromCSV(DBUtil.java:155)
    at H2Test.doWork(H2Test.java:55)
    at H2Test.main(H2Test.java:23)
12-22 00:08:32 jdbc[2]: exception

org.h2.jdbc.JdbcSQLException: The database has been closed [90098-162]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
    at org.h2.message.DbException.get(DbException.java:169)
    at org.h2.message.DbException.get(DbException.java:146)
    at org.h2.message.DbException.get(DbException.java:135)
    at org.h2.engine.Database.checkPowerOff(Database.java:433)
    at org.h2.command.Command.executeUpdate(Command.java:237)
    at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:143)
    at org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java:1092)
    at com.ariba.catalog.data.DBUtil.insert(DBUtil.java:67)
    at com.ariba.catalog.data.DBUtil.readDataFromCSV(DBUtil.java:155)
    at H2Test.doWork(H2Test.java:55)
    at H2Test.main(H2Test.java:23)
12-22 00:08:32 jdbc[2]: exception

org.h2.jdbc.JdbcSQLException: The database has been closed [90098-162]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
    at org.h2.message.DbException.get(DbException.java:169)
    at org.h2.message.DbException.get(DbException.java:146)
    at org.h2.message.DbException.get(DbException.java:135)
    at org.h2.engine.Database.checkPowerOff(Database.java:433)
    at org.h2.command.Command.executeUpdate(Command.java:237)
    at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:143)
    at org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java:1092)
    at com.ariba.catalog.data.DBUtil.insert(DBUtil.java:67)
    at com.ariba.catalog.data.DBUtil.readDataFromCSV(DBUtil.java:155)
    at H2Test.doWork(H2Test.java:55)
    at H2Test.main(H2Test.java:23)
12-22 00:08:32 jdbc[2]: exception

org.h2.jdbc.JdbcSQLException: The database has been closed [90098-162]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
    at org.h2.message.DbException.get(DbException.java:169)
    at org.h2.message.DbException.get(DbException.java:146)
    at org.h2.message.DbException.get(DbException.java:135)
    at org.h2.engine.Database.checkPowerOff(Database.java:433)
    at org.h2.command.Command.executeUpdate(Command.java:237)
    at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:143)
    at org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java:1092)
    at com.ariba.catalog.data.DBUtil.insert(DBUtil.java:67)
    at com.ariba.catalog.data.DBUtil.readDataFromCSV(DBUtil.java:155)
    at H2Test.doWork(H2Test.java:55)
    at H2Test.main(H2Test.java:23)
12-22 00:08:32 jdbc[2]: exception

org.h2.jdbc.JdbcSQLException: The database has been closed [90098-162]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
    at org.h2.message.DbException.get(DbException.java:169)
    at org.h2.message.DbException.get(DbException.java:146)
    at org.h2.message.DbException.get(DbException.java:135)
    at org.h2.engine.Database.checkPowerOff(Database.java:433)
    at org.h2.command.Command.executeUpdate(Command.java:237)
    at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:143)
    at org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java:1092)
    at com.ariba.catalog.data.DBUtil.insert(DBUtil.java:67)
    at com.ariba.catalog.data.DBUtil.readDataFromCSV(DBUtil.java:155)
    at H2Test.doWork(H2Test.java:55)
    at H2Test.main(H2Test.java:23)
12-22 00:08:32 jdbc[2]: exception

org.h2.jdbc.JdbcSQLException: The database has been closed [90098-162]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
    at org.h2.message.DbException.get(DbException.java:169)
    at org.h2.message.DbException.get(DbException.java:146)
    at org.h2.message.DbException.get(DbException.java:135)
    at org.h2.engine.Database.checkPowerOff(Database.java:433)
    at org.h2.command.Command.executeUpdate(Command.java:237)
    at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:143)
    at org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java:1092)
    at com.ariba.catalog.data.DBUtil.insert(DBUtil.java:67)
    at com.ariba.catalog.data.DBUtil.readDataFromCSV(DBUtil.java:155)
    at H2Test.doWork(H2Test.java:55)
    at H2Test.main(H2Test.java:23)
12-22 00:08:32 jdbc[2]: exception

org.h2.jdbc.JdbcSQLException: The database has been closed [90098-162]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
    at org.h2.message.DbException.get(DbException.java:169)
    at org.h2.message.DbException.get(DbException.java:146)
    at org.h2.message.DbException.get(DbException.java:135)
    at org.h2.engine.Database.checkPowerOff(Database.java:433)
    at org.h2.command.Command.executeUpdate(Command.java:237)
    at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:143)
    at org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java:1092)
    at com.ariba.catalog.data.DBUtil.insert(DBUtil.java:67)
    at com.ariba.catalog.data.DBUtil.readDataFromCSV(DBUtil.java:155)
    at H2Test.doWork(H2Test.java:55)
    at H2Test.main(H2Test.java:23)
12-22 00:08:32 jdbc[2]: exception

org.h2.jdbc.JdbcSQLException: The database has been closed [90098-162]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
    at org.h2.message.DbException.get(DbException.java:169)
    at org.h2.message.DbException.get(DbException.java:146)
    at org.h2.message.DbException.get(DbException.java:135)
    at org.h2.engine.Database.checkPowerOff(Database.java:433)
    at org.h2.command.Command.executeUpdate(Command.java:237)
    at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:143)
    at org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java:1092)
    at com.ariba.catalog.data.DBUtil.insert(DBUtil.java:67)
    at com.ariba.catalog.data.DBUtil.readDataFromCSV(DBUtil.java:155)
    at H2Test.doWork(H2Test.java:55)
    at H2Test.main(H2Test.java:23)
12-22 00:08:32 jdbc[2]: exception
org.h2.jdbc.JdbcBatchUpdateException: The database has been closed [90098-162]
    at org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java:1107)
    at com.ariba.catalog.data.DBUtil.insert(DBUtil.java:67)
    at com.ariba.catalog.data.DBUtil.readDataFromCSV(DBUtil.java:155)
    at H2Test.doWork(H2Test.java:55)
    at H2Test.main(H2Test.java:23)

org.h2.jdbc.JdbcSQLException: The database has been closed [90098-162]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
    at org.h2.message.DbException.get(DbException.java:169)
    at org.h2.message.DbException.get(DbException.java:146)
    at org.h2.message.DbException.get(DbException.java:135)
    at org.h2.engine.Database.checkPowerOff(Database.java:433)
    at org.h2.command.Command.executeUpdate(Command.java:237)
    at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:143)
    at org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java:1092)
    at com.ariba.catalog.data.DBUtil.insert(DBUtil.java:67)
    at com.ariba.catalog.data.DBUtil.readDataFromCSV(DBUtil.java:155)
    at H2Test.doWork(H2Test.java:55)
    at H2Test.main(H2Test.java:23)

org.h2.jdbc.JdbcSQLException: The database has been closed [90098-162]
org.h2.jdbc.JdbcSQLException: The database has been closed [90098-162]
org.h2.jdbc.JdbcSQLException: The database has been closed [90098-162]
org.h2.jdbc.JdbcSQLException: The database has been closed [90098-162]
org.h2.jdbc.JdbcSQLException: The database has been closed [90098-162]
org.h2.jdbc.JdbcSQLException: The database has been closed [90098-162]
org.h2.jdbc.JdbcSQLException: The database has been closed [90098-162]
org.h2.jdbc.JdbcSQLException: Out of memory.; SQL statement:
Insert into StagedBag values(?, ?, ?, ?, ?, ?, ?, ?, ?,

?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [90108-162]

Noel Grandin

unread,
Dec 22, 2011, 6:50:01 AM12/22/11
to h2-da...@googlegroups.com, Vinaya

yes. some part of your code closed the database connection.

Noel Grandin

unread,
Dec 22, 2011, 6:54:37 AM12/22/11
to h2-da...@googlegroups.com, Vinaya Kumar Thimmappa

the virtual machine ran out of memory.

Vinaya Kumar Thimmappa

unread,
Dec 22, 2011, 6:58:28 AM12/22/11
to Noel Grandin, h2-da...@googlegroups.com
Hello Noel,
Thanks for the response. I don't have any code where i say "Close".

The stack happens when i use sun jdk 1.6.0 and during execution of statement "prepareStatement.executeBatch"
Note: if i change jvm flavour to open-java, then everything works fine.

 Trace.db file contents are as below


Select * from StagedBag [42102-162]
12-22 00:08:31 jdbc[2]: exception
org.h2.jdbc.JdbcSQLException: Out of memory.; SQL statement:
Insert into StagedBag values(?, ?, ?, ?, ?, ?, ?, ?, ?,

?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [90108-162]
    at org.h2.message.DbException.
getJdbcSQLException(DbException.java:329)
    at org.h2.message.DbException.get(DbException.java:158)
    at org.h2.message.DbException.convert(DbException.java:275)
    at org.h2.command.Command.executeUpdate(Command.java:230)
    at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:143)
    at org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java:1092)
    at com.ariba.catalog.data.DBUtil.insert(DBUtil.java:67)

-Vinaya

Thomas Mueller

unread,
Dec 22, 2011, 1:54:17 PM12/22/11
to h2-da...@googlegroups.com
Hi,

You didn't close the connection (most likely).

However, if there is an out of memory error within the database engine code, then the database itself closes the connection. The reason is to protect against corrupted databases (there were some problems in the past).

Regards,
Thomas
Reply all
Reply to author
Forward
0 new messages