PGA管理 pga_aggregate_limit

2023年 10月 30日 51.7k 0

  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级别进行设置。

 

 

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论