在32位的linux平台上为Oracle配置>1.7GB的SGA

在没有任何附加改动的情况下,32位linux上Oracle对SGA的默认配置最大为1.7GB 。在微小改动的情况下,可以分配最大占用2.7GB RAM空间的SGA。如果大小要超过4GB就要做其他改动。

注意{运行hugemem kernel模式时,相应的限制分别是2.7GB和3.7GB。由于hugemem内核存在额外开销,因此只有在系统RAM不低于16GB的情况下才运行hugemem内核。}

为了分配大于1.7GB小于2.8GB的SGA,在Oracle启动时必须减小基地址,称之为映射基地址(mapped base)。可以采取下面的步骤减少基地址的映射:

(1)  cd $ORACLE_HOME/rdbms/lib

(2)利用genksms命令创建一个汇编文件:

genksms  -s 0x15000000 > ksms.s

(3)生成对象文件

make -f    ins_rdbms.mk  ksms.o

(4)生成Oracle可执行文件:

make -f ins_rdbms.mk ioracle

接下来需要做的事把共享内存参数SHMMAX增加到1.7~2.7GB,并用新编译生成的代码启动Oracle。

为了使用大于2.7GB的SGA,采用以下方法。

创建RMAN磁盘,RAM磁盘创建完毕后,使用间接数据缓冲区(indirect data buffer)配置Oracle。它本质是Oracle用于数据库块缓冲区的RAM磁盘文件。使用RAM磁盘可以避开所有的32位限制。

安装了ramfs类型的文件系统可以创建RMAN磁盘。Red Hat ES 3.0之前使用shmfs,在3.0后则用ramfs创建,使用一下语法:

umount /dev/shm

mount -t ramfs ramfs /dev/shm

chown oracle:dba  /dev/shm

将下面内容加入文件/etc/security/limits.conf中:

oracle soft  memlock 3145728

oracle soft memlock 3145728

如果用ssh登陆系统,将下面一行加入到/etc/init.d/ssh中:

ulimit -l 3145728

在Oracle初始化参数中加入”use_indirect_data_buffer=true”。

为了使用大型内存模型,接下来需要把Linux共享内存设置到足够大。用下面的方法把共享内存最大值设置为8GB:

echo 8589934592 > /proc/sys/kernel/shmmax

或者把下面一行加入到/etc/sysctl.conf文中:

sys.kernel.shmmax= 8589934592

并执行 sysctl -w

注意: 间接数据缓冲区只能用作Oracle块缓冲区。低端内存仍用于其它内存共享项目,例如共享池或日志缓冲区。


Posted

in

by

Tags:

Comments

One response to “在32位的linux平台上为Oracle配置>1.7GB的SGA”

Leave a Reply

Your email address will not be published. Required fields are marked *