我有一个支持java webapp的h2数据库,今天应用程序停止响应。尽管一年多没有真正的故障,应用程序停止并抛出JDBC PoolExhaustedException
例外,声称池是空的。
最终我不得不杀死这个过程,因为它不会干净地关闭。
不幸的是,在此之后应用程序无法启动,h2现在正在抛出MetaDataAccessException : org.h2.jdbc.JdbcSQLException: General error: "java.lang.NullPointerException"
因此,数据库似乎已经损坏了,所以我决定尝试使用Recover工具。
这也未能完成,在处理20分钟后,它会因IllegalStateException: Unsupported type 17 [1.4.190/3]
而失败
此时除了恢复前一晚的备份外,我没有其他行动。不是最佳结果,但我找不到任何其他推荐的行动。
所以我想在这里问我还有其他选择吗?我非常关心h2的可靠性,它可以依赖吗?如果它自己的恢复工具不可靠那么还有其他第三方数据库恢复工具可以做得更好吗?
这让我想知道依赖单个文件来包含所有表格的方法,比如在这种情况下 - 一旦出现问题......一切都会出错。
因此,最好使用系统h2(至少我认为)在哪里为每个表创建不同的db文件?