Oracle12c 新特性:限制PGA使用内存的大小
发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,我们都知道,在12c之前,对于PGA内存的管理是使用PGA_AGGREGATE_TARGET参数来控制的,但这个参数也只是一个参考值,Oracle实例只是尽量保证总的PGA使用量在这个值范围内,当会话
千家信息网最后更新 2025年11月12日Oracle12c 新特性:限制PGA使用内存的大小
我们都知道,在12c之前,对于PGA内存的管理是使用PGA_AGGREGATE_TARGET参数来控制的,但这个参数也只是一个参考值,Oracle实例只是尽量保证总的PGA使用量在这个值范围内,当会话使用的PGA内存超过这个限制时,Oracle也不能做出什么强制措施来限制使用内存的大小。
12.1.0.1版本中引入了新特性:使用PGA_AGGREGATE_LIMIT参数来限制Oracle实例PGA使用内存的上限。后台进程ckpt每三秒检查一次PGA使用的内存总量,如果超过限制就采取终止会话的方式来降低PGA内存的使用量,对于SYS用户进程和后台进程不包括job队列不会被终止掉。有了这个限制,不会造成PGA内存疯涨,导致内存耗尽。
官方文档:http://docs.oracle.com/database/121/TGDBA/tune_pga.htm#TGDBA95344
默认地PGA_AGGREGATE_LIMIT参数为2G或200%的PGA_AGGREGATE_TARGET值或PROCESSES参数值*3M
测试数据库版本12.1.0.2
SQL> select * from v$version;BANNER CON_ID-------------------------------------------------------------------------------- ----------Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production 0PL/SQL Release 12.1.0.2.0 - Production 0CORE 12.1.0.2.0 Production 0TNS for Linux: Version 12.1.0.2.0 - Production 0NLSRTL Version 12.1.0.2.0 - Production 0
查看PGA_AGGREGATE_LIMIT参数值大小为2G
SQL> show parameter pgaNAME TYPE VALUE------------------------------------ ----------- ------------------------------pga_aggregate_limit big integer 2Gpga_aggregate_target big integer 250M
创建测试用户
SQL> alter session set container=pdb_orcl;Session altered.SQL> create user zx identified by zx;User created.SQL> grant dba to zx;Grant succeeded.SQL> conn zx/zx@pdb_orclConnected.
创建一个包用于演示占用PGA
SQL> create or replace package demo_pkg 2 as 3 type array is table of char(2000) index by binary_integer; 4 g_data array; 5 end; 6 /Package created.
查看当前会话sid和使用PGA内存情况
SQL> select userenv('sid') from dual;USERENV('SID')-------------- 22--当前会话sid为22SQL> select a.name, to_char(b.value, '999,999,999') bytes, 2 to_char(round(b.value/1024/1024,1), '99,999.9' ) mbytes 3 from v$statname a, v$mystat b 4 where a.statistic# = b.statistic# 5 and a.name like '%ga memory%';NAME BYTES MBYTES---------------------------------------------------------------- ------------ ---------session uga memory 2,301,312 2.2session uga memory max 2,424,824 2.3session pga memory 3,715,176 3.5session pga memory max 3,715,176 3.5--当前会话使用PGA内存为3.5MB执行前面创建的包,查看PGA内存使用情况
--循环执行200000次查看PGA内存使用情况SQL> begin 2 for i in 1 .. 200000 3 loop 4 demo_pkg.g_data(i) := 'x'; 5 end loop; 6 end; 7 /PL/SQL procedure successfully completed.SQL> select a.name, to_char(b.value, '999,999,999') bytes, 2 to_char(round(b.value/1024/1024,1), '99,999.9' ) mbytes 3 from v$statname a, v$mystat b 4 where a.statistic# = b.statistic# 5 and a.name like '%ga memory%';NAME BYTES MBYTES---------------------------------------------------------------- ------------ ---------session uga memory 470,213,072 448.4session uga memory max 470,213,072 448.4session pga memory 471,773,288 449.9session pga memory max 471,773,288 449.9--共使用449MB内存,可以算出循环执行200000*5次占用的PGA就会超过设置的2GSQL> begin 2 for i in 1 .. 1000000 3 loop 4 demo_pkg.g_data(i) := 'x'; 5 end loop; 6 end; 7 /begin*ERROR at line 1:ORA-04036: PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT--报错ORA-4036超过了PGA_AGGREGATE_LIMIT设置的2G
调整PGA_AGGREGATE_LIMIT为4G后再次执行报错的过程,就没有问题了
SQL> conn / as sysdbaConnected.SQL> alter system set PGA_AGGREGATE_LIMIT=4G;System altered.SQL> conn zx/zx@pdb_orclConnected.SQL> begin 2 for i in 1 .. 1000000 3 loop 4 demo_pkg.g_data(i) := 'x'; 5 end loop; 6 end; 7 /PL/SQL procedure successfully completed.SQL> show parameter pgaNAME TYPE VALUE------------------------------------ ----------- ------------------------------pga_aggregate_limit big integer 4Gpga_aggregate_target big integer 250M
取消PGA限制,设置pga_aggregate_limit=0即可。
alter system set PGA_AGGREGATE_LIMIT=0;
内存
限制
参数
情况
进程
大小
使用量
只是
后台
实例
版本
用户
循环
测试
特性
上限
再次
参考值
官方
总量
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
光大银行网络安全不符合要求
浙江高科技软件开发特征
软件开发质保期验收报告
服务器内置高速线缆
美国租服务器怎么样
360员工维护网络安全吗
网络技术人员专岗专位
新型网络安全市场报告
信德互联网科技有限公司
自动同步数据库
软件开发的交互图
服务器管理系统软件下载
网络安全线上答题活动新闻
数据库技术三级PPT
服务器搭建的网站怎么访问
伴我考直播软件开发商
最新宝可梦服务器下载
河南网络安全宣传周海报
网络安全中的风险评估工具
服务器搭建机器人
的中小学生家庭教育与网络安全
什么是软件开发功能需求
2017网络安全试卷
企业怎么做服务器冗余
电商erp软件开发怎么收费
软件开发需求量化评估案例
网络安全等级7级
多玩天谕捏脸数据库
银川oa软件开发价格表
win8网络安全密钥