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

PGA管理 - pga_aggregate_limit

原创 不吃草的牛_Nick 2023-10-29
1547

  pga_aggregate_limit

pga_aggregate_limit初始化参数是12.1版本中最新出现的。它对数据库实例可以使用的PGA总量做出了一个硬性限制。这个参数很有用,因为就像上一节描述的那样,通过pga_aggregate_target初始化参数设置的值只是一个目标值,而非硬性限制。在12.1版本中,如有必要,可以同时指定一个硬性限制。

 

pga_aggregate_limit初始化参数的默认值被设置为以下值中较大的那一个:

Ø  2GB

Ø  pga_aggregate_target 初始化参数的值的两倍

Ø  3 MB乘以processes 初始化参数的值

 

因此,默认情况下会强加一个限制。要避免限制就必须将这个参数设置为0。将这个参数设置为一个比默认值低的值(除了在初始化文件或服务器参数文件中)是不可能的。在尝试设置比默认值低的限制时会引发以下错误:

SQL> ALTER SYSTEM SET pga_aggregate_limit = 1G;

ALTER SYSTEM SET pga_aggregate_limit = 1G

 

ORA-02097: parameter cannot be modified because specified value is invalid

ORA-00093: pga_aggregate_limit must be between 2048M and 100000G

 

当达到限制时,数据库引擎会终止调用甚至是杀掉会话。为了选择要处理的会话,数据库引擎不考虑最大的PGA利用率。相反,数据库引擎会考虑使用最多的不可调整内存总量的会话。当调用被终止时,会引发以下错误:

ORA-04036:PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT

 

当会话被杀掉时,会引发一个典型的ORA-03113 错误:

ORA-03113: end-of-file on communication channel

Process ID: 5125

Session_id: 17 Serial number: 39

 

此外,会将类似下面这样的对应的信息写入到alert.log中 :

PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT of 2048 MB

Immediate Kill Session#: 17, Serial#:39

Immediate Kill Session: sess: 0x77eb74780S pid: 5125

 

pga_aggregate_limit 初始化参数是动态的,并且只能在实例级别更改。在12.1版本的多租户环境 下,也可以在PDB级别进行设置。


  sort_area_size

如果启用了手工PGA管理,sort_area_size 初始化参数指定(按字节)用于合并联接、排序以及聚合(包括散列分组)的工作区的大小。注意,这是一个工作区的大小,而一个单独的会话可能会分配多个工作区(详见第14章)。因此,用于整个系统的PGA总量取决于分配的工作区的数量而不是会话的数量。

 

默认值是64KB。尽管几乎不可能给出关于建议值的一般性建议,默认值确实很小,而通常至少需要使用512KB/1MB。值得注意的是,工作区并非总是完全分配的。换句话说,通过sort_area_size初始化参数指定的值只是一个限制。因此,指定一个比实际需要大的值不一定会有问题。

 

sort_area_size 初始化参数是动态的,并且可以在实例和会话级别修改。在12.1版本的多租户环境下,也可以在PDB级别进行设置。

 

 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论