pga_aggregate_limit 参数的测试

RDBMS 12.2.0.1

pga_aggregate_limit :该参数是12.1版本开始有得新参数。对于数据库可以使用得PGA总量做出了一个硬性限制。
该参数会被设置为以下值中得较大的一个
2G , pga_aggregate_target初始化参数值的2倍,3MB乘以processes初始化参数的值。

当达到限制的时候,数据库引擎会中止调用甚至是杀掉会话。为了选择要处理的会话,数据库不考虑最大的PGA利用率。而是会考虑使用最多的不可调整内存总量的会话。当调用被中止时,会出现ORA-04036告警,当会话被kill掉的时候,会触发ORA-03113错误。并在alert log中写入那些会话被kill

关于这个参数的值,可以参考MOS :使用数据库参数 PGA_AGGREGATE_LIMIT 限制进程大小 (文档 ID 1602891.1)

该参数的值的算法是这样的:

在Oracle 12.1版本: PGA_AGGREGATE_LIMIT默认为如下值中的最大者:

  • 2 GB
  • 200% 的 PGA_AGGREGATE_TARGET
  • (PROCESSES 初始化参数设置值)* 3 MB

该参数不会超过物理内存大小减去总 SGA 大小的 120%。

在Oracle 12.2版本: PGA_AGGREGATE_LIMIT的默认值为:

* 如果设置了MEMORY_TARGET, 那么PGA_AGGREGATE_LIMIT默认值为MEMORY_MAX_TARGET的值.
* 如果MEMORY_TARGET没有设置, 那么PGA_AGGREGATE_LIMIT默认值为 200%的PGA_AGGREGATE_TARGET值.
* 如果MEMORY_TARGET没有设置, 并且PGA_AGGREGATE_TARGET被显式的设置为0, 那么PGA_AGGREGATE_LIMIT的默认值为90%的物理内存减去SGA的大小.
在以上所有情况中,默认的PGA_AGGREGATE_LIMIT至少是2GB 并且至少是数据库参数PROCESSES乘以3MB的大小.

注意: 在 12.1 或者 12.2中,如果指定PGA_AGGREGATE_LIMIT的值为0,则表示实例所使用的 PGA 内存总量没有限制。

--- 以下为测试

--修改之前的参数设置。 2G, pga_aggregate_target的2倍是20M,processes*2M =640M .选择最大,所以pga_aggregate_limit的值是2G 。

SYS@test> show parameter pga

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_limit                  big integer 2G
pga_aggregate_target                 big integer 10M
SYS@test> show parameter processes

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes                      integer     1
asm_io_processes                     integer     20
db_writer_processes                  integer     1
gcs_server_processes                 integer     0
global_txn_processes                 integer     1
job_queue_processes                  integer     4000
log_archive_max_processes            integer     4
processes                            integer     320
SYS@test>

-- 修改processes参数为2000 试试

SYS@test> alter system set processes =2000 scope = spfile;

System altered.

-- 然后再次查看pga相关参数, 发现PGA的limit为6000M,processes为2000. 2000*3M=6000M 是2G,pga_aggregate_target*2中最大的值。所以pga_aggregate_limit被设置成了6000M。

SYS@test> show parameter pga

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_limit                  big integer 6000M
pga_aggregate_target                 big integer 10M
SYS@test> show parameter processes

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes                      integer     1
asm_io_processes                     integer     20
db_writer_processes                  integer     1
gcs_server_processes                 integer     0
global_txn_processes                 integer     1
job_queue_processes                  integer     4000
log_archive_max_processes            integer     4
processes                            integer     2000
SYS@test>

可以将pga_aggregate_limit的值设置为0. 但是不能设置为比默认值低的值。(修改之前的值是6000M,其被认为是默认值)

SYS@test> alter system set pga_aggregate_limit=0;

System altered.

SYS@test>

SYS@test> alter system set pga_aggregate_limit=1024M;
alter system set pga_aggregate_limit=1024M
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-00093: pga_aggregate_limit must be between 6000M and 100000G


SYS@test>

END

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值