首批通过分布式安全可靠测评,为关键业务系统打造
常见问题
更新时间:2026-04-13 14:00:52
Q:如何解决使用 OBDUMPER 导出时遇到 OOM 错误?
A:首先修改 bin/obdumper 脚本中的 JAVA 虚拟机内存参数。其次排除 OpenJDK GC Bug。
Q:如何在调试模式下运行 OBDUMPER 排查问题?
A:直接运行 bin 目录下的调试脚本。
例如:obdumper-debug。
Q:为表配置了控制文件,导入或者导出的数据为什么没有生效?
A:要求控制文件的名称与表名相同且大小写一致。MySQL 默认表名为小写,Oracle 默认表名为大写。
Q:OBDUMPER 导出数据时,为什么空表未产生空数据文件?
A:默认空表不会产生对应的空文件。--retain-empty-files 选项可保留空表所对应的空文件。
Q:OBDUMPER 运行脚本时,命令行参数未被正常解析的原因是什么?
A:可能是命令行参数中存在特殊符号。Linux 平台上运行 OBDUMPER,密码中存在大于号(> 是重定向符),导致运行的日志出现丢失。因此在不同的运行平台请使用正确的引号。
Q:OBDUMPER 导出数据时,为什么 sec.avg 和 min.avg 显示的导出速度相似?
A:sec.avg 表示全局的平均速度(秒级),min.avg 表示最近一分钟的平均速度(秒级)。
Q:OceanBase Oracle 模式下,使用 OBDUMPER 导出数据时,同一张表中的主键名和索引名相同导致导出重复数据。如何解决?
A:避免在同一张表中创建多个同名约束。如果表中已存在同名约束,可以删除唯一索引后重新创建一个不同名的唯一索引。具体请参见 OceanBase 对象命名规范综述。
Q:如何自定义导出作业日志文件名?
A:可以在 {ob-loader-dumper}/conf/log4j2.xml 中自定义日志文件名。如下图所示,在 Routing 标签下修改如下名称:
InfoRoutingAppender下的ob-loader-dumper.info(info 级别日志)。WarnRoutingAppender下的ob-loader-dumper.warn(warn 级别日志)。ErrorRoutingAppender下的ob-loader-dumper.error(error 级别日志)。
说明
将 ob-loader-dumper.info、ob-loader-dumper.warn、ob-loader-dumper.error 修改为相同名称时,所有日志信息会生成到同一文件中。
Q: 在控制台中输出日志时无响应,该如何解决?
A: 可能是控制台输出被暂停或中止,导致日志输出被阻塞。解决方法:
打开日志的配置文件
{ob-loader-dumper}/conf/log4j2.xml,查找如下配置:<Logger name="com.oceanbase.tools.loaddump" additivity="false" level="INFO"> <AppenderRef ref="ConsoleAppender"/> <AppenderRef ref="InfoRoutingAppender"/> <AppenderRef ref="WarnRoutingAppender"/> <AppenderRef ref="ErrorRoutingAppender"/> </Logger>删除
<AppenderRef ref="ConsoleAppender"/>,并尝试重新运行程序。
Q:OBDUMPER 指定 --query-sql '大查询语句' 导出数据过程中报错:Connection reset。
A:登入 sys 租户,将 ODP 配置参数 client_tcp_user_timeout 和 server_tcp_user_timeout 设置为 0。
Q:OBDUMPER 启动报错:Access denied for user 'root'@'xxx.xxx.xxx.xxx'。
A:OBDUMPER 默认依赖 root@sys 用户和密码。如果集群中已为 root@sys 用户设置密码,请在命令行中输入 --sys-password 选项并指定正确的 root@sys 用户的密码。
Q:OBDUMPER 运行报错:The target directory: "xxx" is not empty。
A:为防止数据覆盖,导出数据前,OBDUMPER 会检查输出目录是否为空(--skip-check-dir 选项可跳过此检查)。
Q:OBDUMPER 运行报错:Request to read too old versioned data。
A:当前查询所依赖的数据版本已经被回收,用户需要根据查询设置 UNDO 的保留时间。
例如:set global undo_retention=xxx(OceanBase V4.0.0-BP1 之前的版本);alter system set undo_retention=xxxx;(OceanBase V4.0.0-BP1 之后的版本)。默认单位:秒。
Q:OBDUMPER 运行报错:ChunkServer out of disk space。
A:由于 _temporary_file_io_area_size 参数值过小引起存储块溢出错误,可修改该系统配置参数。
例如:使用 _temporary_file_io_area_size 参数 SELECT * FROM oceanbase.__all_virtual_sys_parameter_stat WHERE name='_temporary_file_io_area_size'; 查询该参数值,修改该参数值 ALTER SYSTEM SET _temporary_file_io_area_size = 20;。
Q:OBDUMPER 查询视图报错:SELECT command denied to user 'xxx'@'%' for table SYS.XXX。
A:由于用户无访问内部表或者视图的权限,需要运行语句 GRANT SELECT SYS.XXX TO xxx; 为用户进行授权。
Q:OBDUMPER 运行报错:Not supported feature or function。
A:低版本的 OBServer 不支持某些特性。使用 OBServer 2.2 及之前的版本时,请将 {ob-loader-dumper}/conf/session.config.json 文件中的 JDBC 参数 useServerPrepStmt 设置为 false,并删除 init_sql.mysql 标签下 set session sql_mode = xxx 语句。