ITPub博客

首页 > 数字化转型 > ERP > 64位系统下shmmax设置问题

64位系统下shmmax设置问题

原创 ERP 作者:yaanzy 时间:2006-04-28 15:31:50 0 删除 编辑

系统配置:64位redhat linuxe as3 ,oracle9204,机器有8G内存

以前在32位系统下,shmmax的含义是单个共享内存段的最大尺寸,比如你设置shmmax=1G,sga分配了1.2G,当启动db时就分配2块共享内存给oracle。可是最近在64位上测试,发现当设置shmmax <= 956301311时,sga的分配规律和32位上一样。
但是如果设置shmmax > 956301311,则如果sga设置的值大于shmmax的值且大于2.3G时,启动数据报错:
SQL> startup
ORA-27123: unable to attach to shared memory segment

下面是个在64位上的测试结果:

[@more@]

shmmax值 SGA值 分配共享内存是否成功

956301311 800M yes(一个共享内存块)
956301311 1.7G yes(三个共享内存块)
956301311 2.3G yes(五个共享内存块)
956301312 800M yes(一个共享内存块)
956301312 1.7G yes(三个共享内存块)
956301312 2.3G no
956301311 2.35G no
1G 2.35G no
2G 2.35G no
2.3G 2.35G no
2.4G 2.35G yes(一个共享内存块)
2.4G 2.6G no
2.8G 2.6G yes(一个共享内存块)
3.4G 3.5G no
3.6G 3.5G yes(一个共享内存块)
4.4G 4.5G no
4.6G 4.5G yes(一个共享内存块)
5.4G 5.5G no
5.6G 5.5G yes(一个共享内存块)
6.4G 6.5G no
6.6G 6.5G yes(一个共享内存块)

结论:在64位系统上,
当SGA<=2.3G,shmmax<=956301311时,分配内存成功,其中当SGA>shmmax时会分配多个内存段;
当SGA>2.3G,shmmax>(SGA值+大约100M)时,分配内存成功,都是一个内存段;

附注:1、2.3G只是一个大概的值,精确值没有具体测出来,误差50M左右
2、对于shmmax参数最简单得处理方法就是设置一个很大的值,比如8G、16G。

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

下一篇: 10g文档中的bug
请登录后发表评论 登录
全部评论
  • 博文量
    108
  • 访问量
    761485