---
title: "Checker 组件参数说明 | OceanBase 文档中心"
description: Checker 组件参数说明 参数 是否必填 默认值 描述 datasource.binarypk.permit 否 true 本参数表示是否支持主键是二进制类型。设置为 true ，表示支持主键是二进制类型。设置为 fa lse，表示不支持主键是二进制类型。 datasource.char.trim 否 false…
---
切换语言

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

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*L03BS6f-o40AAAAAAAAAAAAADiGDAQ/original) 迁移服务 OMSV 3.2.1 企业版

# Checker 组件参数说明

更新时间：2023-06-08 10:49:34

| 参数 | 是否必填 | 默认值 | 描述 |
| --- | --- | --- | --- |
| datasource.binarypk.permit | 否 | true | 本参数表示是否支持主键是二进制类型。设置为 `true`，表示支持主键是二进制类型。设置为 `fa`lse，表示不支持主键是二进制类型。 |
| datasource.char.trim | 否 | false | 表示是否删除 Oracle char 类型数据的尾部空格。设置为 `true`，表示删除尾部空格。设置为 `false`，表示不删除尾部空格。 |
| datasource.image.address | 是 | 无 | 目标端的地址，各类数据库的地址格式如下： * MySQL 和 OceanBase 数据库 MySQL 租户：ip:port * Oracle 数据库：ip:port/servicename * OceanBase 数据库 Oracle 租户：ip:port * DB2 数据库：ip:port/db |
| datasource.image.charset.map | 否 | `{"gb18030":"gbk","gbk":"gbk","utf16":"utf16","default":"utf8"}` | 目标端 OceanBase 数据库的字符集编码映射。 |
| datasource.image.index.ignore | 否 | false | 表示是否直接拉取源表中的分值最低索引。如果将本参数设置为 true，表示如果无法匹配新增索引，则直接拉取源表中的分值最低索引。 如果开启，并且目标表无 pk/uk 时，可能会出现重复数据的情况复。 |
| datasource.image.insert.error.ignore | 否 | false | 忽略数据插入错误，避免出错中断。对于具体错误，请用户后续统一处理。错误信息记录在日志文件 `insertErrorIgnoreerror.log` 中。 该日志文件的具体路径为 logs 目录下的 error.log。 |
| datasource.image.password | 是 | 无 | 表示目标端的用户。 |
| datasource.image.table.notexists.ignore | 否 | false | 表示是否忽略"目标表不存在"异常。设置为 false，表示不忽略。设置为 true，表示忽略。 |
| datasource.image.table.empty.check | 否 | true | 表示是否要检查目标表为空，本参数仅适用于数据迁移场景： * 本参数设置为 `true`，如果 `task.resume = false`，当检查到目标表不为空，则会报错。 * 本参数设置为 `false`，则不会检查目标表是否为空。 |
| datasource.image.type | 是 | 无 | 表示目标端的类型，取值包括 OB_IN_ORACLE_MODE 和 OB10（OB mysql mode）。 |
| datasource.image.username | 是 | 无 | 表示目标端的密码。 |
| datasource.master.address | 是 | 无 | 表示源端地址，不同数据源的格式不同。 |
| datasource.master.password | 是 | 无 | 表示源端的用户名。 |
| datasource.master.systenant.password | 否 | 默认同 `datasource.master.password` | 系统租户的密码。 |
| datasource.master.systenant.username | 否 | 默认同 `datasource.master.username` | 系统租户的用户名。例如，`root@sys#ob_1008810671.admin`。 |
| datasource.master.type | 是 | 无 | 表示源端的类型，取值包括 ORACLE/MYSQL/DB2/SYBASE OB_IN_ORACLE_MODE/OB10/OB05。 |
| datasource.master.username | 是 | 无 | 表示源端的密码。 |
| datasource.nchar.charset.map | 否 | {"AL16UTF16":"UTF16"} | 表示 Oracle 数据库中的 NLS_NCHAR_CHARACTERSET 配置编码映射到 Java 中的字符集编码配置。 |
| datasource.ob.splitor.bymarcroinfo | 否 | false | 当源端类型是 OceanBase，并且是有主键表时，会用到本参数。本参数表示 OMS 使用的切片策略： * 设置为 `true`，表示使用 OceanBase 系统表来切片。 * 设置为 `false`，表示通过正常索引切片。 |
| datasource.read.mod | 否 | stream | 迁移和校验数据处理模式。 * stream：流式读取处理。 * batch：一次性读取。 |
| datasource.sybase.charset | 否 | utf-8 | Sybase 编码设置。 |
| datasource.sybase.metadata.uppercase | 否 | true | 是否对表名区分大小写。默认情况下，参数取值为 true。如果目标端是 OceanBase 数据库 MySQL 租户的模式，请将本参数设置为 false，其它情况下，请保持默认值。 OceanBase 数据库 MySQL 租户的表名通常默认为小写，OceanBase 数据库 Oracle 租户的表名通常默认为大写。 |
| datasource.timezone | 否 | +00:00 | 时区。 |
| filter.master.blacklist | 是 | 无，可为空 | 黑名单列表。多个黑名单之间使用 \| 分隔，格式为 `schema;tablename;column`。每一段为正则表达式，*=.* 均表示任意匹配。示例如下： `shell ^db$;^table1$;.*\|^db$;^table2$;.* .*;.*;.*` |
| filter.master.whitelist | 是 | 无，可为空 | 白名单列表。多个白名单之间使用 \| 分隔，格式为 `schema;tablename;column`。每一段为正则表达式，*=.* 均表示任意匹配。示例如下： `shell ^db$;^table1$;.*\|^db$;^table2$;.* .*;.*;.*` 如下示例表示排除 OMS_OBJECT_NUMBER、OMS_RELATIVE_FNO、OMS_BLOCK_NUMBER 和 OMS_ROW_NUMBER 等几列。 ^OBDBA$;^ROWID_TEST$;^(?!OMS_OBJECT_NUMBER)(?!OMS_RELATIVE_FNO)(?!OMS_BLOCK_NUMBER)(?!OMS_ROW_NUMBER).*$ |
| filter.verify.inmod.keys | 否 | 100 | 目标端 PK/UK 最多可以一批查询的数量。 |
| filter.verify.inmod.tables | 否 | "" | 配置校验需要使用 in 模式的表。未配置的情况下，前缀索引默认使用 in 模式校验。配置的情况下，匹配上的表才使用 in 模式校验。 格式和黑白名单一致。例如，`^sqltest$;^prefix_index_test_bigdata$;.*`。 in 模式校验是源端切片查询数据，目标端从源端查询的数据中解析出 PK/UK，通过 PK/UK 值使用 key in(....) 查询目标端的数据，再进行比对的过程。 **注意** in 模式比对无法校验目标端多的数据，且效率低于默认比对。 |
| filter.verify.inmod.workers | 否 | 1 | 目标端 in 查询并发数。 |
| filter.verify.rectify.type | 否 | no | 自定义订正目标数据配置。 * no：不订正，默认值。 * now：一边检验一边订正。此时会忽略校验不一致最大值的限制。 * review：校验完复检几次后再进行订正。此时会受到校验不一致最大值的限制。 成功订正的 SQL 文件保存目录为 `verify/{subId}/{schema}/rectify/suc/{table}.sql`，失败订正的 SQL 文件保存目录为 `verify/{subId}/{schema}/rectify/err/{table}.sql`。 |
| force.split.by.rowid | 否 | false | 源库存在隐藏主键的情况下，您可以配置为 `true`，则迁移和校验时会强制使用隐藏列作为主键。例如 Oracle 数据库的 ROWID，OceanBase 数据库的 __pk_increment。 如果配置为 `false`，则使用表的 PK 或 UK 作为数据迁移和校验的主键。 源库中，除 ORACLE、OB_IN_ORACLE_MODE、OB10 类型可以配置为 `true` 外，其它类型仅支持配置为 `false`。 |
| limitator.datasource.connections.max | 否 | 50 | 数据库连接池的大小。该配置源端和目标端共用。 例如，配置为 100，表示源端最大连接数是 100，目标端最大连接数也是 100。 该参数的取值大于 0，并且需要大于最大并发数。具体的取值取决于并发数和连接数的关系。 |
| limitator.datasource.image.ob10freecpu.min | 否 | 30 | OceanBase CPU 防爆检查，新增配置 `limitator.datasource.image.ob10freecpu.min=30`，默认 CPU 空闲低于 30%，则暂停获取链接。 配置 `limitator.datasource.image.ob10freecpu.min=0`，表示不进行 CPU 防爆检查，CPU 防爆检查逻辑在内存防爆检查逻辑之后。 `limitator.datasource.image.ob10freememory.min`，如果内存防爆已经触发暂停，则不再进行 CPU 防爆检查。仅内存防爆检查无问题或作为源端无内存防爆检查时，才会进行 CPU 防爆检查。 |
| limitator.datasource.image.ob10freememory.min | 否 | 20 | OceanBase 数据库的内存保护阈值，取值范围为 10~100。 该值是 OceanBase 数据库内存的空闲百分比。例如，配置 30，表示当空闲内存小于 30% 时，写入数据会暂停等待，程序会等待连接获取，直至空闲内存大于 30%。 内存防爆检查只会在数据迁移链路目标端的 OceanBase 数据库上检查。 |
| limitator.db2.graphic.rtirm | 否 | false | DB2 Graphic 类型读取是否需要删除空格。 |
| limitator.empty.table.select.parallel | 否 | 16 | Oracle 判断表是否为空的并行 hint 数量。 `SELECT /*+parallel(%d)*/1 FROM %s WHERE ROWNUM<2` |
| limitator.image.insert.batch.max | 否 | 500 | 一次插入目标数据库的记录数。例如，配置 200，表示最多插入 200 个之后，需要提交一次。 |
| limitator.java.opt | 否 | 无 | 运行时 JVM 参数，启动 Checker 脚本 `/home/ds/bin/checker_new.sh` 中会检查该配置。如果存在，则启动使用的是此处的配置。 |
| limitator.noneed.retry.exception | 否 | 无 | 用于执行 SQL 遇到表不存在等不可以重试的异常时，直接退出。 |
| limitator.null.replace.enable | 否 | true | Oracle gb18030 字段值为 chr(129)-chr(254)，并且有 not null 约束，JDBC 读取为 null。对该情况进行替换 `LIMITATOR_NULL_REPLACE_STRING`。 |
| limitator.null.replace.string | 否 | 空格 | 配合 `limitator.null.replace.enable` 使用，用于替换 null 值的字符。 |
| limitator.oceanbase.index.useuk | 否 | true | OceanBase 数据库作为源端，没有 PK 的情况下是否使用 UK。 |
| limitator.oom.avoid | 否 | false | 是否开启防 OOM 开关。开启后会统计记录实际大小可能对性能产生影响。请注意： 防 OOM 开启需要设置 `useCursorFetch=true`，即 setFetchSize 生效。 * 当存在 timestamp 类型的字段值有 0000-00-00 00:00:00 会报错，防 OOM 和 0000-00-00 00:00:00 互斥。 * OceanBase 数据库 MySQL 租户的 PS 协议需要设置 `useServerPrepStmts=true`，解决 FLOAT 问题。当存在 timestamp 类型的字段值有 0000-00-00 00:00:00 会报错。 上述两种互斥问题，使用防 OOM 是否启用配置项来决定是否设置 `useCursorFetch` 和 `useServerPrepStmts`。一旦开启防 OOM，请确保没有非法时间 0000-00-00 00:00:00 和超出精度范围的 FLOAT 值。 |
| limitator.platform.split.threads.number | 否 | limitator.platform.threads.number/8<8?8:limitator.platform.threads.number/8 | 切分线程池大小，最小值为 8。 `limitator.datasource.connections.max` 最小是 `limitator.platform.threads.number`+`limitator.platform.split.threads.number`。 |
| limitator.platform.threads.number | 否 | 3 | 迁移校验最大工作线程池大小。 线程池需要和 `limitator.datasource.connections.max` 配合，通常连接数需要大于最大线程池，否则会存在作业等待连接的情况。 |
| limitator.prefix.index.action | 否 | 1 | MySQL 数据库至 OceanBase 数据库 MySQL 租户的数据迁移链路中，主键为前置索引时，`limitator.prefix.index.action` 配置项指定处理方式，默认值为 2。 * 0：根据原来的切片模式。 * 1：不切片，整张表拉取。 * 2：选取其它索引作为切片索引。如果无其它可用索引，则整张表拉取。 |
| limitator.prepared.splitors | 否 | 1000 | 当某张表 `切分出来的任务数-运行中的任务数>配置的数量` 时，切分作业停止切(含义就是很多切分出来的作业排队中，等会再切) |
| limitator.queue.size | 否 | limitator.select.batch.max*4 | 迁移：源端读取数据存入缓存队列大小。 校验：源端和目标端读取数据存入缓存队列和 jion 缓存队列大小，实际队列大小为该参数*2。 默认大小：`limitator.select.batch.max*4`。 |
| limitator.query.withorder | 否 | true | 查询不排序功能。默认排序 `limitator.query.withorder=true`，目前仅 MySQL 数据库和 OceanBase 数据库 MySQL 租户实现。 |
| limitator.resume.verify.fromkeys | 否 | false | 仅对上一次校验不一致的记录进行重新校验。下述参数必须是固定值才会生效： * `limitator.resume.verify.fromkeys=true` * `task.resume=true` * `task.type=verify` |
| limitator.reviewer.period | 否 | 3 | 每次 review 时间间隔，单位为秒。 |
| limitator.reviewer.review.batch.max | 否 | 100 | review 时每次查询的 key 的数量。 |
| limitator.reviewer.rounds.max | 否 | 20 | 最大 review 次数，校验流程中使用。但校验存在比对不上的数据时，review 过程会将这些 key 分别再次查询源库和目标库数据，并再次进行比对，该过程会持续多次，而该参数控制 review 的次数。 |
| limitator.reviewer.time.max | 否 | 60 | 最大 review 时间，单位为秒。 |
| limitator.select.batch.max | 否 | 3000 | 从源端读取的最大记录数。该参数会影响 `stmt.setFetchSize(fetchSize)`。 当按照主键迁移和校验时，每次迁移或校验的记录数。 当 Oracle ROWID 作为主键迁移时，该参数会计算每个分配的 Block 数。计算公式为：`切数据量大小=表的字段长度*limitator.select.batch.max`，`blocksize=切数据量大小/8k`。 该参数会影响读取写入之间的队列大小：`queueSize=limitator.select.batch.max*4`。 |
| limitator.splitor.blocks | 否 | 128 | 每个切片的 Block 数量，Oracle 无主键表迁移的情况下才有效。 |
| limitator.splitor.block.number.max | 否 | Long.MAX_VALUE | Block 切最大 Block 数。超过该数值，使用数据文件切分。 |
| limitator.splitor.compare.threads.number | 否 | 1 | 单个分片校验比较线程数。仅校验流程有效。 |
| limitator.split.usecondition | 否 | false | 是否将 Condition 使用到切片的 SQL 中。 |
| limitator.splitor.writer.number | 否 | 1 | 每个分配写入目标的任务数，仅数据迁移项目有效。 |
| limitator.sql.exec.max.last.time | 否 | 3600 | SQL 执行的最大重试时间，单位为秒。 |
| limitator.table.diff.max | 否 | 1000000 | 校验作业是最大比对不上的记录数，超过该数据将直接退出不再进行 review。 |
| limitator.table.nonunique.max | 否 | 10000 | 无索引情况下最大可以迁移的记录数。 |
| limitator.verify.many2one | 否 | false | 多表对单表的校验模式。该模式下只要求源表数据在目标表中，true 表示开启多表对单表校验模式。 |
| mapper.from_master_to_image.list | 否 | 无 | 源端至目标端的库表映射，通常配置为 `sourceSchema`*`;*;*=`*`destSchema`*`;*;*`**，* 最多 4 段式，多个映射使用竖线（\|）分隔。 |
| rectifier.image.enable | 否 | false | rectify 流程使用参数，表示允许自动订正目标表数据。通常不建议您使用 true。 |
| rectifier.image.operator.delete | 否 | false | rectify 流程使用参数，表示允许订正删除数据。通常不建议您使用 true。 |
| rectifier.image.operator.insert | 否 | false | rectify 流程使用参数，表示允许订正插入数据。通常不建议您使用 true。 |
| rectifier.image.operator.update | 否 | false | rectify 流程使用参数，表示允许订正更新数据。通常不建议您使用 true。 |
| sampler.verify.ratio | 否 | 100 | 取样比对，当配置 0<x<100 时，取样 x 调记录比对，其他情况无效。 |
| src.record.filter.mapping | 否 | 无 | GroovyRule 配置，`task.split.mode=true` 时，需要配置。 |
| task.resume | 否 | false | false：第一次运行，true：复检运行。 |
| src.table.whitelist | 否 | 无 | GroovyRule 配置，`task.split.mode=true` 时，需要配置。 |
| task.active.active | 否 | false | 双活标志，true 表示双活链路。 |
| task.id | 是 | 无 | Checker 的唯一 ID，与运行目录相关。 |
| task.subId | 是 | 无 | 初始值为 1，每复检一次+1。该值会在作业目录下建立对应的目录，以便记录哪一次运行结果文件： /home/ds/run/{taskname}/{task.type}/{task.subId} |
| task.type | 是 | 无 | 任务类型，包括 migrate（迁移） 和 verify（校验）。 |
| weak.consistency.read | 否 | false | OceanBase 数据库有效，true 表示采用弱读。 `set @@ob_read_consistency='weak'` |

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