---
title: CTE temp table 数据量超过 90W 时发生 500 租户 ObSEArray 内存泄漏问题-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 CTE temp table 数据量超过 90W 时发生 500 租户 ObSEArray 内存泄漏问题相关的常见问题和使用技巧，帮助您快速解决 CTE temp table 数据量超过 90W 时发生 500 租户 ObSEArray 内存泄漏问题的难题。
---
切换语言

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

划线反馈

# CTE temp table 数据量超过 90W 时发生 500 租户 ObSEArray 内存泄漏问题

更新时间：2026-05-07 09:46

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

## 问题现象

当执行计划存在抽取 CTE 使用 temp table，且该 temp table 的数据源是一个分布式计划、数据量超过 90W 行，则会触发 500 租户内存泄漏。

## 关键诊断信息

### 触发条件

当执行计划存在抽取 CTE 使用 temp table，且该 temp table 的数据源是分区表、数据量超过 90W 行。

### 事前巡检

1. 定期检查 500 租户内存。
 2. 通过 plan_cache_plan_explain 检查是否存在 `PHY_TEMP_TABLE_TRANSFORMATION`、`PHY_VEC_TEMP_TABLE_TRANSFORMATION` 算子，然后查看这些 Plan 对应的 SQL，看是否有分布式的 temp table 计划，并且 temtable 数据超过 90W 行。

## 事后诊断

通过 plan_cache_plan_explain 检查是否存在 `PHY_TEMP_TABLE_TRANSFORMATION`、`PHY_VEC_TEMP_TABLE_TRANSFORMATION` 算子，通过 memleak 抓堆栈，或者通过日志分析 500 租户内存分析栈。

## 问题原因

当执行计划存在抽取 CTE 使用 temp table，且该 temp table 的数据源是分区表、数据量超过 90W 行时，PX 执行中有一个 SeArray 变量会触发扩容，但是扩容后的内存没有释放。

## 问题的风险及影响

500 租户内存泄漏。

## 影响租户

影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。

## 影响版本

OceanBase 数据库企业版 V3.2.3 GA（oceanbase-3.2.3.0-20220419）及之后版本、V3.2.4 GA（oceanbase-3.2.4.0-100000072022102819）及之后版本、V4.1.0 GA（oceanbase-4.1.0.0-100001122023040322）及之后版本、V4.2.0 GA（oceanbase-4.2.0.0-100010082023083014）及之后版本、V4.2.1 GA（oceanbase-4.2.1.0-100000182023092722）及之后版本、V4.2.2 GA（oceanbase-4.2.2.0-100000082024011317）及之后版本、V4.2.5 GA（oceanbase-4.2.5.0-100000082024102022）及之后版本、V4.3.0（oceanbase-4.3.0.0-100000072024020200）及之后版本、V4.3.5 GA（oceanbase-4.3.5.0-100000232024123020）及之后版本。

## 解决方法

- 升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库企业版 V4.2.5 BP4（oceanbase-4.2.5.4-104000082025052817）及之后版本、V4.3.5 BP1 Hotfix6（oceanbase-4.3.5.1-101060022025052114）、V4.3.5 BP2（oceanbase-4.3.5.2-102000162025051417）及之后版本。
 - 重启 OBServer。

## 规避方式

- 通过隐藏配置项控制 CTE 全部展开：`alter system set _with_subquery=2;`。
 - 通过 OPT_PARAM Hint（指定在查询级别更新一些优化器相关的配置项/系统变量）：`/*+ OPT_PARAM('_with_subquery', '2') */`。

上一篇

[500 租户内存出现 OB_COMMON_ARRAY 模块泄露时，如何定位导致泄露的申请堆栈](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000426402)

下一篇

[4013 内存爆问题的排查](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000704208) ![有帮助](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) 咨询热线
