ITPub博客

首页 > 数据库 > Oracle > ORACLE内存管理 之五 SGA variable pool,shared_pool,large_pool,java_pool

ORACLE内存管理 之五 SGA variable pool,shared_pool,large_pool,java_pool

原创 Oracle 作者:weifenghq 时间:2007-01-05 10:03:23 0 删除 编辑

ORACLE内存管理 SGA

variable pool,shared_pool,large_pool,java_pool

  • 统计信息

SQL> compute sum of bytes on pool

SQL> break on pool skip 1

SQL> select pool, name, bytes

from v$sgastat

order by pool, name

POOL NAME BYTES

---------------------- ---------------------------------------------------- ----------

java pool free memory 25165824

********************** ----------

sum 25165824

large pool free memory 50331648

********************** ----------

sum 50331648

shared pool 1M buffer 2098176

FileIdentificatonBlock 323292

FileOpenBlock 479952

POOL NAME BYTES

---------------------- ---------------------------------------------------- ----------

shared pool KGK heap 3756

KGLS heap 1894872

KQR M PO 548404

KQR S PO 116224

KQR S SO 1536

KSXR pending messages que 841036

KSXR receive buffers 1033000

MTTR advisory 38108

PL/SQL DIANA 627212

PL/SQL MPCODE 268136

PL/SQL PPCODE 40328

POOL NAME BYTES

---------------------- ---------------------------------------------------- ----------

shared pool PL/SQL SOURCE 12800

PLS non-lib hp 2068

PX subheap 19176

VIRTUAL CIRCUITS 481320

character set object 318524

dictionary cache 1610880

errors 126580

event statistics per sess 3133480

fixed allocation callback 180

free memory 54519460

joxs heap init 4220

POOL NAME BYTES

---------------------- ---------------------------------------------------- ----------

shared pool kgl simulator 695468

library cache 5138456

message pool freequeue 834752

miscellaneous 7861760

parameters 25404

sessions 748960

sim memory hea 141480

sql area 16316252

table definiti 2128

transaction 351516

trigger defini 2324

POOL NAME BYTES

---------------------- ---------------------------------------------------- ----------

shared pool trigger inform 1108

trigger source 968

********************** ----------

sum 100663296

buffer_cache 243269632

fixed_sga 453852

log_buffer 656384

********************** ----------

sum 244379868

看到SGA统计信息里一共有以下几种类型

Java pool—为JVM分配的固定大小的MEM,10G后可以在线修改.

Large pool-- shared server connections for session memory,RMAN 等,9I开始就可以修改了.

Shared pool-- shared cursors, stored procedures, state objects, dictionary caches等,9I可以开始修改.

另外

SQL> select sum(bytes) from v$sgastat where pool = 'shared pool';

SUM(BYTES)

----------

100663296

这个值始终比show parameter 里的shared_pool_size 83886080大,也就是说v$sysstat里的'shared pool'和shared_pool_size 不是一个概念,shared_pool_size 是'shared pool'的一部分,也就是shared_pool_size 是’shared pool’的重要组成部分但不是唯一的部分.比如control的个数,一个control_file会占用256 bytes,你如果有3个的话就是768 bytes在这里.但到了10G后这两个值就是一致的了(一直都认为ORACLE的概念或命名规则方面有很大问题,不严谨,不统一)。

variable pool 是什么呢? variable pool = shared_pool + large_pool + java_pool,所以shared_pool=variable pool- large_pool - java_pool ,所以shared_pool= 176160768-25165824-50331648=100663296,和v$sgastat里统计出来的一样。

1* select * from v$sga_dynamic_components

SQL> /

COMPONENT

----------------------------------------------------------------------------------------------------

CURRENT_SIZE MIN_SIZE MAX_SIZE OPER_COUNT LAST_OPER_TY LAST_OPER_MO LAST_OPER_TIME GRANULE_SIZE

------------ ---------- ---------- ---------- ------------ ------------ -------------- ------------

shared pool

83886080 83886080 83886080 0 8388608

large pool

50331648 50331648 50331648 0 8388608

buffer cache

243269632 243269632 243269632 0 8388608

有些时候你设置的值和结果不一致是因为GRANULE_SIZE的关系,比如我如果设置large pool为50331000bytes,但实际上应该是50331648,因为最小分配单元是GRANULE_SIZE=8k,所以要分配6144个块,是50331648,如上所示。GRANULE_SIZE的值就是分配内存的最小单元.版本的不同,OS的不同,SGA大小的不同, GRANULE_SIZE都有可能不同.

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/633084/viewspace-888424/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-11-25

  • 博文量
    100
  • 访问量
    595187