微信公众号:IT邦德

Oracle SGA大小调整策略_重启


#查看SGA信息

SYS@PROD> show parameter sga

Oracle SGA大小调整策略_数据库_02


#修改SGA必须保持的原则:

1).sga_target不能大于sga_max_size,可以设置为相等。

2).SGA加上PGA等其他进程占用的内存总数必须小于操作系统的物理内存。

#确定启动是用哪个参数文件

SYS@PROD> show parameter spfile

Oracle SGA大小调整策略_oracle_03


#调整原理

1.SGA_MAX_SIZE是静态参数,而SGA_TARGET可以动态修改,当要改的SGA_TARGET值超过SGA_MAX_SIZE的值时,

必须指定scope=spfile,重启后才能修改成功。

如果此时没有设置过SGA_MAX_SIZE得值,那么无论是改大还是改小,重启数据库后,SGA_MAX_SIZE都回跟着SGA_TARGET做调整。

2.当SGA_TARGET设置为零时,表示禁用内存组件由SGA自动管理。

3.当给SGA_TARGET设置非零值时,表示采用内存组件内存由oracle动态调整,如shared pool,db buffer cache等,

这些内存组件只会跟着SGA的大小动态进行调整(增大或减小),与其他值无关

4.如果是先设置了SGA_MAX_SIZE的值,再设置了SGA_TARGET,那么只有当SGA_TARGET设置的值超过SGA_MAX_SIZE的值时,

SGA_MAX_SIZE才会在重启生效后,调整到与SGA_TARGET的值一致,反之则不会改变。总结:SGA_TARGET一定要小于等于SGA_MAX_SIZE,负责重启报错

【调整过程】

1.确认是否可以修改

SYS@PROD> select name,bytes/1024/1024 “size(MB)”,resizeable from v$sgainfo;

Oracle SGA大小调整策略_重启_04


因为SGA_TARGET设置为零时,表示禁用内存组件由SGA自动管理,从上面可以看出Maximum SGA Size不可以调整

2.修改sga_target

SYS@PROD> alter system set sga_target=1312m scope=spfile;

3.重启数据库

SYS@PROD> startup force

3.调整sga_max

SYS@PROD>alter system set sga_max_size=1400m scope=spfile;

SYS@PROD> show parameter sga

Oracle SGA大小调整策略_数据库_05


补充:若启动有报错,用以下方法修改参数重启即可

SYS@PROD> create pfile=’/home/oracle/init1.ora’ from spfile;

SYS@PROD> create spfile from pfile=’/home/oracle/init1.ora’;