---
title: PX+UDF 函数+索引，PX 和索引并发，直接报事务 6220 错误或在报事务 6220 之后因超时时间过长反复重试，执行时间过长-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 PX+UDF 函数+索引，PX 和索引并发，直接报事务 6220 错误或在报事务 6220 之后因超时时间过长反复重试，执行时间过长相关的常见问题和使用技巧，帮助您快速解决 PX+UDF 函数+索引，PX 和索引并发，直接报事务 6220 错误或在报事务 6220 之后因超时时间过长反复重试，执行时间过长的难题。
---
切换语言

- 简体中文
- English

划线反馈

# PX+UDF 函数+索引，PX 和索引并发，直接报事务 6220 错误或在报事务 6220 之后因超时时间过长反复重试，执行时间过长

更新时间：2026-05-15 09:06

适用版本： V2.2.x、V3.1.x、V3.2.x 内容类型：Troubleshoot  

## 问题现象

跑批期间遇到，在 `insert into select` 语句中触发反复重试导致无法执行完成。

日志中报错 6220，存在反复重试直到查询超时。

## 问题诊断

### 事前巡检

- SQL 存在 UDF，且 UDF 中会执行 SQL。
 - 有 PX 执行 （存在分区表，或 SQL 涉及的表在多台机器上），UDF 出现在执行计划中 PX COORDINATOR 子 PLAN 以外的算子中。如下面执行计划： 11、12、13、14 算子属于 PX COORDINATOR 子 PLAN，UDF 出现在 19 号算子，则属于此类情况。

  执行计划示例。

  ```shell
  ==========================================================================================
  |ID|OPERATOR                          |NAME                            |EST. ROWS|COST   |
  ------------------------------------------------------------------------------------------
  |0 |MULTI PARTITION INSERT            |                                |1        |1182995|
  |1 | SUBPLAN SCAN                     |VIEW1                           |1        |1182995|
  |2 |  SEQUENCE                        |                                |1        |1182995|
  |3 |   SUBPLAN SCAN                   |                                |1        |1182995|
  |4 |    WINDOW FUNCTION               |                                |34023    |1181766|
  |5 |     SORT                         |                                |34023    |1163697|
  |6 |      MERGE ANTI JOIN             |                                |34023    |1156594|
  |7 |       SORT                       |                                |34024    |1154592|
  |8 |        NESTED-LOOP JOIN          |                                |34024    |1066929|
  |9 |         NESTED-LOOP OUTER JOIN   |                                |34264    |502144 |
  |10|          NESTED-LOOP OUTER JOIN  |                                |34264    |323158 |
  |11|           PX COORDINATOR         |                                |34264    |144172 |
  |12|            EXCHANGE OUT DISTR    |:EX10000                        |34264    |130462 |
  |13|             PX PARTITION ITERATOR|                                |34264    |130462 |
  |14|              TABLE SCAN          |A1                              |34264    |130462 |
  |15|           TABLE LOOKUP           |A2                              |1        |4      |
  |16|            TABLE SCAN            |A2(PK_T_LI_COUT_ACTIVITY)       |1        |1      |
  |17|          TABLE LOOKUP            |A3                              |1        |4      |
  |18|           TABLE SCAN             |A3(PK_T_LI_COUT_ACTIVITY)       |1        |1      |
  |19|         TABLE LOOKUP             |N                               |1        |16     |
  |20|          TABLE SCAN              |N(PK_T_LI_COUT_NEWPOLICY_INFO_1)|1        |5      |
  |21|       SUBPLAN SCAN               |VIEW2                           |1066     |1273   |
  |22|        TABLE SCAN                |T(PK_ETL_XINGMU_EXP_PCS)        |1066     |1257   |
  ==========================================================================================
  Outputs & filters:
  -------------------------------------
  0 - output([VIEW1.XINGMU_EXP_L_ID(0x7ed281c77e80)], [VIEW1.DATA_ID(0x7ed281c78170)], [VIEW1.POLICY_NO(0x7ed281c7a470)], [VIEW1.CLASS_CODE(0x7ed281c7a760)], [VIEW1.STATUS(0x7ed281c7aa50)], [?], [VIEW1.STATUS_TIME(0x7ed281c7ad40)], [VIEW1.COUT_MODE(0x7ed281c7b030)], [VIEW1.OUT_FLG(0x7ed281c7b320)], [VIEW1.CRT_USER_ID(0x7ed281c7b610)], [VIEW1.CRT_DTTM(0x7ed281c7b900)], [VIEW1.LASTUPT_USER_ID(0x7ed281c7bbf0)], [VIEW1.LASTUPT_DTTM(0x7ed281c7bee0)], [VIEW1.ACT1_ID(0x7ed281c7c1d0)], [VIEW1.ACT2_ID(0x7ed281c7c4c0)], [VIEW1.ACT3_ID(0x7ed281c7c7b0)], [ora_decode(E.OUT_FLG(0x7e79298c0d40), '0', '0')(0x7ed281cfa870)]), filter(nil),
      columns([{ETL_XINGMU_EXP_L: ({ETL_XINGMU_EXP_L: (E.XINGMU_EXP_L_ID(0x7e79298be3b0), E.DATA_ID(0x7e79298be9a0), E.POLICY_NO(0x7e79298bef90), E.CLASS_CODE(0x7e79298bf580), E.STATUS(0x7e79298bfb70), E.RESULT(0x7ed281c7f170), E.STATUS_TIME(0x7e79298c0160), E.COUT_MODE(0x7e79298c0750), E.OUT_FLG(0x7e79298c0d40), E.CRT_USER_ID(0x7e79298c1330), E.CRT_DTTM(0x7e79298c1920), E.LASTUPT_USER_ID(0x7e79298c1f10), E.LASTUPT_DTTM(0x7e79298c2500), E.ACT1_ID(0x7e79298c2af0), E.ACT2_ID(0x7e79298c30e0), E.ACT3_ID(0x7e79298c36d0), E.SYS_NC32$(0x7ed281c81470))})}]), partitions(p0)
  1 - output([VIEW1.XINGMU_EXP_L_ID(0x7ed281c77e80)], [VIEW1.DATA_ID(0x7ed281c78170)], [VIEW1.POLICY_NO(0x7ed281c7a470)], [VIEW1.CLASS_CODE(0x7ed281c7a760)], [VIEW1.STATUS(0x7ed281c7aa50)], [VIEW1.STATUS_TIME(0x7ed281c7ad40)], [VIEW1.COUT_MODE(0x7ed281c7b030)], [VIEW1.OUT_FLG(0x7ed281c7b320)], [VIEW1.CRT_USER_ID(0x7ed281c7b610)], [VIEW1.CRT_DTTM(0x7ed281c7b900)], [VIEW1.LASTUPT_USER_ID(0x7ed281c7bbf0)], [VIEW1.LASTUPT_DTTM(0x7ed281c7bee0)], [VIEW1.ACT1_ID(0x7ed281c7c1d0)], [VIEW1.ACT2_ID(0x7ed281c7c4c0)], [VIEW1.ACT3_ID(0x7ed281c7c7b0)]), filter(nil),
      access([VIEW1.XINGMU_EXP_L_ID(0x7ed281c77e80)], [VIEW1.DATA_ID(0x7ed281c78170)], [VIEW1.POLICY_NO(0x7ed281c7a470)], [VIEW1.CLASS_CODE(0x7ed281c7a760)], [VIEW1.STATUS(0x7ed281c7aa50)], [VIEW1.STATUS_TIME(0x7ed281c7ad40)], [VIEW1.COUT_MODE(0x7ed281c7b030)], [VIEW1.OUT_FLG(0x7ed281c7b320)], [VIEW1.CRT_USER_ID(0x7ed281c7b610)], [VIEW1.CRT_DTTM(0x7ed281c7b900)], [VIEW1.LASTUPT_USER_ID(0x7ed281c7bbf0)], [VIEW1.LASTUPT_DTTM(0x7ed281c7bee0)], [VIEW1.ACT1_ID(0x7ed281c7c1d0)], [VIEW1.ACT2_ID(0x7ed281c7c4c0)], [VIEW1.ACT3_ID(0x7ed281c7c7b0)])
  2 - output([SEQ_XINGMU_EXP_L_ID.NEXTVAL(0x7e8ae6506cb0)], [.DATA_ID(0x7e8ae6504390)], [.POLICY_NO(0x7e8ae6504680)], [.CLASS_CODE(0x7e8ae6504970)], [.STATUS(0x7e8ae6504c60)], [.STATUS_TIME(0x7e8ae6504f50)], [.COUT_MODE(0x7e8ae6505240)], [.OUT_FLG(0x7e8ae6505530)], [.CRT_USER_ID(0x7e8ae6505820)], [.CRT_DTTM(0x7e8ae6505b10)], [.LASTUPT_USER_ID(0x7e8ae6505e00)], [.LASTUPT_DTTM(0x7e8ae65060f0)], [.ACT1_ID(0x7e8ae65063e0)], [.ACT2_ID(0x7e8ae65066d0)], [.ACT3_ID(0x7e8ae65069c0)]), filter(nil)
  3 - output([.DATA_ID(0x7e8ae6504390)], [.POLICY_NO(0x7e8ae6504680)], [.CLASS_CODE(0x7e8ae6504970)], [.STATUS(0x7e8ae6504c60)], [.STATUS_TIME(0x7e8ae6504f50)], [.COUT_MODE(0x7e8ae6505240)], [.OUT_FLG(0x7e8ae6505530)], [.CRT_USER_ID(0x7e8ae6505820)], [.CRT_DTTM(0x7e8ae6505b10)], [.LASTUPT_USER_ID(0x7e8ae6505e00)], [.LASTUPT_DTTM(0x7e8ae65060f0)], [.ACT1_ID(0x7e8ae65063e0)], [.ACT2_ID(0x7e8ae65066d0)], [.ACT3_ID(0x7e8ae65069c0)]), filter([.SEQ(0x7e8ae65040a0) = 1(0x7e8ae65077a0)]),
      access([.SEQ(0x7e8ae65040a0)], [.DATA_ID(0x7e8ae6504390)], [.POLICY_NO(0x7e8ae6504680)], [.CLASS_CODE(0x7e8ae6504970)], [.STATUS(0x7e8ae6504c60)], [.STATUS_TIME(0x7e8ae6504f50)], [.COUT_MODE(0x7e8ae6505240)], [.OUT_FLG(0x7e8ae6505530)], [.CRT_USER_ID(0x7e8ae6505820)], [.CRT_DTTM(0x7e8ae6505b10)], [.LASTUPT_USER_ID(0x7e8ae6505e00)], [.LASTUPT_DTTM(0x7e8ae65060f0)], [.ACT1_ID(0x7e8ae65063e0)], [.ACT2_ID(0x7e8ae65066d0)], [.ACT3_ID(0x7e8ae65069c0)])
  4 - output([NVL(NVL(A3.DATA_ID(0x7e8ae65c3720), A2.DATA_ID(0x7e8ae65c5a20))(0x7e8ae65d4a10), A1.DATA_ID(0x7e8ae65c5d10))(0x7e8ae65d41e0)], [N.POLICY_NO(0x7e8ae65c19c0)], [N.CLASS_CODE(0x7e8ae65c10f0)], ['95'], [?], [A1.COUT_MODE(0x7e8ae65c62f0)], ['0'], [?], [?], [?], [?], [CASE WHEN (T_OP_IS_NOT, A3.ACT_ID(0x7e8ae65c2e50), NULL, 0)(0x7e8ae65d6d50) THEN A3.ACT_ID(0x7e8ae65c2e50) WHEN (T_OP_IS, A3.ACT_ID(0x7e8ae65c2e50), NULL, 0)(0x7e8ae65d8330) AND (T_OP_IS_NOT, A2.ACT_ID(0x7e8ae65c2580), NULL, 0)(0x7e8ae65d90c0)(0x7e8ae65d7ae0) THEN A2.ACT_ID(0x7e8ae65c2580) ELSE A1.ACT_ID(0x7e8ae65c6000) END(0x7e8ae65d6430)], [CASE WHEN (T_OP_IS_NOT, A3.ACT_ID(0x7e8ae65c2e50), NULL, 0)(0x7e8ae65da770) THEN A2.ACT_ID(0x7e8ae65c2580) WHEN (T_OP_IS, A3.ACT_ID(0x7e8ae65c2e50), NULL, 0)(0x7e8ae65dbd50) AND (T_OP_IS_NOT, A2.ACT_ID(0x7e8ae65c2580), NULL, 0)(0x7e8ae65dcae0)(0x7e8ae65db500) THEN A1.ACT_ID(0x7e8ae65c6000) ELSE NULL END(0x7e8ae65d9e50)], [CASE WHEN (T_OP_IS_NOT, A3.ACT_ID(0x7e8ae65c2e50), NULL, 0)(0x7e8ae65de420) THEN A1.ACT_ID(0x7e8ae65c6000) ELSE NULL END(0x7e8ae65ddb00)], [T_WIN_FUN_ROW_NUMBER()(0x7e8ae65cfd80)]), filter(nil),
      win_expr(T_WIN_FUN_ROW_NUMBER()(0x7e8ae65cfd80)), partition_by([N.POLICY_NO(0x7e8ae65c19c0)], [N.CLASS_CODE(0x7e8ae65c10f0)]), order_by([A1.ACT_ID(0x7e8ae65c6000), ASC]), window_type(RANGE), upper(UNBOUNDED PRECEDING), lower(UNBOUNDED FOLLOWING)
  5 - output([N.POLICY_NO(0x7e8ae65c19c0)], [N.CLASS_CODE(0x7e8ae65c10f0)], [A1.COUT_MODE(0x7e8ae65c62f0)], [A3.ACT_ID(0x7e8ae65c2e50)], [A2.ACT_ID(0x7e8ae65c2580)], [A1.ACT_ID(0x7e8ae65c6000)], [NVL(NVL(A3.DATA_ID(0x7e8ae65c3720), A2.DATA_ID(0x7e8ae65c5a20))(0x7e8ae65d4a10), A1.DATA_ID(0x7e8ae65c5d10))(0x7e8ae65d41e0)]), filter(nil), sort_keys([N.POLICY_NO(0x7e8ae65c19c0), ASC], [N.CLASS_CODE(0x7e8ae65c10f0), ASC], [A1.ACT_ID(0x7e8ae65c6000), ASC]), prefix_pos(2)
  6 - output([N.POLICY_NO(0x7e8ae65c19c0)], [N.CLASS_CODE(0x7e8ae65c10f0)], [A1.COUT_MODE(0x7e8ae65c62f0)], [A3.ACT_ID(0x7e8ae65c2e50)], [A2.ACT_ID(0x7e8ae65c2580)], [A1.ACT_ID(0x7e8ae65c6000)], [NVL(NVL(A3.DATA_ID(0x7e8ae65c3720), A2.DATA_ID(0x7e8ae65c5a20))(0x7e8ae65d4a10), A1.DATA_ID(0x7e8ae65c5d10))(0x7e8ae65d41e0)]), filter(nil),
      equal_conds([VIEW2.T.POLICY_NO(0x7e8ae65c65e0) = N.POLICY_NO(0x7e8ae65c19c0)(0x7e8ae65bf760)], [VIEW2.T.CLASS_CODE(0x7e8ae65c68d0) = N.CLASS_CODE(0x7e8ae65c10f0)(0x7e8ae65bffc0)]), other_conds(nil),
      merge_directions([ASC], [ASC])
  7 - output([N.POLICY_NO(0x7e8ae65c19c0)], [N.CLASS_CODE(0x7e8ae65c10f0)], [A1.COUT_MODE(0x7e8ae65c62f0)], [A3.ACT_ID(0x7e8ae65c2e50)], [A2.ACT_ID(0x7e8ae65c2580)], [A1.ACT_ID(0x7e8ae65c6000)], [NVL(NVL(A3.DATA_ID(0x7e8ae65c3720), A2.DATA_ID(0x7e8ae65c5a20))(0x7e8ae65d4a10), A1.DATA_ID(0x7e8ae65c5d10))(0x7e8ae65d41e0)]), filter(nil), sort_keys([N.POLICY_NO(0x7e8ae65c19c0), ASC], [N.CLASS_CODE(0x7e8ae65c10f0), ASC])
  8 - output([N.POLICY_NO(0x7e8ae65c19c0)], [N.CLASS_CODE(0x7e8ae65c10f0)], [A1.COUT_MODE(0x7e8ae65c62f0)], [A3.ACT_ID(0x7e8ae65c2e50)], [A2.ACT_ID(0x7e8ae65c2580)], [A1.ACT_ID(0x7e8ae65c6000)], [NVL(NVL(A3.DATA_ID(0x7e8ae65c3720), A2.DATA_ID(0x7e8ae65c5a20))(0x7e8ae65d4a10), A1.DATA_ID(0x7e8ae65c5d10))(0x7e8ae65d41e0)]), filter(nil),
      conds(nil), nl_params_([NVL(NVL(A3.DATA_ID(0x7e8ae65c3720), A2.DATA_ID(0x7e8ae65c5a20))(0x7e8ae65d4a10), A1.DATA_ID(0x7e8ae65c5d10))(0x7e8ae65d41e0)]), batch_join=false
  9 - output([A3.DATA_ID(0x7e8ae65c3720)], [A2.DATA_ID(0x7e8ae65c5a20)], [A1.DATA_ID(0x7e8ae65c5d10)], [A1.COUT_MODE(0x7e8ae65c62f0)], [A3.ACT_ID(0x7e8ae65c2e50)], [A2.ACT_ID(0x7e8ae65c2580)], [A1.ACT_ID(0x7e8ae65c6000)]), filter(nil),
      conds(nil), nl_params_([A2.FIRST_ACT_ID(0x7e8ae65c2b60)]), batch_join=false
  10 - output([A2.DATA_ID(0x7e8ae65c5a20)], [A1.DATA_ID(0x7e8ae65c5d10)], [A1.COUT_MODE(0x7e8ae65c62f0)], [A2.ACT_ID(0x7e8ae65c2580)], [A1.ACT_ID(0x7e8ae65c6000)], [A2.FIRST_ACT_ID(0x7e8ae65c2b60)]), filter(nil),
      conds(nil), nl_params_([A1.FIRST_ACT_ID(0x7e8ae65c2290)]), batch_join=false
  11 - output([A1.FIRST_ACT_ID(0x7e8ae65c2290)], [A1.DATA_ID(0x7e8ae65c5d10)], [A1.ACT_ID(0x7e8ae65c6000)], [A1.COUT_MODE(0x7e8ae65c62f0)]), filter(nil)
  12 - output([A1.FIRST_ACT_ID(0x7e8ae65c2290)], [A1.DATA_ID(0x7e8ae65c5d10)], [A1.ACT_ID(0x7e8ae65c6000)], [A1.COUT_MODE(0x7e8ae65c62f0)]), filter(nil), dop=1
  13 - output([A1.FIRST_ACT_ID(0x7e8ae65c2290)], [A1.DATA_ID(0x7e8ae65c5d10)], [A1.ACT_ID(0x7e8ae65c6000)], [A1.COUT_MODE(0x7e8ae65c62f0)]), filter(nil),
      force partition granule, asc.
  14 - output([A1.FIRST_ACT_ID(0x7e8ae65c2290)], [A1.DATA_ID(0x7e8ae65c5d10)], [A1.ACT_ID(0x7e8ae65c6000)], [A1.COUT_MODE(0x7e8ae65c62f0)]), filter([A1.CMP_TYPE_ID(0x7e8ae65c3140) IN (801, 5401, 27900, 28900)(0x7e8ae65ca4e0)(0x7e8ae65c9c00)], [A1.CMP_STATUS(0x7e8ae65c3430) IN ('-2', '01', '02', '06', '05', '07', '08', '09', '-1')(0x7e8ae65cdf90)(0x7e8ae65cb600)]),
      access([A1.FIRST_ACT_ID(0x7e8ae65c2290)], [A1.CMP_TYPE_ID(0x7e8ae65c3140)], [A1.CMP_STATUS(0x7e8ae65c3430)], [A1.DATA_ID(0x7e8ae65c5d10)], [A1.ACT_ID(0x7e8ae65c6000)], [A1.COUT_MODE(0x7e8ae65c62f0)]), partitions(p[117-143]),
      is_index_back=false, filter_before_indexback[false,false],
      range_key([A1.CRT_DTTM(0x7e8ae65c1cb0)], [A1.__pk_increment(0x7e8ae662fc20)]), range(2023-10-03 14:57:59,MAX ; NULL,MIN),
      range_cond([A1.CRT_DTTM(0x7e8ae65c1cb0) > ?(0x7e8ae65c8b40)])
  15 - output([A2.ACT_ID(0x7e8ae65c2580)], [A2.FIRST_ACT_ID(0x7e8ae65c2b60)], [A2.DATA_ID(0x7e8ae65c5a20)]), filter(nil),
      partitions(p[0-143])
  16 - output([A2.CRT_DTTM(0x7e8ae65c1fa0)], [A2.__pk_increment(0x7e97b5093fe0)]), filter(nil),
      access([A2.CRT_DTTM(0x7e8ae65c1fa0)], [A2.__pk_increment(0x7e97b5093fe0)]), partitions(p0),
      is_index_back=false,
      range_key([A2.ACT_ID(0x7e8ae65c2580)], [A2.shadow_pk_0(0x7e97b5094ab0)], [A2.shadow_pk_1(0x7e97b5094da0)]), range(MIN ; MAX),
      range_cond([? = A2.ACT_ID(0x7e8ae65c2580)(0x7e97b5208720)])
  17 - output([A3.ACT_ID(0x7e8ae65c2e50)], [A3.DATA_ID(0x7e8ae65c3720)]), filter(nil),
      partitions(p[0-143])
  18 - output([A3.CRT_DTTM(0x7e8ae65c2870)], [A3.__pk_increment(0x7e97b50f4ca0)]), filter(nil),
      access([A3.CRT_DTTM(0x7e8ae65c2870)], [A3.__pk_increment(0x7e97b50f4ca0)]), partitions(p0),
      is_index_back=false,
      range_key([A3.ACT_ID(0x7e8ae65c2e50)], [A3.shadow_pk_0(0x7e97b50f5770)], [A3.shadow_pk_1(0x7e97b50f5a60)]), range(MIN ; MAX),
      range_cond([? = A3.ACT_ID(0x7e8ae65c2e50)(0x7e97b5222720)])
  19 - output([N.CLASS_CODE(0x7e8ae65c10f0)], [N.POLICY_NO(0x7e8ae65c19c0)]), filter([LIFE.FUN_FREE_LOOK_PERIOD(N.CHANNEL_CODE(0x7e8ae65c0e00), N.CLASS_CODE(0x7e8ae65c10f0), N.REC_DATE(0x7e8ae65c13e0), N.HESITATE_DAY(0x7e8ae65c16d0))(0x7e8ae65c7420) <= ?(0x7e8ae65c6bc0)]),
      partitions(p[0-143])
  20 - output([N.POLICY_VALID_DATE(0x7e8ae65c0820)], [N.__pk_increment(0x7e97b515b820)]), filter(nil),
      access([N.POLICY_VALID_DATE(0x7e8ae65c0820)], [N.__pk_increment(0x7e97b515b820)]), partitions(p0),
      is_index_back=false,
      range_key([N.DATA_ID(0x7e8ae65c0b10)], [N.shadow_pk_0(0x7e97b515c2f0)], [N.shadow_pk_1(0x7e97b515c5e0)]), range(MIN ; MAX),
      range_cond([? = N.DATA_ID(0x7e8ae65c0b10)(0x7eecb3b23510)])
  21 - output([VIEW2.T.POLICY_NO(0x7e8ae65c65e0)], [VIEW2.T.CLASS_CODE(0x7e8ae65c68d0)]), filter(nil),
      access([VIEW2.T.POLICY_NO(0x7e8ae65c65e0)], [VIEW2.T.CLASS_CODE(0x7e8ae65c68d0)])
  22 - output([T.POLICY_NO(0x7e97b51c9170)], [T.CLASS_CODE(0x7e97b51c9460)]), filter([T.STATUS(0x7e97b51c9750) = '95'(0x7e97b51c9a40)]),
      access([T.POLICY_NO(0x7e97b51c9170)], [T.CLASS_CODE(0x7e97b51c9460)], [T.STATUS(0x7e97b51c9750)]), partitions(p0),
      is_index_back=false, filter_before_indexback[false],
      range_key([T.POLICY_NO(0x7e97b51c9170)], [T.CLASS_CODE(0x7e97b51c9460)], [T.STATUS(0x7e97b51c9750)], [T.shadow_pk_0(0x7e97b51f1a20)]), range(MIN,MIN,MIN,MIN ; MAX,MAX,MAX,MAX)always true
      Used Hint:

  ```

### 事后诊断

- 日志中是否在 PX 调用处存在 6220 报错。
 - 如上述执行计划，存在 UDF FUN_FREE_LOOK_PERIOD()，且在 UDF 中会执行 SQL。UDF 也出现在 PX 子 PLAN 以外。

## 问题原因

SQL 中存在 UDF，且 UDF 中有 SQL 执行时，为保证事务语义，整个执行计划中触发的 SQL 只能串行执行。事务通过一套 `SQL_NO` 机制检查 UDF 中 SQL 是否串行执行，违背则报错 6220（SQL sequence illegal） 错误。

在上述执行计划中，PX 任务执行过程中，19 号算子的 UDF 触发了 SQL 执行，将事务 `SQL_NO` 推高，PX 任务执行结束检测到 `SQL_NO` 不匹配，报 6220 错误。

## 问题的风险及影响

持续报 6220 错误并重试到查询超时。

带 UDF，分布式且复杂 SQL 场景相对较少，并且即使出现此类计划，由于通常有阻塞算子（`MATERAL`、`SORT`、`HASH GBY`、`HASH JOIN` 等）存在，导致 UDF 与 PX 任务并不会真的并行执行，不会报错。风险较低。

## 影响租户

影响 OceanBase 数据库中的 Oracle 租户和 MySQL 租户，对于 SYS 租户无影响。

## 影响的版本

OceanBase 数据库企业版 V2.2.77 GA（oceanbase-2.2.77-20210508211731）及之后版本、V3.1.2 GA（oceanbase-3.1.2-20210618150922）及之后版本、V3.2.3 GA（oceanbase-3.2.3.0-20220418212020）及之后版本、V3.2.4 GA（oceanbase-3.2.4.0-100000072022102819）及之后版本。

## 规避方式

通过 HINT 指定或通过 OUTLINE 绑定 NO_USE_PX HINT，使用老分布式执行绕过该问题。

Previous

[NLJ batch rescan，右支 tsc 子算子需要逆序排序，结果错误的原因和解决方法](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002396554)

Next

[存在隐式类型转换的大 IN 请求硬解析耗时高](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002398329) ![有帮助](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) 咨询热线
