免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1174 | 回复: 0
打印 上一主题 下一主题

ORACLE进程的内存结构解析 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-21 23:49 |只看该作者 |倒序浏览
ORACLE进程的内存结构解析

     每个ORACLE进程从上低地址到高地址,分别由进程序的执行体,PGA SESSION HEAP,,SGA,共享库,空闲空间和STACK区组成.在32位上的LINUX上的,一般都是由08048000处开始加载ORACLE程序的执行体,从0X20000000处开始加载FIXSGA,REDO BUFFER操作系统的特殊区域直到0X20800000,一般大小为8M左右.REDO BUFFER从0X20147000开始加载.那么FIXSGA大小就可以通过0X20147000-0X20000000算出来.共享内存再以粒度的方式被分割.

Variable Size就从20800000处开始载,根据具体的ORACLE配置,可能大小不一样.可以通过ORADEBUG IPC来查看具体的共享内存情况,在OS级别上可以通过PMAP <进程ID>来查看某个进程的内存分布.可以通过SQLPLUS的SHOW SGA或者是查看V$SGA和X$KSMSD来得到各个区域的大小信息.

从10.1g开始引入X$KSMGE,可以反映当前的内存的GRANULE分配情况.通过以下查询SQL> select grantype,granstate,count(gransize)

  2  from x$ksmge

  3  where granstate<>'INVALID'

  4  group by grantype,granstate;

7是BUFFER POOL;1,是SHARD POOL

在某些情况内存可能并没有被用完(PRE_PAGE_SGA),比如我们分本配了32G,实际只使用了20G就可以满足需求了,通过这个查询就可以找出当前合适的内存大小.以防止不必要的浪费.


来源:http://blog.chinaunix.net/space. ... blog&id=2182643
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP