#校验任务

# 1. 任务迁移后,无法启动校验任务。

校验任务仅支持对离线迁移成功任务进行校验,校验对象继承迁移对象,默认数据迁移成功表为校验表,其余表为不校验表。

# 2. 校验任务创建时,报错:“无校验表对象”。

校验任务未选中校验对象,应添加校验对象,否则校验无意义。

# 3. 校验任务创建时,报错:“若启动该任务,连接数可能会超过YDC配置的最大连接数参数上限,请检查配置避免产生错误”。

校验任务启动,可能会占用与表并发度相同的连接数目,当前校验模块正在使用的连接和该任务创建所需连接之和若大于连接池最大连接数,可能会导致任务无法正确拿取连接。应等待部分正在使用的连接释放后,再次启动任务。

# 4. 校验任务创建时,报错:“当前数据源XXX现阶段无法提供足够支撑该任务并发度的连接数,请检测数据库避免产生错误”。

校验任务检测到数据源无法提供校验任务所需连接数的最大值,可能会导致校验任务出现错误。需要用户释放部分数据库连接,供给校验使用。

# 5. 校验过程中或者完成后,为什么部分表是跳过状态?

校验任务检测到不支持的表,将设置为跳过状态,可点击查看详情查看跳过原因。

# 6. Mysql数据库暂不保证字符型主键存储下列特殊字符进行校验的正确性;

字符型主键值:#,“,`,\n,,,/,/n 等。

# 7. 源端是varchar(或者nvarchar)数据类型,目标端是char(或者nchar)数据类型,进行校验任务,校验数据不一致?

数据库会自动对char(或者nchar)数据右边补充空格,导致数据校验不一致,可通过YMP的配置文件application.properties设置checkTask.varcharRightTrim=true,该配置的功能是校验任务的数据类型映射源端是varchar(或者nvarchar)数据类型就移除源端和目标端的数据右侧空格进行对比。

# 8. 源端是MySQL的decimal,目标端是YashanDB的NUMBER类型, 对于迁移的值超过YashanDB情况下,校验会不通过,保证让用户知道此情况;
--mysql, 查询的结果还是插入的原始值
CREATE TABLE tb_deciaml_002 (id INT PRIMARY key,c1 DECIMAL(65,30));
INSERT INTO tb_deciaml_002 VALUES(1,99999999999999999999999999999999999.999999999999999999999999999999);

--yashandb, 迁移后查询展示的值已经变了是:100000000000000000000000000000000000
CREATE TABLE "YANGM"."TB_DECIAML_002"("ID" INTEGER,"C1" NUMBER DEFAULT NULL);
INSERT INTO TB_DECIAML_002(ID, C1) VALUES(0, 99999999999999999999999999999999999.999999999999999999999999999999);
Copied!
# 9. 校验失败,报错信息显示-pump初始化异常,初始化SQL:SQL语句,异常信息: ORA-01652:unable to extend temp segment by 128 in tableSpace TEMP。

Oracle数据查询语句占用临时表空间导致临时表空间不足,建议通过以下方式规避:

1.增大临时表空间。

-- 查询表空间情况
SELECT tablespace_name,ROUND((bytes / (1024 * 1024)), 2) AS size_mb,ROUND((maxbytes / (1024 * 1024)), 2) AS max_size_mb FROM dba_temp_files;
-- 增大临时表空间
ALTER DATABASE TEMPFILE 'tempfile_path' RESIZE new_size;
Copied!

2.清理临时表空间。 3.调小表校验并发度。

# 10. 评估时对schema进行改名,忽略大小写不生效,无法找到对应表。

当评估时,对schema进行改名后,对于修改schema名称的对象,校验匹配时严格按照修改规则。对于其他非改名schema对象按是否勾选忽略大小写规则匹配。

# 11. 校验任务失败,查看日志报错:ORA-02032 : cluster tables cannot be used before the cluster index is built。

Oracle规定,无法在聚簇索引建立前使用聚簇表。可剔除未建立聚簇索引的聚簇表或给未建立聚簇索引的聚簇表建立聚簇索引。

# 12. 在终止DM全量校验过程中遇到报错信息为:"源端数据库连接用户dm对当前session执行SP_CANCEL_SESSION_OPERATION(session_id bigint)权限不足"。

DM仅有DBA用户可对任务进行终止操作。 如需终止DM全量校验请GRANT DBA TO USER 或数据库中执行SELECT * FROM V$SESSIONS查找出SESS_ID(确保找出的SESS_ID为YMP校验任务所用ID, 校验任务所用ID通常SQL_TEXT为查询SQL;STATE为ACTIVE;USER_NAME与YMP添加的数据源用户一致;CREATE_TIME在校验任务执行后;CLNT_TYPE为JDBC;CLNT_HOST为YMP所在机器;RUN_STATUS为RUNNING;MSG_STATUS为RECEIVE。若无法准确判断请寻求YMP开发人员协助)。 再执行SP_CANCEL_SESSION_OPERATION(SESS_ID bigint)杀死会话,全量校验显示任务失败。

pdf-btn 下载文档
copy-btn 复制链接