各个平台上调整最大SGA区的方法

王朝other·作者佚名  2008-05-19
宽屏版  字体: |||超大  

在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去提高数据库的缓冲区了。

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倍的物理内存

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有