ITPub博客

首页 > 数据库 > Oracle > 内存_管理总结

内存_管理总结

原创 Oracle 作者:lusklusklusk 时间:2016-05-24 12:04:15 0 删除 编辑

linux下,以下两个命令都可以查看内存信息,结果类似,但是在oracle中还是看下者为好,因为有PageTables、HugePages_Total等信息
free -m
cat /proc/meminfo


MEMORY_MAX_TARGET
specifies the maximum value to which a DBA can set the MEMORY_TARGET initialization parameter

MEMORY_TARGET specifies the Oracle system-wide usable memory. The database tunes memory to the MEMORY_TARGET value, reducing or enlarging the SGA and PGA as needed.

 

memory_max_target的值必须大于MEMORY_TARGET,否则会报错ORA-00837: Specified value of MEMORY_TARGET greater than MEMORY_MAX_TARGET

 

ORACLE 数据库从11g 版本开始,引入了一个自动内存管理(Automatic Memory Management) AMM特性,该特性需要更多的共享内存(/dev/shm),因此如果决定应用该特性的话, 必须要确保/dev/shm大于MEMORY_MAX_TARGET MEMORY_TARGETMEMORY_MAX_TARGET 如果超过/dev/shm的大小,安装会报错ORA-00845通过AMM这个功能DBA只需要设置memory_target一个参数就可以完成整个数据库实例内存的配置,在11.2.0.2版本之前,DBCA建库默认就是AMM管理。同样如果你设置AMM后,也设置了SGA_TARGETpga_aggregate_target等参数,那么这些参数会作为最小值要求。AMM最大的问题是不能使用大页内存。memery_target不等于0,就开启了AMM

 

可以vi /etc/fstab修改/dev/shm这个共享内存文件系统的大小:

tmpfs   /dev/shm   tmpfs   defaults,size=XXG   0 0

 

 

针对于Oracle的内存分配方式,推荐在核心系统上:配置PGA_AGGREGATE_TARGETSGA_TARGET,并为buffer cacheshared poolSORT_AREA_SIZE设定最小值的方式。AMM这种内存分配方式,由于不能使用大页,建议不要去用。

 

如果内存足够,想偷懒则配置MEMORY_TARGET,并为PGA_AGGREGATE_TARGETSGA_TARGET设定最小值

 

 

SGAPGAUGA都是Oracle管理的内存区。

  SGASystem Global Area),即系统全局区,Oracle中最重要的内存区。

  PGAProcess Global Area),即程序全局区,一个进程的专用的内存区。

  UGAUser Global Area),即用户全局区,与特定的会话相关联。

  专用服务器连接模式,UGAPGA中分配。

  共享服务器连接模式,UGASGA中的Large Pool中分配。

 

 

 

show parameter memory,一个memery_targetmemory_max_target

AMMmemery_target不等于0,就开启了AMM

memery_target=sga+pga

memery_target一般不超过操作系统物理内存的80%

如果memery_target设置为1Gsga设置为600Mpga设置为300M,则sga的范围是600--700M1G-300M),pga范围是300--4001G-600M

如果memery_target设置为0,则必须手动设置sgapga的大小,否则sgapga都将是0

联机事务中,sgamemery_target70%-80%,pgamemery_target20%-30%

非联机事务,sgamemery_target50%-60%,pgamemery_target40%-50%

 

 

oracle11g设置了memory_target参数后,会自动设置sgapga参数,已经实验验证

一开始memory_target1500Mshow parameter sga,看到sga800M

修改memory_target2500Mshow parameter sga,看到sga1500M

但是最好设置一下sga_targetpga_target的值,因为有sga_max时,sga_target就是下限值了

 

 

 

 

SGA

show parameter sga,一个sgq_targetsga_max_size

同理,sga_target=SHARED_POOL_SIZE+DB_CACHE_SIZE+LARGE_POOL_SIZE+JAVA_POOL_SIZE

如果sga_target设置为0,则必须手动设置shared poolbuffer等大小,否则shared poolbuffer等都将是0

ASMMsga_target不等于0,就开启了ASMM

如果memery_target=1G,开启了AMM的同时,设置sga_target等于0pga=500M,则sga的值范围是(0-500M)

 

 

PGA

PGA_AGGREGATE_TARGET-此参数用来指定所有session总计可以使用最大PGA内存。这个参数可以被动态的更改。

SORT_AREA_SIZE,一个会话排序时能够使用的最大内存值,当PGA自动管理时所有会话的工作区大小的调整都是自动的,在该模式下运行的所有会话都会忽略SORT_AREA_SIZE参数的值,但是会把该值当成最小值,默认最大只能用到1G

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30126024/viewspace-2105905/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 内存_SGA
请登录后发表评论 登录
全部评论
Welcome to Lukes DB HOME。11G OCM, 5年以上DBA工作经验,博客仅记录自己的一个学习过程,不代表完全准确,如有需要,欢迎转载。

注册时间:2015-02-02

  • 博文量
    349
  • 访问量
    350751