暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle SGA大小调整策略

IT 邦德 2021-07-20
4355

微信公众号:IT邦德 QQ:2243967774

QQ群:168797397

B站直播间地址:搜索jeames007


#查看SGA信息

SYS@PROD> show parameter sga

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

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

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

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

SYS@PROD> show parameter spfile

    #调整原理
    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;

            因为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

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

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

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


    文章转载自IT 邦德,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论