91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle12c 新特性:限制PGA使用內存的大小

發布時間:2020-08-08 15:28:05 來源:網絡 閱讀:2792 作者:hbxztc 欄目:關系型數據庫

我們都知道,在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		  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參數值大小為2G

SQL> show parameter pga

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_limit		     big integer 2G
pga_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_orcl
Connected.

創建一個包用于演示占用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

執行前面創建的包,查看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.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內存,可以算出循環執行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后再次執行報錯的過程,就沒有問題了

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;


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巴东县| 瑞金市| 玉龙| 苗栗县| 平江县| 清流县| 新津县| 阿城市| 天祝| 花莲县| 永兴县| 融水| 胶州市| 赫章县| 徐水县| 临清市| 桂阳县| 贵定县| 德昌县| 西安市| 宜川县| 鹤庆县| 卓尼县| 香格里拉县| 阳朔县| 高州市| 凌海市| 乐亭县| 琼结县| 垦利县| 海晏县| 通河县| 岚皋县| 五原县| 墨竹工卡县| 宁安市| 通山县| 仁寿县| 稷山县| 博兴县| 莒南县|