---
title: "导数工具 V4.3.1.1 - 导数工具 V4.3.2.1 | OceanBase 文档中心"
description: 导数工具 V4.3.1.1 本次 8 月发版的导数工具 V4.3.1.1 旨在修复无主键无分区表导出不完整且无报错的问题，以及修复若干已知问题。 版本信息 当前版本：V4.3.1.1 前置版本：V4.3.1 发版时间：2024 年 8 月 8 日 支持的 OceanBase 数据库版本 导数工具 V4.3.1.1 支…
---
切换语言

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

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*eAudSaxX8P0AAAAAAAAAAAAADiGDAQ/original) 导数工具V 4.3.2.1

# 导数工具 V4.3.1.1

更新时间：2026-04-13 12:01:01

[编辑](https://github.com/oceanbase/obdumper-loader-doc/edit/V4.3.2.1/zh-CN/1000.obloaderobdumper-rn/100.obloaderobdumper-rn/100.obloaderobdumper-rn-4.x/91.obloaderobdumper-4311.md)  

本次 8 月发版的导数工具 V4.3.1.1 旨在修复无主键无分区表导出不完整且无报错的问题，以及修复若干已知问题。

## 版本信息

- 当前版本：V4.3.1.1
 - 前置版本：V4.3.1
 - 发版时间：2024 年 8 月 8 日

## 支持的 OceanBase 数据库版本

导数工具 V4.3.1.1 支持下表所列版本的 OceanBase 数据库。

| OceanBase 模式 | 支持的版本号 |
| --- | --- |
| Oracle 模式 | V2.0.x、V2.1.x、V2.2.20、V2.2.30、V2.2.50、V2.2.70、V2.2.71、V2.2.72、V2.2.76、V2.2.77、V3.1.x、V3.2.x、V4.0.0、V4.1.0、V4.2.0、V4.2.1、V4.2.2、V4.2.3、V4.3.0、V4.3.1 |
| MySQL 模式 | V1.4.70、V1.4.72、V1.4.75、V1.4.78、V1.4.79、V2.2.30、V2.2.50、V2.2.70、V2.2.71、V2.2.72、V2.2.76、V2.2.77、V3.1.x、V3.2.x、V4.0.0、V4.1.0、V4.2.0、V4.2.1、V4.2.2、V4.2.3、V4.3.0、V4.3.1 |

## 修复的问题

- 修复 OceanBase 数据库 MySQL 租户指定 `lower_case_table_names=0` 库名存在大写字母情况下无法导入导出的问题。
 - 修复 OceanBase 数据库 Oracle 租户 V4.0.0.0 之后的版本导出日期时间类型字段分区表数据失败的问题。
 - 修复无主键表导出报错 `Current position is after the last row` 的问题。
 - 修复无主键无分区表未完全导出就结束任务的问题。
 - 修复 OceanBase 数据库 Oracle 租户 V3.2.x 导出分区表历史版本数据翻倍的问题。

## 已知问题

- 导出的数据库对象定义中可能会包含对象所属的数据库名。
 - 命令行未指定 sys 租户密码时，OceanBase 数据库 V2.2.70 之前的版本均不支持导出表组定义。
 - 命令行未指定 sys 租户密码时，OceanBase 数据库 Oracle 租户 V2.2.50 之前的版本无法导出索引定义。
 - 命令行未指定 sys 租户密码时，OceanBase 数据库 Oracle 租户 V2.2.70 之前的版本无法导出唯一索引的分区信息。
 - 命令行未指定 sys 租户密码时，OceanBase 数据库 Oracle 租户 V2.2.70 及之后至 V4.0.0 之前的版本，无法导出分区表的唯一索引定义。
 - OceanBase 数据库 MySQL 租户 V2.2.30 之前的版本中均不支持导出 PL 对象定义。
 - 使用 OBLOADER 导入数据时，如果指定文件格式（例如 `--sql`、`--csv` 等）与实际文件格式不符时存在缺陷。
 - 设置 OceanBase 数据库 MySQL 模式下大小写敏感后，数据库对象名暂不支持严格匹配大小写（例如表、视图等）。
 - JDBC 高可用模式 “sequential” 暂不可用，请使用模式 “loadbalance” 代替。
 - 指定 `--remove-newline` 选项处理数据中的换行符时会引入不符期望的转义符，请尽量避免使用该选项。
 - 请尽量避免在多表恢复场景使用旁路导入，其效率可能不佳。

## 升级注意事项

**从导数工具 V4.3.0 之前的版本升级至 V4.3.1 时，请注意：**

- 为了降低导数工具的学习成本，命令行选项进行下述调整：

     - 弃用命令行选项 `--storage-uri`。该选项的原有功能与 `-f`/`--file-path` 合并。

      请注意该选项被废弃后，仍然可以使用。但建议您使用下述示例方式进行替代。

           - 使用本地文件系统，可以指定 `-f '/home/admin/foo/bar'`。
           - 使用 Aliyun OSS，可以指定 `-f 'oss://mybucket/foo/bar?endpoint=myendpoint&access-key=myak&secret-key=mysk'`。

      导出数据库对象定义和表数据至非本地文件系统时，导数工具会默认创建 `<工具根目录>/tmp` 作为临时目录，以存放临时文件。如果您需要指定临时目录，请使用命令行选项 `--tmp-path`。
     - 命令行选项 `--compact-schema` 被默认设置为 `true`。该选项用于指引程序在 OBServer V4.0.0 及之后版本导出时，通过 `SHOW CREATE TABLE ...` 语句来获取 DDL，而非通过系统视图查询并反拼 DDL（默认结构导出策略）。

      该改动是为了兼容 OBServer 的部分标准视图变更，提升整体性能以及支持新的列存特性。您仍然可以通过指定 `--compact-schema=false` 来使用之前默认的结构导出策略。
 - 当某张表的数据量大小未达到指定的分块大小（由 `--block-size` 指定，默认值为 1GB）时，文件会被命名为 `<表名>.<扩展名>`，之前版本的命名为 `<表名>.<分块序号>.<扩展名>`。以导出 CSV 格式的文件为例：

     - 表 `t_test` 数据量为 500MB，`--block-size` 为默认值 1GB，导出将仅产生一个文件 `t_test.csv`。
     - 表 `t_test` 数据量为 1.2GB，`--block-size` 为默认值 1GB，导出将产生两个文件，分别是 `t_test.0.csv` 和 `t_test.1.csv`。

**从导数工具 V4.2.8 之前的版本升级至 V4.3.1 时，请额外注意：**

- 目前导数工具支持以 `<user>@<tenant>#<cluster>` 的三段式格式字符串指定 `-u/--user` 的值。同时为了向后兼容，您可以继续使用命令行选项 `-t/--tenant` 和 `-c/--cluster`。
 - POS 格式解析行为变更，解析器现在会处理一个完整的行。即，除了控制文件定义的字节长度之外，每一行会多读取一个换行符。您也许需要修改控制文件以适应这一行为。计算 `example.dat` 文件第一行字节数的命令如下：

  ```shell
  expr $(head -n 1 example.dat | wc -c) - 1

  ```

**从导数工具 V4.2.7 之前的版本升级至 V4.3.1 时，请额外注意：**

- 弃用命令行选项 `--file-name`。

     - 您已无需合并单表导出的若干子文件。如果您需要将表的数据写入一个文件，通过 `--block-size 0` 即可设置导出表数据不进行文件分块。

      请注意，虽然程序不会限制文件大小，某些文件系统或对象存储仍会限制单个文件的大小。例如，在 ext2/ext3/ext4 文件系统中，单个文件的大小限制是 2TB。
     - 如果您需要去除程序默认生成的复杂层次目录结构，可以使用命令行选项 `--no-nested-dir`。
 - 弃用命令行选项 `--upload-behavior`。关于不同数据源的写入策略，请参见下文的功能说明。
 - 由于导数工具 V4.2.7 对文件写入行为进行了较大变更，程序会一定程度得降低性能来确保导出文件数量的可预测性。如果您发现导出性能不佳，程序提供了并发写入的行为开关，这将使程序仍然将每张表的数据分散写入到多个文件（具体参考 V4.2.7 之前版本的行为），但将无法再合并子文件。操作方式如下：

     1. 通过任意文本编辑器打开文件：`<工具根目录>/bin/obdumper`。
     2. 查找 Java 启动参数 `-Denable.parallel.write=false`，将其中的 `false` 修改为 `true`。

## 注意事项

- CUT 格式要求数据整行存放。OBDUMPER 命令行指定 `--cut` 选项导出的数据中存在字段分隔符时，如果字段分隔符是单个字符时，数据中出现分隔符、回车或者换行等特殊字符，OBDUMPER 会将数据中的特殊字符进行转义。例如：数据为 `abc|def`，分隔符为 `|`，则导出的数据为 `abc\|def`。
 - 命令行指定 `--cut` 选项导入数据时，如果文件中的数据行尾没有字段分隔符（或分隔串），请勿使用 `--trail-delimiter` 选项，否则数据无法被正确导入至数据库中。
 - 命令行中指定 `--logical-database` 选项时，导出的是随机的一个物理分库分表的定义，不可以直接导入到数据库中。用户需要将导出的物理库表结构手动改成逻辑库表结构，才可以导入到数据库中被业务使用。
 - 命令行指定 `--partition` 选项导出分区内的数据时，对于组合分区表需要指定二级分区名，OBDUMPER 无法导出一级分区内的数据。如果指定的分区名不存在，OBDUMPER 会报错提示。
 - 命令行指定 `--add-extra-message` 选项导出表定义时，程序会导出每张表所属的表组名。该选项依赖 sys 租户权限。如果 OBDUMPER 运行时缺少 sys 租户的权限，请勿指定该选项。
 - OceanBase 数据库 V3.2.4 及之后的版本使用导数工具前，请将系统配置项 `open_cursors` 设置为较大的值，否则导入/导出可能会出现错误。数据导入/导出结束后，请将该系统配置项重置成初始值。例如：`ALTER SYSTEM SET open_cursors = 65535；`。
 - OceanBase 数据库 V4.0.0 及之后版本中表结构发生过任意的变更操作，无法使用 OBDUMPER 导出该表最近一次成功合并的基线数据（即一致性快照数据），用户可以手动发起一次合并以后，再重新导出最近一次成功合并的基线数据。
 - OceanBase 数据库 MySQL 模式中关于日期/时间类型存储零值，使用 OBDUMPER V4.2.0 之前的版本导出数据时，JDBC 将零值日期时间转换为 NULL，如果该列定义为 NOT NULL 约束，导出数据将会报错。OBDUMPER V4.2.0 可以导出零值/日期时间，但导出时无法区分原始数据（NULL 或者零值），默认将数据强制转换成零值；其次 DATETIME, TIMESTAMP 两种数据类型导出的零值可能出现数据失真的问题，即某个非零近似值。数据库 sql_mode 变量中包含 NO_ZERO_DATE, NO_ZERO_IN_DATE 约束时，导入零值数据会报错。OceanBase 数据库 MySQL 租户涉及零值问题的数据类型包括 DATE、DATETIME、TIME、YEAR 和 TIMESTAMP。
 - 结构导出功能差异

  | **租户** | **提供 sys 租户的密码** | **未提供 sys 租户的密码** |
  | MySQL | 表、视图、表组、存储过程、函数 | 与 **提供 sys 租户的密码** 的导出行为基本相同，但是还存在以下遗留问题。    - OceanBase 数据库 V2.2.70 之前的版本无法导出表组定义。   - OceanBase 数据库 V2.2.70 之前的版本无法导出唯一索引的分区信息。   - OceanBase 数据库 Oracle 租户 V2.2.30 及之前的版本无法导出索引定义。   - OceanBase 数据库 Oracle 租户 V2.2.70（包含）~ V4.0.0 无法导出分区表的唯一索引定义。 |
  | Oracle | 表、视图、触发器、同义词、序列、存储过程、函数、包、表组、类型 |

 上一篇 下一篇 ![有帮助](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) 咨询热线
