Oracle性能优化之内存管理
Oracle实例中的内存使用分为两类:程序全局区(program global area, PGA)和系统全局区(system global area, SGA)。前者专门供每个会话使用,后者由所有Oracle进程共享。
对于PGA_AGGREGATE_TARGET参数的设置,Oracle提供的建议方案,如下:
1.对于OLTP系统
PGA_AGGREGATE_TARGET = (<Total Physical Memory > * 80%) * 20%
2.对于DSS系统
PGA_AGGREGATE_TARGET = (<Total Physical Memory > * 80%) * 50%
注:OLTP与DSS区别,可参考链接:https://blog.csdn.net/MyySophia/article/details/78843208
也就是说,对于一个单纯的数据库服务器,通常我们需要保留20%的物理内存给操作系统使用,剩余80%可以分配给Oracle使用。Oracle使用的内存分为两部分SGA和PGA,那么PGA可以占用Oracle消耗总内存的20%(OLTP系统)至50%(DSS/OLAP系统)。
当然,这只是一个建议设置,更进一步的我们应该根据数据库的具体性能指标来调整和优化内存的使用。
今日也特意咨询公司性能调优部的一位性能调优专家:根据本公司业务实践经验,通常将Oracle内存调整如下:
pga_aggregate_target =物理内存大小的20%
sga_target =物理内存大小的60%
sga_max_size =物理内存大小的60%
Get!
内存设置方法如下:
1. 调整PGA内存的参考命令如下:
alter system set workarea_size_policy=auto SCOPE=SPFILE; #默认auto,表示Oracle可以根据需要,将PGA分配给会话,同时力求将PGA分配总量保持在pga_aggregate_target范围内
alter system set pga_aggregate_target=物理内存大小的20% SCOPE=SPFILE;
2. 调整SGA内存的参考命令如下:
ALTER SYSTEM SET SGA_TARGET=物理内存大小的60% SCOPE=SPFILE;
ALTER SYSTEM SET SGA_MAX_SIZE=物理内存大小的60% SCOPE=SPFILE;
在上述命令中:
SCOPE指的是修改范围,一共有三个值分别是SPFILE,BOTH和MEMORY
SPFILE:指修改服务器参数文件中的数据。
MEMORY:指修改内存中的数据,对于要重启数据库才生效的参数,该值不可用
BOTH:指同时修改服务器参数文件和内存中的数据。
在修改以上两个值时需要注意,SGA_MAX_SIZE必须大于或者等于SGA_TARGET。
3. 重启数据库
SQL> shutdown immediate
SQL> startup
查看Oracle内存使用情况:
1. 查看当前系统PGA的信息
SELECT * FROM V$PGASTAT;
2. 查看当前系统SGA的信息
select name,bytes/1024/1024 as "Size(M)" from v$sgainfo;
3. PGA、SGA应用状况查询
select name,total,round(total-free,2) used, round(free,2) free,round((total-free)/total*100,2) pctused from
(select 'SGA' name,(select sum(value/1024/1024) from v$sga) total,
(select sum(bytes/1024/1024) from v$sgastat where name='free memory')free from dual)
union
select name,total,round(used,2)used,round(total-used,2)free,round(used/total*100,2)pctused from (
select 'PGA' name,(select value/1024/1024 total from v$pgastat where name='aggregate PGA target parameter')total,
(select value/1024/1024 used from v$pgastat where name='total PGA allocated')used from dual);
本文来自博客园,作者:查拉图斯特拉面条,转载请注明原文链接:https://www.cnblogs.com/n00dle/p/16544962.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)