目录
一、环境信息
|------|--------------------------|
| 名称 | 值 |
| 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 | 英方数据对比功能建议不在开市期间进行,避免和业务老师出现资源争抢。 |