使用OceanBase源端进行迁移,任务报错:query has reached the maximum query timeout,怎么办?
问题描述
使用OceanBase源端进行迁移,任务报错:query has reached the maximum query timeout。

原因分析
在分片过程中,CDM 将查询表字段的 MIN MAX 值作为分片字段,执行 SQL: SELECT MIN(ORA_HASH(ROWID)) FROM "HEIO"."ORDERS" WHERE 1 = 1; SELECT MAX(ORA_HASH(ROWID)) FROM "HEIO"."ORDERS" WHERE 1 = 1。在原生 Oracle 中,处理百万数据量时,执行 MIN/MAX SQL 通常耗时很短,大约 500ms 即可得到结果。然而,在 OceanBase 中处理相同数据量时,执行 MIN/MAX SQL 耗时较长,平均需要 10s 左右才能得到结果,导致 SQL 任务超时返回。
解决方案
针对这种情况,可以对OceanBase服务端进行SQL超时时间配置:SET GLOBAL ob_query_timeout = 60000000; 即60秒 = 60 * 1,000,000 微秒。