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