ITPub博客

首页 > 数据库 > Oracle > Oracle SGA大小调整策略

Oracle SGA大小调整策略

原创 Oracle 作者:wddwr7307914 时间:2021-03-06 16:25:47 0 删除 编辑

#查看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';

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

上一篇: Oracle常用函数
请登录后发表评论 登录
全部评论
中国DBA联盟(ACDU)成员,Oracle PostgreSQL ACE,CSDN博客专家及B站知名UP主,全网粉丝10万+,目前服务于工业互联网,擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复,安装迁移,性能优化、故障应急处理。

注册时间:2020-06-13

  • 博文量
    203
  • 访问量
    213261