---
title: "使用 DB_LINK 进行聚合查询时报错 ORA-00979: not a GROUP BY expression 的解决方法-OceanBase数据库使用指南"
description: "了解OceanBase数据库在实际应用中关于使用 DB_LINK 进行聚合查询时报错 ORA-00979: not a GROUP BY expression 的解决方法相关的常见问题和使用技巧，帮助您快速解决使用 DB_LINK 进行聚合查询时报错 ORA-00979: not a GROUP BY expression 的解决方法的难题。"
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

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

划线反馈

# 使用 DB_LINK 进行聚合查询时报错 ORA-00979: not a GROUP BY expression 的解决方法

更新时间：2026-08-27 06:26

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

## 问题现象

在 Oracle 模式下，当 SQL 语句中包含 `DB_LINK` 并尝试进行聚合查询时，如果过滤条件中包含了外表的常量，并且这些常量默认是 GROUP BY 列（或投影列聚合函数）的一部分，执行该 SQL 语句会报错 “ORA-00979: not a GROUP BY expression”。

示例 SQL 如下：

```sql
SELECT a.*, b.*
FROM table_a a, table_b@db_link b
WHERE a.id = b.id
AND b.BUSINESS_CODE = 'ABC'
GROUP BY a.id;

```

## 关键诊断信息

### 触发条件

- 使用 `DB_LINK` 连接远程数据库。
 - SQL 语句中包含聚合查询（`GROUP BY`）。
 - 过滤条件中包含外表的常量。
 - 常量默认是 `GROUP BY` 列（或投影列聚合函数）的一部分。

### 事前巡检

- 检查 SQL 语句中是否存在上述触发条件。
 - 审核 SQL 语句，确保 `GROUP BY` 列中包含所有非聚合列。

### 事后诊断

- 查看 OceanBase 日志，使用特定的 `trace_id` 过滤，寻找与错误相关的日志条目。
 - 确认 SQL 执行计划中是否丢失了 `GROUP BY` 列。

## 问题原因

OceanBase 内核存在一个 BUG，在 SQL 改写过程中，当过滤条件中包含外表的常量时，优化器在分配 `GROUP BY` 算子时错误地裁剪了 `GROUP BY` 列，导致 SQL 执行时缺少必要的 `GROUP BY` 表达式，从而引发错误。

## 问题的风险及影响

- SQL 执行报错。
 - 查询结果正确性问题。

## 影响租户

| sys | MySQL | Oracle |
| --- | --- | --- |
| NO | NO | YES |

## 影响版本

- V3.1.x
 - V3.2.x（含 3.2.2、3.2.3、3.2.4）

## 解决方法

- 升级到 4.1（oceanbase-4.1.0.0-100001122023040322）及以上版本，该版本修复了此 BUG。
 - 在当前版本中，可以通过添加 `/*+ no_rewrite */` 注释来避免 SQL 被优化器改写，从而绕过此问题。

## 规避方式

- 对于受影响的 SQL 语句，可以在 SQL 语句前添加 `/*+ no_rewrite */` 注释，防止 SQL 被优化器改写。
 - 考虑未来升级到 4.1 及以上版本，以获得更稳定的 SQL 执行体验。

上一篇

[DBLink 反拼模块会对嵌套 join 的反拼机制不够完善导致反拼出错误 SQL](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000043627)

下一篇

[DBLINK 访问远端表报错 -4152, null value](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000209994) ![有帮助](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) 咨询热线
