Oracle 11g R1下的自动内存管理
Oracle在简化内存管理方面过去几年做了巨大的努力,从Oracle 9i通过PGA_AGGREGATE_TARGET参数实现PGA自动管理开始,Oracle 10g通过SGA_TARGET参数实现了SGA的自动管理,Oracle 11g更是惊人地实现了数据库所有内存块的全自动化管理,它使得动态管理SGA和PGA成为现实。
写本文时,自动内存管理12 13 UNION14 15 SELECT ‘maximum PGA allocated‘ AS name, TO_CHAR(value) AS value16 17 FROM v$pgastat18 19 WHERE name = ‘maximum PGA allocated‘;20 21 -- Calculate MEMORY_TARGET22 23 SELECT sga.value + GREATEST(pga.value, max_pga.value) AS memory_target24 25 FROM (SELECT TO_NUMBER(value) AS value FROM v$parameter WHERE name = ‘sga_target‘) sga,26 27 (SELECT TO_NUMBER(value) AS value FROM v$parameter WHERE name = ‘pga_aggregate_target‘) pga,28 29 (SELECT value FROM v$pgastat WHERE name = ‘maximum PGA allocated‘) max_pga;30 31 假设我们需要的设置是5G,那么我们可以执行下面的语句: CONN / AS SYSDBA32 33 -- Set the static parameter. Leave some room for possible future growth without restart.34 35 ALTER SYSTEM SET MEMORY_MAX_TARGET=6G SCOPE=SPFILE;36 37 -- Set the dynamic parameters. Assuming Oracle has full control.38 39 ALTER SYSTEM SET MEMORY_TARGET=5G SCOPE=SPFILE;40 41 ALTER SYSTEM SET PGA_AGGREGATE_TARGET=0 SCOPE=SPFILE;42 43 ALTER SYSTEM SET SGA_TARGET=0 SCOPE=SPFILE;44 45 -- Restart instance.46 47 SHUTDOWN IMMEDIATE;48 49 STARTUP;50
当数据库重启后,MEMORY_TARGET参数就可以在不重启实例的情况下随意改变大小了。如: ALTER SYSTEM SET MEMORY_TARGET=4G SCOPE=SPFILE;
AMM调整
除现有的用于内存管理的V$视图外,Oracle 11g还新增加了下面4个视图用于自动内存管理:
V$MEMORY_CURRENT_RESIZE_OPS V$MEMORY_DYNAMIC_COMPONENTS V$MEMORY_RESIZE_OPS V$MEMORY_TARGET_ADVICE
为每个动态组件分配的内存大小使用视图V$MEMORY_DYNAMIC_COMPONENTS显示:
COLUMN component FORMAT A30SELECTcomponent, current_size, min_size, max_sizeFROMv$memory_dynamic_componentsWHERE current_size != 0;COMPONENTCURRENT_SIZE MIN_SIZE MAX_SIZE------------------------------ ------------ ---------- ----------shared pool 197132288192937984197132288large pool419430441943044194304java pool41943040 41943040 41943040SGA Target318767104285212672318767104DEFAULT buffer cache71303168 41943040 75497472PGA Target1048576001048576001384120326 rows selected.SQL
V$MEMORY_CURRENT_RESIZE_OPS和V$MEMORY_RESIZE_OPS分别显示了组件当前改变大小操作的信息和上一次改变大小操作的信息。
V$MEMORY_TARGET_ADVICE提供了帮助调整MEMORY_TARGET参数的信息,它显示了一段MEMORY_TARGET设置可用的范围,根据当前的设置,估算完成当前负载所需要的DB Time值。
SELECT * FROM v$memory_target_advice ORDER BY memory_size;MEMORY_SIZE MEMORY_SIZE_FACTOR ESTD_DB_TIME ESTD_DB_TIME_FACTORVERSION----------- ------------------ ------------ ------------------- ----------303 .75 30681.00382404 1 3056125051.25 305612606 1.5 3056127071.75 305612808 2 3056126 rows selected.SQL
企业管理器中也包括了内存管理配置和顾问功能,位于“内存顾问”页面(顾问中心?内存顾问)
498)this.style.width=498;" border=0 twffan="done">
点击“建议(Advice)”按钮显示“内存大小建议”屏幕,它包括了一个来自视图V$MEMORY_TARGET_ADVICE的图形显示界面。
498)this.style.width=498;" border=0 twffan="done">
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|