本文内容来自YashanDB官网,原文内容请见 https://www.yashandb.com/newsinfo/7773551.html?templateId=171...

问题现象

1、共享集群中,创建用户卡住

2、查询表或视图报错

问题的风险及影响

1、共享集群中,create table、user等,因为需要等其他节点返回消息,如果某个节点dc不够,则会卡住。

2、查询创建等报错,影响业务使用。

问题影响的版本

23.2.7.100及之前的所有版本

问题发生原因

dc pool不足

解决方法及规避方式

1、如果是sql pool占用了share pool的剩余空间,可以先清理share pool

alter system flush shared\_pool;

如果有用,可以不重启。

2、如果条件允许,增大share pool :

alter system set SHARE\_POOL\_SIZE=8G scope=spfile;

调整dc占比:

alter system set SQL\_POOL\_SIZE=xx(默认50) scope=spfile;

alter system set DICTIONARY\_CACHE\_SIZE=xx(默认25) scope=spfile;

需要重启。

问题分析和处理过程

1、查看alert.log,发现报错

2、查看视图

v$share\_pool

可以看到share pool中 DICTIONARY CACHE POOL占用的空间,和剩余SHARE POOL 的空间。

当SQL POOL 和DICTIONARY CACHE POOL不够时,会用剩余的SHARE POOL

v$global\_mpool

可以看到SQL POOL 和DICTIONARY CACHE POOL的使用情况。

v$dict\_cache

查看各个表dc的使用情况,通过查看这个视图,发现表的dc都被占用情况,之后再分析导致该情况的原因。

ref\_Count表示该表dc的引用次数,只有当ref\_Count=0时,改表dc才可以淘汰使用。

memory\_context\_used字段代表每个dc占用的空间大小,可以用该字段看到每张表的dc占用情况。

select count(*) from v$dict\_cache where ref\_Count= 0 ;

select count(*) from v$dict\_cache where ref\_Count > 0 ;

select sum(memory\_context\_used) from v$dict\_cache where memory\_context\_used is not null

dba\_tab\_statistics

-- 查看上一次执行统计信息的时间

Select timestamp(LAST\_ANALYZED) from dba\_tab\_statistics where LAST\_ANALYZED is not null order by 1 desc limit 10;

3、查看run.log


YashanDB
1 声望0 粉丝

崖山数据库系统YashanDB是深圳计算科学研究院自主设计研发的新型数据库管理系统,融入原创的有界计算、近似计算、并行可扩展和跨模融合计算理论,可满足金融、政企、能源等关键行业对高性能、高并发及高安全性的...