Oracle设置“服务”占用,分配内存限制
时间:11-21来源:作者:点击数:
Oracle版本:Oracle12C
问题现象
- 开启Oracle的服务后,占有极大的内存,如下图:
原因分析
- 理论上,Oracle自身服务需要占用内存是正常情况。在不使用的时候,可以通过关闭服务来解决。
- 如果需要Oracle长时间开启,可以通过减少sga的内存占用,来解决这一问题。但通过这一手段,必然会降低Oracle使用性能!!
解析:
- 处理步骤
- 用dba身份进入oracle,可以使用sqlplus修改(sqlplus 账号/密码 as sysdba);
- 若使用PL/SQL,可以在Command Window执行;
- 在cmd中输入:show parameter sga; --显示内存分配情况;要修改的就是红框部分;
- 使用:alter system set sga_max_size=200m scope=spfile; --修改占用内存的大小
- 配置完成后,出现“系统更改”字样,表示修改完成,重启Oracle服务即可;
- 这种方式,是直接修改sga的内存占用。如果对Oracle内存不太了解的话,这里的修改要非常谨慎!!!
- 所以,要使用Oracle的自动分配内存机制!
- 继续保持Oracle的登陆状态,在cmd输入:show parameter memory ---查看memory占用的内存
- Memory是Oracle的内存自动管理阀门。通过修改该属性,可以降低Oracle内存的总占用量,之后Oracle会根据此值,自动分配其他配置的所需内存!
- 修改这个值之后,还可以修改sga_max,要让sga的值小于memory的值。但这条不是必须的。一般只要修改memory的值即可!
- Cmd操作:alter system set memory_max_target=2000m scope=spfile;
- 修改完毕后,重启服务;
- 查看Oracle所占内存,已经得到缓解,同时,如果再次通过show parameter sga;命令,查看sga的值,会发现已经自动降低。这就是memory的功劳了。
效果:
附录:
- 在此例里面,我将memory的值设定在500M
方便获取更多学习、工作、生活信息请关注本站
微信公众号