---
title: 桌面版 ODC 启动失败/h2数据库损坏 Chuck not found-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 桌面版 ODC 启动失败/h2数据库损坏 Chuck not found相关的常见问题和使用技巧，帮助您快速解决 桌面版 ODC 启动失败/h2数据库损坏 Chuck not found的难题。
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# 桌面版 ODC 启动失败/h2数据库损坏 Chuck not found

更新时间：2025-06-17 09:01

适用版本： V3.1.x、V3.2.x、V3.3.x、V3.4.x、V4.0.x、V4.1.x、V4.2.x 内容类型：Troubleshoot  

## 问题现象

Windows 系统下，桌面版 ODC 启动失败，报错日志中提示：`"java.lang.IllegalStateException: Chunk *** not found"`。

 ![](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/KB/knowledge-base/diagnose/8/1.png)

```shell
Caused by: java.lang.IllegalStateException: Chunk 225780 not found [1.4.200/9]
    at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:950) ~[h2-1.4.200.jar!/:?]
    at org.h2.mvstore.MVStore.getChunk(MVStore.java:1230) ~[h2-1.4.200.jar!/:?]
    at org.h2.mvstore.MVStore.readBufferForPage(MVStore.java:1214) ~[h2-1.4.200.jar!/:?]
    at org.h2.mvstore.MVStore.readPage(MVStore.java:2209) ~[h2-1.4.200.jar!/:?]
    at org.h2.mvstore.MVMap.readPage(MVMap.java:672) ~[h2-1.4.200.jar!/:?]
    at org.h2.mvstore.Page$NonLeaf.getChildPage(Page.java:1043) ~[h2-1.4.200.jar!/:?]
    at org.h2.mvstore.Cursor.hasNext(Cursor.java:53) ~[h2-1.4.200.jar!/:?]
    at org.h2.mvstore.MVMap$2$1.hasNext(MVMap.java:802) ~[h2-1.4.200.jar!/:?]
    at org.h2.mvstore.db.LobStorageMap.init(LobStorageMap.java:109) ~[h2-1.4.200.jar!/:?]
    at org.h2.engine.Database.open(Database.java:791) ~[h2-1.4.200.jar!/:?]
    at org.h2.engine.Database.openDatabase(Database.java:307) ~[h2-1.4.200.jar!/:?]
    at org.h2.engine.Database.<init>(Database.java:301) ~[h2-1.4.200.jar!/:?]
    at org.h2.engine.Engine.openSession(Engine.java:74) ~[h2-1.4.200.jar!/:?]
    at org.h2.engine.Engine.openSession(Engine.java:192) ~[h2-1.4.200.jar!/:?]
    at org.h2.engine.Engine.createSessionAndValidate(Engine.java:171) ~[h2-1.4.200.jar!/:?]
    at org.h2.engine.Engine.createSession(Engine.java:166) ~[h2-1.4.200.jar!/:?]
    at org.h2.engine.Engine.createSession(Engine.java:29) ~[h2-1.4.200.jar!/:?]
    at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:340) ~[h2-1.4.200.jar!/:?]
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:173) ~[h2-1.4.200.jar!/:?]
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:152) ~[h2-1.4.200.jar!/:?]
    at org.h2.Driver.connect(Driver.java:69) ~[h2-1.4.200.jar!/:?]
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-3.4.5.jar!/:?]
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358) ~[HikariCP-3.4.5.jar!/:?]
    at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206) ~[HikariCP-3.4.5.jar!/:?]

```

## 问题原因

桌面版 ODC 的 h2database 元数据库损坏，具体请参考 GitHub 的 [IllegalStateException: Chunk not found in v1.4.200/9](https://github.com/h2database/h2database/issues/2907) 和 [Cursor sporadically fail with 'IllegalStateException: Chunk {number} not found'](https://github.com/h2database/h2database/issues/2118)。

## 适用版本

Windows 系统下，ODC V3.x 和 V4.x。

## 解决方法

### 方法一：对元数据库文件进行修复

#### **步骤 1：** 下载恢复工具

[下载并安装恢复工具](http://www.h2database.com/html/download-archive.html)。

#### 注意

需要根据 h2 对应的版本进行下载，ODC 目前支持 1.4.200。

  ![](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/KB/3.common-troubleshooting/6.client-odc-problems/1.chuck-not-found/2.png)

#### 步骤 2：生成恢复 SQL 语句

1. 查看元数据文件路径。桌面版 ODC 的元数据维护在嵌入式数据库 h2database 中：

      - Windows 系统下的数据文件路径 %USERPROFILE%\AppData\Roaming\odc\。

       修复元数据库文件。

       ```shell
       cd %USERPROFILE%\AppData\Roaming\odc\

       ```
      - Mac 系统下的数据文件路径 `/Users/{user}/Library/Application Support/odc`。

       ```shell
       cd ~/"Library/Application Support/odc"
       ls odc*.db

       #查看以下 2 个文件，即 h2database 数据库对应的数据文件
       #odc2.0.mv.db    odc2.0.trace.db

       ```
 2. 将损坏的 ODC 元数据库文件 odc2.0.mv.db拷贝至 h2\bin\路径下。
 3. 进入 cmd 执行 java -cp h2-1.4.200.jar org.h2.tools.Recover，路径下会生成 odc2.0.h2.sql，如下图所示。

    ![](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/KB/3.common-troubleshooting/6.client-odc-problems/1.chuck-not-found/3.png)

#### 步骤 3：执行恢复 SQL 语句

1. 生成新的数据库 odc2.1。参考命令如下：

   ```shell
   java -cp h2-1.4.200.jar org.h2.tools.RunScript -url jdbc:h2:./odc2.1 -user sa -password '' -script odc2.0.h2.sql

   ```
 2. 执行完成后，路径下会产生文件 odc2.1.mv.db。

#### 步骤 4：拷贝恢复的数据库文件至 ODC 安装路径

1. 将 odc2.1.mv.db 文件拷贝至元数据库文件所在路径下，并将其重命名为 odc2.0.mv.db。
 2. 重启 ODC。

### 方法二：对元数据库文件进行替换

ODC V3.x/V4.x 版本使用 h2database 均为 1.4.200 版本。可以将其它未出现该问题的客户端上的 h2database 文件 odc2.0.mv.db 替换到问题机器的目录下。

#### 注意

此方式会丢失原 ODC 中存储的连接信息。

上一篇

[桌面版 ODC 启动慢](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000234598)

下一篇

[桌面版 ODC 命令行窗口乱码](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000262313) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
