HGDB 4.5.8.8开启oracle兼容执行带聚合函数的SQL导致数据库进程被信号11杀死

文章目录

环境

系统平台:银河麒麟 (海光)

版本:4.5.8

症状

数据库版本:瀚高安全版4.5.8.8

介质包:hgdb-see-4.5.8.8-3937-efc2bbd-20241016.x86_64.rpm

信号11的报错信息:

2025-06-16 10:23:04.890 CST,1857,681b3d37.741,370,2025-05-07 19:00:07 CST,0,LOG,00000,"server process (PID 656071) was terminated by signal 11: Segmentation fault","Failed process was running:xxx查询SQL

报错SQL:

sql 复制代码
1)非聚合字段不在group by中的SQL
SELECT t1.id
	,t1.v
	,t1.v1
	,count(t1.id) AS num
FROM t1
LEFT JOIN t2 ON t1.id = t2.id
WHERE t1.v1 IS NOT NULL;
2)group by中包含所有非聚合字段,但是order by字段不在group by中的SQL
SELECT t1.id
	,t1.v
	,t1.v1
	,count(t1.id) AS num
FROM t1
LEFT JOIN t2 ON t1.id = t2.id
WHERE t1.v1 IS NOT NULL
GROUP BY t1.id
	,t1.v
	,t1.v1
ORDER BY t2.id;

问题原因

数据库开启oracle兼容后group by、order by相关语法与oracle仍有区别,使用oracle兼容的分支会引起信号11导致数据库服务异常。

解决方案

1、临时解决方案:

1)非聚合字段不在group by中的SQL,要把非聚合字段都添加到group by中。

修改后的SQL:

sql 复制代码
SELECT t1.id
	,t1.v
	,t1.v1
	,count(t1.id) AS num
FROM t1
LEFT JOIN t2 ON t1.id = t2.id
WHERE t1.v1 IS NOT NULL
GROUP BY t1.id
	,t1.v
	,t1.v1;

2)group by中包含所有非聚合字段,但是order by字段不在group by中的SQL,要把order by中不在group by中的字段删除,按需改成group by中的字段。

修改后的SQL:

sql 复制代码
SELECT t1.id
	,t1.v
	,t1.v1
	,count(t1.id) AS num
FROM t1
LEFT JOIN t2 ON t1.id = t2.id
WHERE t1.v1 IS NOT NULL
GROUP BY t1.id
	,t1.v
	,t1.v1
ORDER BY t1.id; --t2.id改成了t1.id

2、永久解决方案

申请补丁包或者升级数据库版本。

相关推荐
AIgorithmGEEK8 小时前
MySQL 索引全解(下):建、查、删实战与知识速查表
数据库·mysql·b+树·索引
唠点键盘之外的10 小时前
26 向量数据库实战:从 0 搭一条能用的检索链路(pgvector + Spring AI)
数据库·人工智能·spring
云和恩墨11 小时前
数据库监控简史:监控不止于告警——从图表大爆发到健康管理闭环
数据库
ly768911 小时前
MongoDB 事务开销实测:快照隔离下的写冲突、重试与分片事务边界
数据库·mongodb·事务·分片集群·快照隔离·写冲突
豆角焖肉11 小时前
Spring AOP 自定义注解实现系统操作日志
数据库·自定义注解·springaop·操作日志·aop 切面
金伟API102412 小时前
不会写复杂SQL怎么办?
数据库·sql
执笔为剑12 小时前
2.1.2-1、V8R3迁移到V8R6-Oracle兼容特性
数据库
江湖有缘13 小时前
Docker实战 | 使用Docker部署rmoments社交平台
jvm·docker·oracle
geovindu13 小时前
sql:Search-Optimized SQL Queries using mysql 9.0
android·数据库·sql·mysql·数据库开发·数据库架构
for_ever_love__13 小时前
MySQL SELECT 与 WHERE 优化实战:可搜索条件、联合索引与执行计划
数据库·mysql·oracle·select·where·条件优化·查询优化技巧