添加索引时报磁盘空间不足

【 使用环境 】 测试环境
【 OB or 其他组件 】
【 使用版本 】4.2.2
【问题描述】添加表索引是报错 server out of disk space,磁盘空间未满,ocp上查看磁盘资源也是未满的
【复现路径】问题出现前后相关操作
【附件及日志】


麻烦确认下黑屏添加索引正常吗?

如果黑屏执行失败的话,麻烦取一下执行节点的observer日志,另外查一下执行sql的sqlaudit信息:select * from gv$sql_audit where query_sql like ‘%xxxxx%’

以及查询这个视图查看磁盘占用情况GV$OB_SSTABLES
https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001700809

黑屏下一样的报错

如果黑屏执行失败的话,麻烦取一下执行节点的observer日志,另外查一下执行sql的sqlaudit信息:select * from gv$sql_audit where query_sql like ‘%xxxxx%’

以及查询这个视图查看磁盘占用情况GV$OB_SSTABLES
https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001700809

这个命令是这那个租户的数据库中查询

sys租户就行,还有麻烦在ocp上看下data_disk_usage_limit_percentage参数设置


sys租户执行sql还是找不到表

GV$OB_SQL_AUDIT
看下对应的报错sql

已经查到执行sql的flt_trace_id,但是用obd obdiag analyze flt_trace进行分析报错


image

obdiag这里使用=,不要使用空格断开,

针对data_disk_usage_limit_percentage可以调大对应的参数尝试,可以参考https://ask.oceanbase.com/t/topic/35603335/4?_gl=1

添加索引失败,立刻执行一下,
obd obdiag analyze log <集群名> --since 10m

再执行一次加索引,有可能是临时文件超过100多GB了。加索引的时候,监控磁盘使用率。你内存太小了,加索引需要排序,work area工作区肯定不够。

还有,我看/data还有400多GB可用,你再把datafile_disk_percentage参数调大点,或者如果你设置了datafile_size,就调整这个,增大到600G

如果还不行,查分单表为分区表,创建local索引

1 个赞

之前一个表分区后查不出来数据,表分区后sql查询超时刚才把磁盘增大到600g突然发现,查询好了,这是什么原理 :sweat_smile:

创建索引如果内存不够,会用到临时文件的,假如表数据量很大,临时文件就会增大,按照你ocp中磁盘资源的截图,observer可用磁盘还剩100GB多点,所以推测是索引需要的临时文件大于100GB,报错后临时文件就释放的,所以报错后查observer的磁盘使用率是查不出来的。查日志会有记录

1 个赞