Oracle12c新参数PGA_AGGREGATE_LIMIT限制PGA内存总大小

更新时间:2023-07-06 11:28:27 阅读: 评论:0

Oracle12c新参数PGA_AGGREGATE_LIMIT限制PGA内存总open是什么意思
⼤⼩
Oracle 12c 新参数 PGA_AGGREGATE_LIMIT 限制 PGA 内存总⼤⼩
在⾃动 PGA 内存管理模式下, Oracle DB 尝试通过动态控制分配给⼯作区的 PGA 内存量遵从 PGA_AGGREGATE_TARGET 中指定的值。但是,有时候 PGA 内存使⽤量可能会因为以下原因超过 PGA_AGGREGATE_TARGET 指定的值:
•PGA_AGGREGATE_TARGET 是⼀个⽬标,⽽不是⼀个限制。
•PGA_AGGREGATE_TARGET 仅控制可优化内存的分配。
过多的 PGA 使⽤量可能会导致⾼交换率。如果出现 PGA 的使⽤量⼤⼤超过 PGA_AGGREGATE_TARGET 参数的值,就可能产⽣ SWAP ,从⽽影响整个系统的性能,更进⼀步导致 DB hang 住。因此在 Oracle 12c 中引⼊了新的参数 PGA_AGGREGATE_LIMIT ,其可以限制整体 PGA 使⽤量。 PGA_AGGREGATE_LIMIT 限制的是实例消耗的 PGA 的总量。是⼀个硬性限制。 PGA_AGGREGATE_LIMIT 参数是动态参数;修改该参数不需要重新实例。设置 PGA_AGGREGATE_LIMIT 的值时也不需要关⼼是否使⽤了⾃动内存管理。
如果发⽣ PGA 超量使⽤的情况,请考虑使⽤ PGA_AGGREGATE_LIMIT 初始化参数限制整体的 PGA 使⽤量。 PGA_AGGREGATE_LIMIT 允许您针对 PGA 内存使⽤量指定硬限制。如果超过了 PGA_AGGREGATE_LIMIT 值,则 Oracle DB 将中⽌或终⽌使⽤最多不可优化 PGA 内存的会话或进程。⾏查询会被视为⼀个单元。
默认情况下, PGA_AGGREGATE_LIMIT 设置为 2GB 、 PGA_AGGREGATE_TARGET 值的两倍,或者 3 MB 与 PROCESSES 参数值的乘积中较⼤的⼀个。但是,它不会超过物理内存⼤⼩减去 SGA 总⼤⼩的 120% 。默认值写⼊预警⽇志。如果⽆法确定系统物理内存的量,则警告消息将写⼊预警⽇志。
SYS 和后台会话可以不受限制的影响,但是作业队列进程不可以。
在 Oracle 12c R1 之前,没有选项可以⽤来限制和控制 PGA 的⼤⼩。虽然你设置某个⼤⼩为 PGA_AGGREGATE_TARGET 的初始参数, Oracle 会根据⼯作负载和需求来动态地增⼤或减⼩ PGA 的⼤⼩。⽽在 12c 中,你可以通过开启⾃动 PGA 管理来对 PGA 设定硬性限制,这需要对 PGA_AGGREGATE_LIMIT 参数进⾏设置。因此,你现在可以通过设置新的参数来对PGA 设定硬性限制以避免过度使⽤ PGA 。
SQL> ALTER SYSTEM SET PGA_AGGREGATE_LIMIT=2G;
mliSQL> ALTER SYSTEM SET PGA_AGGREGATE_LIMIT=0; --disables the hard limit
Ø 重要提⽰
当超过了当前 PGA 的限制, Oracle 会⾃动终⽌ / 中⽌会话或进程以保持合适的 PGA 内存。centrality
1 PGA_AGGREGATE_TARGET 参数
⾸先看下⼀下官⽹对PGA的描述:
The Program Global Area (PGA) is a private memory region that contains the data and control information for a rver process. Only a rver process c an access the PGA. Oracle Databa reads and writes information in the PGA on behalf of the rver process. An example of such information is the ru n-time area of a cursor. Each time a cursor is executed, a new run-
time area is created for that cursor in the PGA memory region of the rver process executing that cursor.
Note:
Part of the run-time area can be located in the Shared Global Area (SGA) when using shared rvers.
For complex queries (such as decision support queries), a big portion of the run-
time area is dedicated to work areas allocated by memory intensive operators, including:
1) Sort-bad operators, such as ORDER BY, GROUP BY, ROLLUP, and window functions
2) Hash-join
3) Bitmap merge
4) Bitmap create
5) Write buffers ud by bulk load operations
A sort operator us a work area (the sort area) to perform the in-memory sorting of a t of rows. Similarly, a hash-
join operator us a work area (the hash area) to build a hash table from its left input.
在Oracle 10g和11g版本中,在AMM的管理下,可以通过配置PGA_AGGREGATE_TARGET参数来限制PGA的⼤⼩。 在⾃动化 PGA 内存管理模式下,Oracle 数据库通过动态控制分配⼯作区的 PGA 内存数量来尝试遵从PGA_AGGREGATE_TARGET值。
但有时因为某些原因,PGA 的使⽤量可能会超过 PGA_AGGREGATE_TARGET设置。
⽐如这个案例:
⼀次AIX系统swap使⽤过⾼的故障解决过程
因此PGA_AGGREGATE_TARGET起到的是⽬标的作⽤,⽽⾮限制。PGA_AGGREGATE_TARGET仅控制可优化部分内存的分配。
如果出现PGA的使⽤量⼤⼤超过PGA_AGGREGATE_TARGET参数的值,就可能产⽣SWAP,从⽽影响整个系统的性能,更进⼀步导致DB hang 住。
因此在Oracle 12c中引⼊了新的参数PGA_AGGREGATE_LIMIT ,其可以限制整体PGA使⽤量。
PGA_AGGREGATE_TARGET
PGA_AGGREGATE_LIMIT
2 PGA_AGGREGATE_LIMIT参数
PGA_AGGREGATE_LIMIT限制的是实例消耗的 PGA的总量。是⼀个硬性限制。
PGA_AGGREGATE_LIMIT 参数是动态参数;修改该参数不需要重新实例。设置 PGA_AGGREGATE_LIMIT 的值时也不需要关⼼是否使⽤了⾃动内存管理。
该参数的默认值配置规则如下:
1)  如果设置了MEMORY_TARGET参数 ,那么PGA_AGGREGATE_LIMIT等于MEMORY_MAX_TARGET的值。
2)  如果没有设置MEMORY_TARGET参数,那么PGA_AGGREGATE_LIMIT 参数值是PGA_AGGREGATE_TARGET的2倍。
3)  如果MEMORY_TARGET参数没有设置,但PGA_AGGREGATE_TARGET参数被设置为0. 那么PGA_AGGREGATE_LIMIT值=90%*物理内存 - SGA内存。
在所有的情况下,PGA_AGGREGATE_LIMIT参数值⾄少为2G,或者 3MB * PROCESSES参数值
如果PGA的使⽤量超过了 PGA_AGGREGATE_LIMIT 值,那么Oracle 按照以下顺序,中断使⽤了最多的不可优化 PGA 内存的会话或进程:
1)  中断使⽤最多不可优化 PGA 内存的会话调⽤(Calls)。
2)  如果 PGA 内存使⽤量仍超过 PGA_AGGREGATE_LIMIT,则终⽌使⽤最多不可优化 PGA 内存的会话(ssions)和进程(process)。
注意:
1)这2个是不同的,⼀个是call,另⼀个是ssion和process。
2)在决定终⽌会话和进程时,并⾏查询将作为⼀个单元进⾏处理。。
除了Job 队列进程外的SYS 进程和后台进程不会受到限制的影响。相反,如果它们使⽤了最多的不可优化内存,则会定期将其 PGA 使⽤信息的摘要写⼊到跟踪⽂件中。
后台进程CKPT每三秒检查⼀次内存⽤量是否超过了 PGA_AGGREGATE_LIMIT 初始化参数的值。如果达到或超过了限制,则此进程中断使⽤最多不可优化 PGA 内存的会话调⽤。如果这些会话仍没有释放⾜够内存,则终⽌它们。
如果达到了 PGA_AGGREGATE_LIMIT 值,则将报告如下错误。
ORA-04036: PGA memory ud by the instance exceeds PGA_AGGREGATE_LIMIT
创造力培训
Cau: Private memory across the instance exceeded the limit specified in the PGA_AGGREGATE_LIMIT initialization parameter. The largest ssions using Program Global Area (PGA) memory were interrupted to get under the limit.
Action: Increa the PGA_AGGREGATE_LIMIT initialization parameter or reduce memory usage.
CKPT 跟踪⽇志中的信息:
不堪一击的意思
PGA LIMIT: pid 317111 is ineligible for an ORA-4036 interrupt
System process and most background process cannot receive ORA-4036
interrupts. When they are contributing to the instance exceeding
PGA_AGGREGATE_LIMIT, they will periodically dump their PGA usage.
PGA LIMIT: pid 317124 is a top contributor to going over PGA_AGGREGATE_LIMIT
PGA LIMIT: pid 317124 is ineligible for an ORA-4036 interrupt
PGA LIMIT: pid 317120 is a top contributor to going over PGA_AGGREGATE_LIMIT
PGA LIMIT: pid 317120 is ineligible for an ORA-4036 interrupt
新特性往往伴随着bug,该参数也不例外:
其中Bug 25773856 : PGA_AGGREGATE_LIMIT EXCEEDED IN JAVAVM_MAIN LABELS 还是12.2.0.2 版本中的。 所以新版的还是要谨慎⼀点。
关于该参数的更多说明参考MOS⽂档:
Limiting process size with databa parameter PGA_AGGREGATE_LIMIT (⽂档 ID 1520324.1)
3 ⽰例修改
--在CDB中修改:
[oracle@davedba ~]$ sqlplus / as sysdba
SQL*Plus: Relea 12.2.0.1.0 Production on Mon Apr 17 05:29:27 2017
Copyright (c) 1982, 2016, Oracle.  All rights rerved.
Connected to:
韩语考试
Oracle Databa 12c Enterpri Edition Relea 12.2.0.1.0 - 64bit Production
SQL> show pdbs
CON_ID CON_NAME    OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
now that2 PDB$SEED    READ ONLY  NO
3 DAVE      READ WRITE NO
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> show parameter pga丘壑
NAME        TYPE  VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_limit      big integer 2G
pga_aggregate_target      big integer 0
SQL> alter system t pga_aggregate_limit=3g;
System altered.
SQL> show parameter pga
NAME        TYPE  VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_limit      big integer 3G
pga_aggregate_target      big integer 0
SQL>
--在PDB中修改:
[oracle@davedba admin]$ a
# a Network Configuration File: /u01/app/oracle/product/12.2.0/dbhome_1/network/a # Generated by Oracle configuration tools.
LISTENER_CNDBA =
(ADDRESS = (PROTOCOL = TCP)(HOST = single)(PORT = 1521))
CNDBA =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = single)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = cndba)
)
)
dave =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = single)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dave)
)
)
[oracle@davedba admin]$ sqlplus system/oracle@dave
SQL*Plus: Relea 12.2.0.1.0 Production on Mon Apr 17 05:38:02 2017
Copyright (c) 1982, 2016, Oracle.  All rights rerved.
Connected to:
Oracle Databa 12c Enterpri Edition Relea 12.2.0.1.0 - 64bit Production
SQL> show con_name
CON_NAME
------------------------------
DAVE
SQL>
SQL> show parameter pga
NAME        TYPE  VALUE
-
----------------------------------- ----------- ------------------------------pga_aggregate_limit      big integer 3G
pga_aggregate_target      big integer 0
SQL> alter system t pga_aggregate_limit=2g;
System altered.
SQL> show parameter pga
NAME        TYPE  VALUE
------------------------------------ ----------- ------------------------------pga_aggregate_limit      big integer 2G
pga_aggregate_target      big integer 0
英语小天才全集
SQL>
--此时查看CDB中的参数,还是3G:
SQL>  show parameter pga
NAME        TYPE  VALUE
------------------------------------ ----------- ------------------------------pga_aggregate_limit      big integer 3G
pga_aggregate_target      big integer 0
SQL>考试作弊之我见

本文发布于:2023-07-06 11:28:27,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/168830.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:内存   参数   限制   进程
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图