Oracle RDBMS Kernel Executable占用内存问题
背景:
某旧项目发现oracle应用占用内存过高,客户要求消除告警隐患
环境:
系统:windowsserver2008r2
oracle:11.2.0.4.0
排查:
任务管理器
进入数据库查看
可以看到内存是手动配置的
处理
调整为oracle自动管理内存,限制内存使用上限。从图上可以看出,应该还有3个实例在跑,限制内存使用上限为45G,从业务上看,请求量不大。为避免调整参数后,启动不起来,准备一下spfile文件。
参数调整
alter system set memory_max_target=45G scope=SPFILE;
ALTER SYSTEM SET SGA_TARGET =0 SCOPE = SPFILE;
ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 0 SCOPE = SPFILE;
重启数据库
shutdown immediate
startup
异常情况处理
如果调整参数后,实例无法启动,要查看日志,看是sga或者pga哪个参数调整有问题,修改spfile后,再启动数据库。参考如下:
https://www.cnblogs.com/markkang/p/11925406.html
(1). 在sqlplus里面由spfile创建pfile文件,为了方便,自定义pfile的存放目录为“e:\\ini.ora.temp”,不指定会默认为spfile同目录,本人在windows上的12c目录为"{oracle安装目录}\product\12.2.0\dbhome_1\database”目录下的SPFILEORCL.ORA,文件名遵循格式spfile${SID}.ora。
create pfile='e:\\ini.ora.temp' from spfile;
(2). 因为pfile为文本文件,用文本应用程序打开你指定的路径文件来进行编辑,修改sga_max_size和sga_target为0,保存文件。
(3).由pfile来重建spfile文件
create spfile from pfile='e:\\ini.ora.temp';
(4).默认基于新的spfile,启动Oracle实例。
startup