---
title: 大事务导致内存分配失败, 导致切主失败-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 大事务导致内存分配失败, 导致切主失败相关的常见问题和使用技巧，帮助您快速解决 大事务导致内存分配失败, 导致切主失败的难题。
---
切换语言

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

划线反馈

# 大事务导致内存分配失败, 导致切主失败

更新时间：2025-05-28 02:06

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

## 问题描述

OceanBase 数据库中存在 2700w 行数据的大事务，在更新过程中遇到内存分配失败，导致切主。切主后一直无法上任。

## 适用版本

OceanBase 数据库 V3.x 版本。

## 问题原因

在 OceanBase 数据库发生大事务导致内存分配失败，从而触发切主，而切主的过程需要一定的时间来进行 `leader_takeover` 机制的遍历 `callback`。当大事务修改量过大，导致 `leader_takeover` 的遍历 `callback` 时间过长，超过`Clog` 模块的上任超时时间 `(role_change_timeout)` 10秒，导致上任失败，将重新进行上任流程，触发切主，进而导致分区切主的情况。

## 解决方法

### 解决方法

升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库企业版 V3.1.2 BP8 Hotfix (oceanbase-3.1.2-20220329234820) 及之后版本、V3.2.1 BP1 Hotfix (oceanbase-3.2.1-20220426204550) 及之后版本。

### 应急解决方法

调大 Clog 模块的上任超时时间 `role_change_timeout`。

```shell
obclient> ALTER SYSTEM SET _ROLE_CHANGE_TIMEOUT = '30S';

```

#### 说明

role_change_timeout 在 OceanBase 数据库 V3.x 版本中代表分区上任/卸任允许的最长时间, 即超过这个时间上任/卸任就会失败。关于该参数的更多详细信息, 请参见对应版本的 《参考指南》。

上一篇

[CLOG 写盘 HANG 导致切主问题](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000284437)

下一篇

[业务偶发收到 the observer or zone is not the master 原因](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000284434) ![有帮助](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) 咨询热线
