32位Windows上使用超过1.7GB SGA的方法
前言
正常情况下,Oracle SGA在32位操作系统下的最高上限是1.7GB;若要调到1.7GB以上,就会提示ORA-27102(out of memory)错误。
要想使SGA超过1.7GB,则必须使用Windows提供的4GT(4G Tunning)技术。4GT技术原则上可以使用在物理内存不超过2GB的状况下,但Oracle公司不推荐这种做法,这样会严重影响Oracle运行的性能。但物理内存在4GB或4GB以上时,为使Oracle 9.2.0.x的SGA超过1.7GB,则必须使用4GT技术。
据MS的文档,4GT只能用于以下Windows的版本:
Ø Windows 2000 Datacenter Server
Ø Windows 2000 Advanced Server
Ø Windows 2003 Datacenter Edition(32bit)
Ø Windows 2003 Enterprise Edition(32bit)
4GT支持的Oracle数据库的版本:
Ø Oracle 8.1.6.X
Ø Oracle 8.1.7.X
Ø Oracle 9.2.X
注意:不支持Oracle 9.1.0.x
方法
u 第一步:修改 boot.init的启动参数,加入 /3G /PAE切换开关。
[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" /3G /PAE /fastdetect
PAE:Pysical Address Extensions.
u 第二步:修改注册表,加入AWE_WINDOW_MEMORY
AWE:Address Windows Extensions。
在Oracle 8.1.7版本及其以下版本启动数据库时,不需要设置AWE_WINDOW_MEMORY的最小值,而在Oracle 9.2.0.x的版本中则需要强制设定AWE_WINDOW_MEMORY的最小值。这个最小值在Oracle 8.1.7中通过 DB_BLOCK_LRU_LATCHES参数设定,在Oracle9.2.0.x中则通过 _DB_BLOCK_LRU_LATCHES隐含参数设定。Oracle 9.2.0.x的AWE_WINDOW_MEMORY的最小值由以下的公式计算:
MIN(AWE_WINDOW_MEMORY)=(4096 * DB_BLOCK_SIZE * _DB_BLOCK_LRU_LATCHES)/8
_DB_BLOCK_LRU_LATCHES = (Max buffer pools * SETS_PER_POOL)
Max Buffer Pools是个常量(等于8),SETS_PER_POOL是个变量,它的大小是由是否启用VLM(即设定USE_INDIRECT_DATA_BUFFERS=TRUE参数)决定:
SETS_PER_POOL = 2* CPU_COUNT (启用 VLM)
SETS_PER_POOL= CPU Count /2 (不启用VLM)
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余1页未读,立即下载