查看: 80195|回复: 150

[精华] 各个平台上调整最大SGA区的方法,欢迎大家补充!

[复制链接]
论坛徽章:
16
2010数据库技术大会纪念徽章
日期:2010-05-13 10:04:27ITPUB技术丛书作者
日期:2010-09-26 15:24:562011新春纪念徽章
日期:2011-01-25 15:41:01管理团队成员
日期:2011-05-07 01:45:082012新春纪念徽章
日期:2012-02-13 15:11:18马自达
日期:2014-01-27 11:47:11
跳转到指定楼层
1#
发表于 2003-5-23 14:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在32bit或者64bit的平台上跑32bit的oracle的时候,SGA总是受到限制,导致大内存的机器不能完全发挥作用,最近就专门找了一些关于调整最大SGA区的文档,看了看,感觉收获蛮大的,总结了一下几个平台的,但是不全,欢迎大家探讨补全。
我先把我总结的几个平台贴出来大家讨论讨论。


在REDHAT ADVANCED SERVER2.1上扩展SGA(1.7G以上)

一.        目标:
1.        在一个4G以上的内存的机器上将SGA从1.7G增至2.7G
2.        兼容8.1.7,9.0.1,9.2.0版本的数据库
3.        整个SGA都能够被提高
二.        限制:
1.        只允许在本地启动和关闭数据库
2.        如果为PGA保存的虚拟内存太少就会导致ORA-4030的错误
三.        基本步骤:
1.        查看启动oracle用户的shel的进程号PID
ps -ef或者echo $$
2.        以root用户单独开一个进程,执行:
echo 268435456 > /proc/$PID/mapped_base
       这个要对server上所有产生oracle进程的shell
3.        修改shmmax的值。用root用户执行
echo 3000000000 > /proc/sys/shmmax
4.        重新分配SGA
shutdown immediate所有的oracle实例
cd $ORACLE_HOME/lib
cp –a libserver9.a libserver9.a.org(备份liberver9.a文件)
cd $ORACLE_HOME/bin
cp –a oracle oracle.org(备份oracle文件)
cd $ORACLE_HOME/rdbms/lib
genksms –s 0x15000000 > ksms.s
make –f ins_rdbms.mk ksms.o(编译新的sga地址)
make –f ins_rdbms.mk ioracle(重新链接)
  这样改过以后就可以支持到2.65G的sga,从而可以提高db_cache_size或者db_block_buffers去提高数据库的缓冲区了。
论坛徽章:
16
2010数据库技术大会纪念徽章
日期:2010-05-13 10:04:27ITPUB技术丛书作者
日期:2010-09-26 15:24:562011新春纪念徽章
日期:2011-01-25 15:41:01管理团队成员
日期:2011-05-07 01:45:082012新春纪念徽章
日期:2012-02-13 15:11:18马自达
日期:2014-01-27 11:47:11
2#
 楼主| 发表于 2003-5-23 14:48 | 只看该作者
True64 Unix上使SGA大于2G

1.        检查是否有足够的内存能够分配给SGA
userf –r 300 |grep –i mem
2.        配置核心
vm:
    vm-maxvas=实际物理内存
    vm-mapentries=400
    ubc-minpercent=1
    ubc-maxpercent=2
ipc:
    shm-max=物理内存或者大于SGA
    shm-mni=128
    shm-seg=32
proc:
    max-per-proc-data-size=物理内存
    per-proc-data-size=物理内存
    max-per-proc-address-space=物理内存
    per-proc-address-space=物理内存
         不要修改/etc/sysconfigtab文件中的参数位置。
          /sbin/sysconfig –q vm
          /sbin/sysconfig –q ipc
          /sbin/sysconfig –q proc
3.        设置环境
对于C Shell,修改.login文件
   limit datasize unlimited
   limit stacksize unlimited
   limit memoryuse unlimited
   limit addressspace unlimited
对于Korn或者Bourn Shell,修改.login文件
   ulimit –d unlimited
   ulimit –s unlimited
   ulimit –m unlimited
   ulimit –v unlimited
4.        重新分配SGA
设置init文件中参数vlm_sga_base_address参数
例如:超过了3G,设置vlm_sga_base_address=0x400000000
5.        SWAP区的设置
建议设置成2-3倍的物理内存

继续总结中。。。

使用道具 举报

回复
论坛徽章:
16
2010数据库技术大会纪念徽章
日期:2010-05-13 10:04:27ITPUB技术丛书作者
日期:2010-09-26 15:24:562011新春纪念徽章
日期:2011-01-25 15:41:01管理团队成员
日期:2011-05-07 01:45:082012新春纪念徽章
日期:2012-02-13 15:11:18马自达
日期:2014-01-27 11:47:11
3#
 楼主| 发表于 2003-5-23 15:49 | 只看该作者
我不知道为什么大家对这个话题为什么没兴趣似的,但是平时大家问我这方面的东西又挺多的,真是奇怪!

使用道具 举报

回复
论坛徽章:
63
版主7段
日期:2012-05-15 15:24:11itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-10 14:34:59马上加薪
日期:2015-01-08 15:39:192015年新春福章
日期:2015-03-04 14:19:112015年新春福章
日期:2015-03-06 11:57:31
4#
发表于 2003-5-23 15:53 | 只看该作者
好东西,收藏

使用道具 举报

回复
论坛徽章:
1
祖国60周年纪念徽章
日期:2009-10-09 08:28:00
5#
发表于 2003-5-23 15:59 | 只看该作者
谢谢coolyl的总结!

使用道具 举报

回复
论坛徽章:
7
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:06:23ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41
6#
发表于 2003-5-23 15:59 | 只看该作者
收藏!

使用道具 举报

回复
论坛徽章:
0
7#
发表于 2003-5-23 16:11 | 只看该作者
收到

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
8#
发表于 2003-5-23 16:28 | 只看该作者
顶一下先,找时间试一试

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
9#
发表于 2003-5-23 16:30 | 只看该作者
呵呵,好东西总要留着

使用道具 举报

回复
论坛徽章:
60
2007年度最佳版主
日期:2008-04-03 16:46:15现任管理团队成员
日期:2011-05-07 01:45:08双黄蛋
日期:2011-06-15 17:03:34ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20
10#
发表于 2003-5-23 16:50 | 只看该作者

Re: 各个平台上调整最大SGA区的方法,欢迎大家补充!

3.        修改shmmax的值。用root用户执行
echo 3000000000 > /proc/sys/shmmax


这样只是暂时的修改,重新启动后还要手工做
放到一个脚本中,再启动时候自动执行比较好

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表