真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Oracle12c新特性:限制PGA使用內存的大小-創(chuàng)新互聯(lián)

我們都知道,在12c之前,對于PGA內存的管理是使用PGA_AGGREGATE_TARGET參數(shù)來控制的,但這個參數(shù)也只是一個參考值,Oracle實例只是盡量保證總的PGA使用量在這個值范圍內,當會話使用的PGA內存超過這個限制時,Oracle也不能做出什么強制措施來限制使用內存的大小。

創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設計制作、網(wǎng)站設計與策劃設計,滄州網(wǎng)站建設哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設10年,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:滄州等地區(qū)。滄州做網(wǎng)站價格咨詢:18982081108

12.1.0.1版本中引入了新特性:使用PGA_AGGREGATE_LIMIT參數(shù)來限制Oracle實例PGA使用內存的上限。后臺進程ckpt每三秒檢查一次PGA使用的內存總量,如果超過限制就采取終止會話的方式來降低PGA內存的使用量,對于SYS用戶進程和后臺進程不包括job隊列不會被終止掉。有了這個限制,不會造成PGA內存瘋漲,導致內存耗盡。

官方文檔:http://docs.oracle.com/database/121/TGDBA/tune_pga.htm#TGDBA95344

默認地PGA_AGGREGATE_LIMIT參數(shù)為2G或200%的PGA_AGGREGATE_TARGET值或PROCESSES參數(shù)值*3M

測試數(shù)據(jù)庫版本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   0 PL/SQL Release 12.1.0.2.0 - Production   0 CORE 12.1.0.2.0 Production   0 TNS for Linux: Version 12.1.0.2.0 - Production   0 NLSRTL Version 12.1.0.2.0 - Production   0

查看PGA_AGGREGATE_LIMIT參數(shù)值大小為2G

SQL> show parameter pga NAME      TYPE  VALUE ------------------------------------ ----------- ------------------------------ pga_aggregate_limit      big integer 2G pga_aggregate_target      big integer 250M

創(chuàng)建測試用戶

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_orcl Connected.

創(chuàng)建一個包用于演示占用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為22 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                                                  2,301,312       2.2 session uga memory max                                              2,424,824       2.3 session pga memory                                                  3,715,176       3.5 session pga memory max                                              3,715,176       3.5 --當前會話使用PGA內存為3.5MB

執(zhí)行前面創(chuàng)建的包,查看PGA內存使用情況

--循環(huán)執(zhí)行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.4 session uga memory max                                            470,213,072     448.4 session pga memory                                                471,773,288     449.9 session pga memory max                                            471,773,288     449.9 --共使用449MB內存,可以算出循環(huán)執(zhí)行200000*5次占用的PGA就會超過設置的2G SQL> 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后再次執(zhí)行報錯的過程,就沒有問題了

SQL> conn / as sysdba Connected. SQL> alter system set PGA_AGGREGATE_LIMIT=4G; System altered. SQL> conn zx/zx@pdb_orcl Connected. 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 pga NAME                                 TYPE        VALUE ------------------------------------ ----------- ------------------------------ pga_aggregate_limit                  big integer 4G pga_aggregate_target                 big integer 250M

取消PGA限制,設置pga_aggregate_limit=0即可。

alter system set PGA_AGGREGATE_LIMIT=0;

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


網(wǎng)站題目:Oracle12c新特性:限制PGA使用內存的大小-創(chuàng)新互聯(lián)
網(wǎng)站地址:http://weahome.cn/article/dhhdde.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部