在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去提高数据库的缓冲区了。
更多oracle相关信息见oracle 专题页面 ?tid=12
