oracle中增加pga和sga

Posted 开始认识

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中增加pga和sga相关的知识,希望对你有一定的参考价值。

修改oracle数据库SGA和PGA大小

SGA的大小:一般物理内存20%用作操作系统保留,其他80%用于数据库。
SGA普通数据库可以分配40%-60%之间,PGA可以分配20%-40%之间。

1、以system的身份登录
并查看SGA信息:
SQL>show parameter sga;
查看PGA信息:
SQL>show parameter pga;


2、修改sga_target
SQL>alter system set sga_target=436M;

3、修改sga_max_size
SQL> alter system set sga_max_size=436M scope=spfile;
www.2cto.com
4、重启数据库使其生效:
SQL>shutdown immediate;
注意,重启前一定先完成上述两部操作,且sga_target不得大于sga_max_size,一般保持两者相等。否则可能导致数据库无法启动。
SQL>startup

5、查看SGA是否生效:
SQL>show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- -----
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 436M
sga_target big integer 436M


6,查询PGA大小
SQL> show parameter workarea
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
workarea_size_policy string AUTO


SQL> show parameter pga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 90M

pga_aggregate_target默认特别小只90M
当然太小了,因为我们当前使用的是非生产环境,90M无所谓,因为我们没有什么连接,到底需要满足多少连接到底该设多大呢

一般是物理内存的80%*20%是16%,一般生产里面都是16G的空间,16G*16% = 2.56G 接近3G给pga

_pga_max_size参数:是每一个会话能够分配的最大空间的数量,这个值不是固定的

SQL>select ksppinm "Name", ksppstvl/1024/1024 ||‘M‘ "Value", ksppdesc "Desc" from x$ksppi x, x$ksppcv y where x.indx = y.indx and ksppinm =‘_pga_max_size‘;
结果
Name Value Desc
------------- ------ --------------------------------------------------
_pga_max_size 200M Maximum size of the PGA memory for one process

从结果看这个参数是200M(默认值),也就是对每个session来讲最大只能分200M,对当前来讲每个session最多在pga空间只能分200M


7,修改PGA的自动管理方式和大小
SQL> alter system set workarea_size_policy=auto scope=both;
SQL> alter system set pga_aggregate_target=3072m scope=both;
修改后重启数据库。

 

线上oracle数据库建议内存修改方式:

1),系统总内存:64G
2),目前数据库使用内存:
sga:2G
pga:90M
3),建议调整后的大小:
sga:30G
pga:10G

4),查看具体参数:

SQL> show parameter sga; --------------查看sga的区域大小
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 2G
sga_target big integer 2G


SQL> show parameter pga; --------------查看pga的默认区域大小
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 90M


SQL> show parameter workarea; ----------查看oracle内存区域的工作方式(确保是在自动的模式下)
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
workarea_size_policy string AUTO

5),修改参数:
SQL> alter system set sga_max_size=30720M scope=spfile; ---------------先修改最大pga的大小

SQL> shutdown immediate;----------- 重启,使得以上的修改生效
SQL> startup
SQL> alter system set sga_target=30720M; --------- 接着修改sga的大小(该大小不能超过以上设置的最大的pga的大小。否则报错)

SQL> alter system set pga_aggregate_target=10240M scope=both;

SQL> shutdown immediate;----------- 重启,使得以上的修改生效
SQL> startup

6),查看修改后的效果
SQL> show parameter sga;
SQL> show parameter pga;









































































以上是关于oracle中增加pga和sga的主要内容,如果未能解决你的问题,请参考以下文章

Oracle PGA作用_work_mode

Oracle PGA

Oracle12c 新特性:限制PGA使用内存的大小

Oracle 12C中pga_aggregate_limit参数的修改

Oracle内存结构:SGA PGA UGA

Oracle12C 调整 sga pga 调优记录