日期:2014-05-16  浏览次数:20540 次

H2数据库产生垃圾恢复方法

系统使用H2作为部分数据存储,期间开发人员使用SQL语句进行表去重操作,导致H2数据库文件暴增至几十G,确无法执行完成去重操作。(H2应该存在是临时数据存盘释放相关的问题),解决数据问题操作如下:

?

1. 备份H2的数据文件 xxx.h2.db 和 xxx.trace.db

2. 执行Recover生成sql: java -cp /xxx/lib/h2-x.x.xxx.jar org.h2.tools.Recover

3. 通过步骤2生成的sql进行恢复:ava -cp /xxx/lib/h2-x.x.xxx.jar org.h2.tools.RunScript -url jdbc:h2:/usr/local/xxx/h2/xxx -user sa -script xxx.h2.sql? (若有密码,还需要加入选项 -password)

?

注明:对于h2-1.3.168之前的版本会出现去重问题

?