---
title: sql audit 内存满之后不刷新-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 sql audit 内存满之后不刷新相关的常见问题和使用技巧，帮助您快速解决 sql audit 内存满之后不刷新的难题。
---
切换语言

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

划线反馈

# sql audit 内存满之后不刷新

更新时间：2026-05-14 07:41

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

## 问题现象

查询 sql_audit 发现 sql_audit 不再刷新，距离上次刷新 3 天之前了，调整 `ob_sql_audit_percentage` 改到 5 后，新的流量进来能看到新数据，但是 sql audit 写满之后还是不淘汰数据。

## 关键诊断信息

### 触发条件

业务租户 sql_audit 达到内存上限后因为 BUG 导致 SQL Audit 淘汰线程每次没有淘汰数据。

### 事前巡检

1. 业务租户有正常的流量。
 2. 查询业务租户 sql audit 记录内存没刷新。

   ```shell
   select FROM_UNIXTIME(t.REQUEST_TIME/1000000), tenant_id from oceanbase.gv$ob_sql_audit t where t.tenant_id = 1004 order by t.REQUEST_TIME desc limit 10;

   ```

   ![image01](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/performance/3000.sql-optimization/12468.sql-audit-does-not-refresh-after-memory-full/20251013sql-audit-does-not-refresh-after-memory-full01.png)

### 事后诊断

1. grep 日志中的关键词 `grep -E 'record concurrent fifoallocator alloc' | vim observer.log` 能看到 1002 号租户因为 sql_audit 达到内存上限导致新数据写不进 sql audit。

   ![image02](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/performance/3000.sql-optimization/12468.sql-audit-does-not-refresh-after-memory-full/20251013sql-audit-does-not-refresh-after-memory-full02.png)
 2. grep 关键字 `grep 'sql audit evict'` 能看到对应租户 sql audit 使用情况。

   ![image03](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/knowledge-base/database/performance/3000.sql-optimization/12468.sql-audit-does-not-refresh-after-memory-full/20251013sql-audit-does-not-refresh-after-memory-full03.png)

## 问题原因

业务租户 sql_audit 达到内存上限导致新数据写不进 sql audit，因为内核的 BUG 主要是并发实现的问题导致的 SQL Audit 淘汰线程每次没有淘汰数据，所以出现 sql_audit 不再刷新的现象，复现这个场景需要并发度比较大才会容易触发

```shell
# 内部复现小规格租户调低内存 ob_sql_audit_percentage=1，比较高的负载保持 sysbench tps=5k～6k 的情况下运行了两天时间，并做频繁的读取和淘汰操作可以复现

```

## 问题的风险及影响

sql audit 内存满之后不刷新，影响用户 SQL 的问题诊断和审计功能。

## 影响租户

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

## 影响版本

OceanBase 数据库企业版 V4.2.5 GA（oceanbase-4.2.5.0-100000082024102022）及之后版本、V4.3.5（oceanbase-4.3.5.0-100000122024123020）及之后版本。

## 解决方法

如果能命中**事前诊断**和**事后诊断**的关键信息，说明遇到了相同的问题，彻底解决需要升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库企业版 V4.2.5 BP3（oceanbase-4.2.5.3-103000142025033110）及之后版本、V4.3.5 BP1（oceanbase-4.3.5.1-101000292025030623）及之后版本。

## 规避方式

调大比例 `set global ob_sql_audit_percentage=5;` 但是还是会写满有概率再次遇到，彻底解决需要升级带修复版本。

#### 注意

不能使用规避 `alter system flush sql audit tenant = xxx;` 这个方法无法规避并且多次执行有导致 CPU 用满的风险。

上一篇

[构建 join filter 时，表达式计算 core](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002392349)

下一篇

[Oceanbase 数据库 V4.x 版本，对于无主键表分区键默认不参与抽取 Query Range](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003132043) ![有帮助](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) 咨询热线
