首批通过分布式安全可靠测评,为关键业务系统打造
导数工具 4.2.5
更新时间:2026-06-27 19:19:58
本次 8 月发版的导数工具 4.2.5 支持通过旁路模式导入数据、OceanBase Oracle 模式下支持导入包含重复数据的文件,以及新增预处理函数。
版本信息
当前版本:4.2.5
前置版本:4.2.4
发版时间:2023 年 8 月 9 日
支持的 OceanBase 数据库版本
导数工具 4.2.5 版本支持下表所列版本的 OceanBase 数据库。
| OceanBase 模式 | 支持的版本号 |
|---|---|
| Oracle 模式 | 2.0.x、2.1.x、2.2.20、2.2.30、2.2.50、2.2.70、2.2.71、2.2.72、2.2.76、3.1.x、3.2.x、4.0.0、4.1.0、4.2.0 |
| MySQL 模式 | 1.4.70、1.4.72、1.4.75、1.4.78、1.4.79、2.2.30、2.2.50、2.2.70、2.2.71、2.2.72、2.2.76、3.1.x、3.2.x、4.0.0、4.1.0、4.2.0 |
功能变更
OBLOADER:
- 新增
--direct和--rpc-port选项,支持指定 OBServer 的 RPC 端口旁路导入数据。详情请参见 OBLOADER 命令行选项。
说明
旁路导入仅支持预览版功能(Preview Feature),请谨慎使用。
- 新增
在 OceanBase Oracle 模式下,使用 OBLOADER 指定
--replace-data选项导入数据时,支持处理包含重复数据的文件。OBDUMPER:
- 新增
--enable-hidden-pk选项,支持无主键的表使用隐藏主键,以提升导出速度。详情请参见 OBDUMPER 命令行选项。
- 新增
OBLOADER & OBDUMPER:
问题修复
修复使用 OBLOADER 导入 csv 格式文件时,
enum类型字段空字符串显示为NULL值的缺陷。修复使用 OBLOADER 导入 DDL 定义文件时,如果
default或者comment中包含注释字符会解析失败的缺陷。修复使用 OBLOADER 导入 DDL 定义文件并指定
--exclude-table命令行选项后导入失败的缺陷。修复使用 OBLOADER 导入 PL 时,无法处理内容为空的多行注释的缺陷。
修复使用 OBLOADER 导入主键重复日志不准确的缺陷。
修复使用 OBDUMPER 导出 parquet 数据文件时,如果路径层级中包含 hadoop 相关校验文件会报错中断的缺陷。
修复使用 OBDUMPER 导出文件且指定
--max-file-size命令行选项时,该选项不能对全局生效的缺陷。
已知问题
导出的数据库对象定义中可能会包含对象所属的数据库名。
OceanBase MySQL 2.2.30 之前的版本中均不支持导出 PL 对象定义。
命令行未指定 sys 租户密码时,OceanBase 2.2.70 之前的版本均不支持导出表组定义。
命令行未指定 sys 租户密码时,OceanBase Oracle 2.2.50 之前的版本无法导出索引定义。
命令行未指定 sys 租户密码时,OceanBase Oracle 2.2.70 之前的版本无法导出唯一索引的分区信息。
命令行未指定 sys 租户密码时,OceanBase Oracle 2.2.70 及之后的版本无法导出分区表的唯一索引定义。
OBLOADER 导入数据时,如果指定文件格式(
--sql,--csv等)与实际文件格式不符时存在缺陷。设置 OceanBase MySQL 模式下大小写敏感后,数据库对象名暂不支持严格匹配大小写(如表、视图等)。
旁路导入时,中途强制结束 OBLOADER 进程存在锁表风险。
注意事项
CUT 格式要求数据整行存放。OBDUMPER 命令行指定
--cut选项导出的数据中存在字段分隔符时,如果字段分隔符是单个字符时,数据中出现分隔符、回车或者换行等特殊字符,OBDUMPER 会将数据中的特殊字符进行转义。例如:数据为abc|def,分隔符为|,则导出的数据为abc\|def。命令行指定
--cut选项导入数据时,如果文件中的数据行尾没有字段分隔符(或分隔串),请勿使用--trail-delimiter选项,否则导入程序会出现严重错误。命令行中指定
--logical-database选项时,导出的是随机的一个物理分库分表的定义,不可以直接导入到数据库中。用户需要将导出的物理库表结构手动改成逻辑库表结构,才可以导入到数据库中被业务使用。命令行指定
--partition选项导出分区内的数据时,对于组合分区表需要指定二级分区名,OBDUMPER 无法导出一级分区内的数据。如果指定的分区名不存在,OBDUMPER 会报错提示。命令行指定
--add-extra-message选项导出表定义时,程序会导出每张表所属的表组名。该选项依赖 sys 租户权限。如果 OBDUMPER 运行时缺少 sys 租户的权限,请勿指定该选项。OceanBase 3.2.4 及之后的版本使用导数工具前,请将系统配置项
open_cursors设置为较大的值,否则导入/导出可能会出现错误。数据导入/导出结束后,请将该系统配置项重置成初始值。例如:ALTER SYSTEM SET open_cursors = 65535;。OceanBase 4.0.0 及之后版本中表结构发生过任意的变更操作,无法使用 OBDUMPER 导出该表最近一次成功合并的基线数据(即一致性快照数据),用户可以手动发起一次合并以后,再重新导出最近一次成功合并的基线数据。
OceanBase MySQL 模式中关于日期/时间类型存储零值,使用 OBDUMPER 4.2.0 之前的版本导出数据时,JDBC 将零值日期时间转换为 NULL,如果该列定义为 NOT NULL 约束,导出数据将会报错。OBDUMPER 4.2.0 版本可以导出零值/日期时间,但导出时无法区分原始数据(NULL 或者零值),默认将数据强制转换成零值;其次 DATETIME, TIMESTAMP 两种数据类型导出的零值可能出现数据失真的问题,即某个非零近似值。数据库 sql_mode 变量中包含 NO_ZERO_DATE, NO_ZERO_IN_DATE 约束时,导入零值数据会报错。OceanBase MySQL 涉及零值问题的数据类型:DATE, DATETIME, TIME, YEAR, TIMESTAMP。
结构导出功能差异
