写点什么

【YashanDB 知识库】表数据量不多,lob 数据段有大量空间,插入数据报错

作者:YashanDB
  • 2024-09-06
    广东
  • 本文字数:640 字

    阅读完需:约 2 分钟

问题现象

clob 段异常增长,导致磁盘空间满,应用无法使用数据库。

问题风险及影响

lob 段空间未复用,lob 段空间扩张很大,影响磁盘占用合理分配。


空间不够,插入报错,影响业务。

问题影响的版本

所有版本

问题发生原因

lob 类型删除后,空间不会立即复用,需要等待 UNDO_RETENTION 时间后,空间才会复用。


普通的数据类型表空间段,普通数据被删后插入到 undo 空间,删除后就可以复用。


lob 数据因为太大,被删除后,lob 自己就是一份 undo 数据,不插入到 undo 空间,所以需要保留 undo_retention 时间后,才能复用。

解决方式及规避方法

1、把 tablespace 的 maxsize 小于磁盘空间,按具体业务表大小配置,


2、undo_retention,如果业务插入数据频繁,且插入数据量多,建议配置小一些,按具体业务插入数据量。


3、如果插入数据量多,磁盘空间建议配置大些

问题分析和处理过程

表空间不够的表现



创建一个 maxsize 为 3G 的表空间,mydata,在该表空间创建表 tmp1,该表有 3 个 clob 字段,如上。


做如下操作:


1、往 tmp1 表插入数据


2、delete table tmp1;


3、查看 dba_segments 视图 mydata 中的表空间段。


循环做上面 3 个操作,最后报错 YAS-02007 no free extent in tablespace MYDATA,如下图所示:



磁盘空间不够的表现


tablespace 不做限制,磁盘空间满了之后,插入数据的表现


create tablespace mydata datafile '?/dbfiles/mydata' size 20G autoextend on next 128M maxsize unlimited databucket '?/local_fs/mydata';


如下,数据库变成 abnormal 状态,插入报错返回。




解决方式,删掉一些日志或者不用的文档,释放空间,则能恢复。

用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
【YashanDB知识库】表数据量不多,lob数据段有大量空间,插入数据报错_yashandb_YashanDB_InfoQ写作社区