Thursday, November 06, 2008

32位系统上如何让Oracle数据库使用超过2G内存

今天一个朋友问到这个问题,记录一下。

32位系统都有个地址空间的问题,它限制了可以使用的Oracle SGA大小。

32位Windows有两个boot设置:/3G允许进程使用3GB的用户地址空间;/PAE允许进程使用超过4GB的内存。
修改boot.ini如下,然后重启系统。
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect /3G /PAE
如果启用/3G,可以设置Oracle SGA大小到接近3GB;如果启用/PAE,再设置use_indirect_data_buffer=TRUE和db_block_buffers,data buffer大小不受4GB限制,可以很大。

而32位Linux下增大SGA limits需要relink;设置ramfs和use_indirect_data_buffer可以支持很大的data buffer。