一、首先,用dba身份进入oracle,使用sqlplus修改:
sqlplus sys/密码 as sysdba
sqlplus sys/123456 as sysdba
二、查看当前Oracle占用内存情况
show parameter sga; --显示内存分配情况
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean TRUE
sga_max_size big integer 9728M
sga_target big integer 9728M
unified_audit_sga_queue_size integer 1048576
三、修改Oracle内存占用大小
alter system set sga_max_size=2048m scope=spfile;
alter system set sga_target=2048m scope=spfile;
生效方式说明
1、memory 仅当前生效;
2、spfile 当前不生效;重启后生效(shutdown immediate命令后startup命令||重启OracleServerOrcl服务);
3、both 立即生效;
例:alter system set sga_max_size=504M scope=spfile;
四、重启生效
shutdown immediate; --停止Oracl服务
startup; --启动Oracle服务
或直接在Windows的Services服务面板重启OracleServerOrcl服务
再查看资源管理器,Oracle占用资源便会降至2048M(2GB)。
注意:降低数据库内存占用,所付出的代价是数据库性能的下降,因此修改时不宜调得太小。
参数说明
SGA_MAX_SIZE参数指定实例生命周期内的系统全局区域的最大大小。
注意:只需修改sga_max_size即可(sga_max_size的值需大于等于比sga_target的值,否则就会报错:
ORA-00823: Specified value of sga_target greater than sga_max_size这个异常通常是因为改动了sga_max_size或者sga_target这两个参数值,导致sga_target比sga_max_size值大。
)
五、参考资料
官方文档
database-administrators-guide.pdf
database-concepts.pdf
database-performance-tuning-guide.pdf
博客
1.Oracle占用内存过高解决办法
https://blog.csdn.net/wh445306/article/details/102881209
2.Oracle内存占用高过时的调整策略
https://www.cnblogs.com/dll102/p/14682248.html
3.oracle内存占用过高和修改不当无法启动oracle实例的解决办法
https://www.cnblogs.com/markkang/archive/2019/11/25/11925406.html
4.解决oracle服务占用内存过高的问题
https://blog.csdn.net/huluanchushou/article/details/114264642
5.Oracle数据库OracleServerOral服务占用内存过多解决办法
https://blog.csdn.net/StartFromScrateh/article/details/122524054
6.Oracle数据库ORA-00823: Specified value of sga_target greater than sga_max_size异常解决办法
https://blog.csdn.net/StartFromScrateh/article/details/122525089
7.解决oracle服务占用内存过高的问题
https://cloud.tencent.com/developer/article/1455932
8.sga_target 和sga_max_size 这两个参数有何区别?
https://blog.csdn.net/cuikan2017/article/details/100335745