我們都知道,在12c之前,對于PGA內(nèi)存的管理是使用PGA_AGGREGATE_TARGET參數(shù)來控制的,但這個(gè)參數(shù)也只是一個(gè)參考值,Oracle實(shí)例只是盡量保證總的PGA使用量在這個(gè)值范圍內(nèi),當(dāng)會(huì)話使用的PGA內(nèi)存超過這個(gè)限制時(shí),Oracle也不能做出什么強(qiáng)制措施來限制使用內(nèi)存的大小。
創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),滄州網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:滄州等地區(qū)。滄州做網(wǎng)站價(jià)格咨詢:1898208110812.1.0.1版本中引入了新特性:使用PGA_AGGREGATE_LIMIT參數(shù)來限制Oracle實(shí)例PGA使用內(nèi)存的上限。后臺(tái)進(jìn)程ckpt每三秒檢查一次PGA使用的內(nèi)存總量,如果超過限制就采取終止會(huì)話的方式來降低PGA內(nèi)存的使用量,對于SYS用戶進(jìn)程和后臺(tái)進(jìn)程不包括job隊(duì)列不會(huì)被終止掉。有了這個(gè)限制,不會(huì)造成PGA內(nèi)存瘋漲,導(dǎo)致內(nèi)存耗盡。
官方文檔:http://docs.oracle.com/database/121/TGDBA/tune_pga.htm#TGDBA95344
默認(rèn)地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)建一個(gè)包用于演示占用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.查看當(dāng)前會(huì)話sid和使用PGA內(nèi)存情況
SQL> select userenv('sid') from dual; USERENV('SID') -------------- 22 --當(dāng)前會(huì)話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 --當(dāng)前會(huì)話使用PGA內(nèi)存為3.5MB執(zhí)行前面創(chuàng)建的包,查看PGA內(nèi)存使用情況
--循環(huán)執(zhí)行200000次查看PGA內(nèi)存使用情況 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內(nèi)存,可以算出循環(huán)執(zhí)行200000*5次占用的PGA就會(huì)超過設(shè)置的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 --報(bào)錯(cuò)ORA-4036超過了PGA_AGGREGATE_LIMIT設(shè)置的2G調(diào)整PGA_AGGREGATE_LIMIT為4G后再次執(zhí)行報(bào)錯(cuò)的過程,就沒有問題了
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限制,設(shè)置pga_aggregate_limit=0即可。
alter system set PGA_AGGREGATE_LIMIT=0;另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
名稱欄目:Oracle12c新特性:限制PGA使用內(nèi)存的大小-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://www.rwnh.cn/article14/dhhdde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、響應(yīng)式網(wǎng)站、網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容