达梦数据库-报错-06-[-502]OUT OF TEMPORARY DATABASE SPACE(临时表空间不足)

目录

一、环境信息

二、说点什么

三、介绍

1、临时表空间

(1)介绍

(2)参数

四、排查SQL

五、场景一

1、问题描述

2、报错分析

3、解决方法

六、场景二

1、问题描述

2、报错分析

3、解决方法


一、环境信息

|------|--------------------------|
| 名称 | 值 |
| CPU | x86 |
| 操作系统 | KylinV10 |
| DM版本 | DM Database Server 64 V8 |

二、说点什么

最近生产业务频繁出现报错:[-502]OUT OF TEMPORARY DATABASE SPACE。必须得记录一下处理过程,都和英方同步软件有关,这里只是表名问题的分析和处理过程,英方同步软件本身还是很nice的,求生欲拉满。

三、介绍

1、临时表空间

(1)介绍

作用维度 具体描述
核心作用 为内存不足的SQL操作提供磁盘交换空间
处理的典型操作 1. 排序操作ORDER BY, GROUP BY, DISTINCT, 创建索引 2. 哈希连接HASH JOIN 3. 合并连接MERGE JOIN 4. 位图操作 :位图索引创建与合并 5. 临时LOB :大型临时LOB对象 6. 全局临时表:在临时表创建过程中,不会像永久表和索引那样自动分配数据段,而是仅当第一次执行 DML 语句时,才会为临时表在临时表空间中分配空间
与结果集的关系 不直接存储最终结果集 ,而是存储计算过程中的中间数据
管理特性 1. 临时文件 :使用 tempfile,不记录redo日志,可大幅提高性能。 2. 空间分配 :按需动态分配和释放,但已分配的空间会被标记为可重用。 3. 默认表空间 :数据库有一个TEMP表空间供所有用户使用。 4. 多个临时表空间:可为不同用户组分配不同的临时表空间以隔离负载。

(2)参数

|------------------|-----|-------------------------------------------------------------------------------------------------|
| 参数名 | 默认值 | 描述 |
| TEMP_SIZE | 10 | 静态 默认创建的临时表空间大小,单位 MB。取值范围 10~1048576 |
| TEMP_SPACE_LIMIT | 0 | 动态,系统级 临时表空间大小上限,单位 MB。0 表示不限制临时表空间大小。 取值范围 0~4294967294。 注:TEMP_SPACE_LIMIT 一定要大于等于 TEMP_SIZE |

四、排查SQL

|----------------------------------------------------------------------------------------------------------------------------------------------|-------------------------|
| 链接 | 描述 |
| 达梦数据库-学习-16-常用SQL记录(持续更新) | 查看其中的SQL:查看会话SQL执行资源情况。 |
| V$SESSIONS中的字段TMP_USED_EXTENT_NUM | 显示会话中使用的临时表空间所占用的总簇数。 |

五、场景一

1、问题描述

业务老师表示上周应用和英方同步工具同事报错提示:[-502]OUT OF TEMPORARY DATABASE SPACE。

2、报错分析

由于是上周的问题,我们现在查只能根据现有情况去分析历史情况。

挖掘出的归档日志数据是存放在临时缓冲区中,通过截图SQL可以看出日志挖掘的相关语句,SQL临时缓冲区逻辑读250171页,数据库页大小为32K,共需读取7.6G的内存,临时缓冲区大小为32G,英方这边一共开启四个会话共需30.4G,还不算其他SQL的占用就已经接近临时缓冲区限制,数据就会放入临时表空间中进行计算,英方同步软件上周在补数,开大线程数或者一次挖掘的日志过多来提升效率,导致超过临时表空间限制,提示上述错误。

3、解决方法

|----|---------------------------------|
| 序号 | 描述 |
| 1 | 降低英方同步软件的源端(达梦端)线程数或减少每次挖掘的日志数。 |
| 2 | 提升RECYCLE临时缓冲区大小的尺寸。 |

后续英方老师也确认上周在做大量的补数,符合我们的预测。

六、场景二

1、问题描述

业务老师表示最近英方报错提示:[-502]OUT OF TEMPORARY DATABASE SPACE。

2、报错分析

英方I2用户执行数据对比SQL把临时表空间占满,四百多万数据需要排序返回。44047个簇,一个簇32个页,一个页32k,一个SQL用了43g的临时表空间,共三个SQL差不多吃满临时表空间150G,再来一个线程就提示上述错误。

3、解决方法

|----|-----------------------------------|
| 序号 | 描述 |
| 1 | 对于排序列建立索引,避免排序操作符,减少临时表空间的使用。 |
| 2 | 英方数据对比功能建议不在开市期间进行,避免和业务老师出现资源争抢。 |

相关推荐
小Pawn爷2 分钟前
2.Docker的存储
运维·docker·容器
CaracalTiger2 分钟前
OpenClaw-VSCode:在 VS Code 中通过 WebSocket 远程管理 OpenClaw 网关的完整方案
运维·ide·人工智能·vscode·websocket·开源·编辑器
qq_5470261793 分钟前
LangChain 1.0 核心概念
运维·服务器·langchain
VekiSon5 分钟前
Linux内核驱动——设备树原理与应用
linux·c语言·arm开发·嵌入式硬件
数据知道10 分钟前
PostgreSQL 性能优化:连接数过多的原因分析与连接池方案
数据库·postgresql·性能优化
怣5010 分钟前
MySQL子查询实战指南:数据操作(增删改查)与通用表达式
数据库·chrome·mysql
Trouvaille ~10 分钟前
【Linux】进程间关系与守护进程详解:从进程组到作业控制到守护进程实现
linux·c++·操作系统·守护进程·作业·会话·进程组
范纹杉想快点毕业13 分钟前
从单片机基础到程序框架:构建嵌入式系统的完整路径
数据库·mongodb
数据知道16 分钟前
PostgreSQL性能优化:如何定期清理无用索引以释放磁盘空间(索引膨胀监控)
数据库·postgresql·性能优化
喵叔哟17 分钟前
67.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--分摊功能总体设计与业务流程
数据库·微服务·架构