oracle内存结构pga sga,Oracle内存结构--SGA/PGA(转)

一. SGA

SGA管理的变迁

9i前,静态分配,修改完参数,重启数据库才能生效

db_block_buffers db_block_size

...

9i: 动态分配,即不重启数据库,修改可生效

各SGA组件单独指定

sga_max_size

db_cache_size

...

10g: 动态分配,

部分组件统一指定,各大小依据工作负载自动调整

sga_max_size

sga_target

11g: SGA和PGA都纳入了自动内存管理

memory_target

1.SGA组成和任务

sga_max_size

sga_target

db_cache_size

java_pool_size

large_pool_size

shared_pool_size

streams_pool_size

log_buffer

db_keep_cache_size

db_recycle_cache_size

db_nk_cache_size

sga_max_size

(sga_max_size+pga_aggregate_target)

Automatic Shared Memory Management (ASMM),

自动共享内存管理,

是10g中新增的特性,主要用来管理SGA中的内存组件,

它针对如下内存组件发挥作用:

Buffer cache池

共享池

大型池:shared server ,parallel execution ,

backup processes for disk I/O buffers

Java池:Java memory manager

流池:Streams in a database transfers

有一个专门的后台进程MMAN,负责完成这项任务。

启用ASMM:

SGA_TARGET>0

STATISTICS_LEVEL=TYPICAL (or ALL)

MMAN进程必须根据工作负载情况,调节各内存组件的大小

ps -ef |grep LH

ora_mman_LH

SELECT name, value

FROM v$parameter

WHERE name in ('db_cache_size',

'large_pool_size', 'java_pool_size',

'shared_pool_size', 'streams_pool_size', 'sga_target',

'sga_max_size', 'statistics_level')

alter system set db_keep_cache_size=12M;

select * from dba_tables where

owner='SCOTT' and table_name='EMP'

alter table EMP storage (buffer_pool keep);

获得该版本的显式参数

select * from v$parameter

获得该版本的隐式参数

SELECT a.ksppinm NAME, b.ksppstvl "value", a.ksppdesc DESCRIPTION FROM x$ksppi a, x$ksppcv b WHERE a.indx=b.indx AND substr(a.ksppinm,1,1)='_' ORDER BY a.ksppinm

select

i.ksppinm

name,

i.ksppdesc

description,

cv.ksppstvl

"value",

cv.ksppstdf

isdefault,

decode(bitand(cv.ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE')

ismodified,

decode(bitand(cv.ksppstvf,2),2,'TRUE','FALSE')

isadjusted

from sys.x$ksppi

i, sys.x$ksppcv cv

where i.inst_id=userenv('Instance')

and

cv.inst_id=userenv('Instance')

and

i.indx=cv.indx

and

i.ksppinm

like

'%pool_size%'

内存组件的真正大小:

SELECT name, bytes FROM v$sgainfo;

show sga

固定区域 fixed area

包含几千个变量和一些小的数据结构,

如latch和地址指针等,不受用户控制

通过x$ksmfsv查询 Kernel Service

layer,

Memory management,

addresses of Fixed Sga Variables

x$ksmmem记录了整个SGA的地址映射关系.

通过查询

x$ksmfsv和x$ksmmem,可以找出

fixed area 中每个变量的位置.

select * from x$ksmfsv

a,x$ksmmem b

where a.ksmfsadr=b.addr

and a.ksmfsnam like 'sga%'

select * from x$ksmfsv

a,x$ksmmem b

where a.ksmfsadr=b.addr --3705个

10gR2 variable size

包括 shared_pool_size,

java_pool_size,

large_pool_size等

2.转储SGA信息

SGA使用的内存空间

$ ps -ef|grep dbw

oracle 18318 ora_dbw0_LH

$ more /proc/18318/maps

20000000-2de00000

rw-s 十六进制

alter session set events 'immediate trace name

heapdump level n';

level 1: PGA汇总信息

level 2: SGA汇总信息

level 1025: PGA详细信息

level 2050: SGA详细信息

转储db buffer cache cd /opt/oracle/admin/LH/udump

rm *.trc

sqlplus sys/oracle as sysdba

sql>alter session set events 'immediate trace

name buffers

level 10'; 2-3minutes

sql>quit

lh_ora_23755.trc 387M

vi lh_ora_23755.trc

(1)buffer cache

granule是9i引入的一个新概念,是连续内存分配的单位,

增加内存大小的步长单位

其大小取决于SGA的大小(SGA_MAX_SIZE):

9i:

如SGA<128MB,则granule=4MB

否则为16MB(32位windows为8MB)

10g:

如SGA<1GB,则granule=4MB

否则为16MB(32位windows为8MB)

一个粒度 granule的大小由隐含参数

_ksmg_granule_size决定 select

i.ksppinm

name,

i.ksppdesc

description,

cv.ksppstvl

"value",

cv.ksppstdf

isdefault,

decode(bitand(cv.ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE')

ismodified,

decode(bitand(cv.ksppstvf,2),2,'TRUE','FALSE')

isadjusted

from sys.x$ksppi

i, sys.x$ksppcv cv

where i.inst_id=userenv('Instance')

and

cv.inst_id=userenv('Instance')

and

i.indx=cv.indx

and

i.ksppinm

=

'_ksmg_granule_size' 各内存组件所使用的 granule大小可以通过查询

v$sga_dynamic_components获得

select t.component,t.granule_size

from v$sga_dynamic_components t

db_cache_size

db_keep_cache_size

db_recycle_cache_size

db_nk_cache_size 在buffer cache中,ORACLE通过几个链表进行内存管理

LRU

List

Dirty List

(也称Write List) 同时链接到ckptq和fileq

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值