一 问题描述
有同事反馈,程序连接数据库报错:
ORA-04031: 无法分配 3896 字节的共享内存
用navicat连接oracle,也报如下错误:
查一下当前shared pool的大小:
SQL> select sum(bytes)/1024/1024 mb from v$sgastat where pool='shared pool';
MB
----------
5760
二 解决办法
2.1 调大sga参数值
--这里调整为12G,需要确保系统可用内存足够
alter system set sga_max_size=12G scope=spfile;
alter system set sga_target=12G scope=spfile;
--备注,我操作的环境是memory_target=0,如果memory_target不为0,还需要增大这个参数的值。
/*
假如执行上述命令的时候也报ORA-04031的错误,则先强制关下库,重启库,释放下内存:
shutdown abort;
startup;
*/
2.2 重启数据库,使参数修改生效
shutdown abort;
startup;
#检查修改是否生效
show parameter sga;