Posted on 2009-07-21 11:53
波波^_^ 阅读(153)
评论(0) 编辑 收藏
在32位的操作系统(如windows server 2003)oracle使用的总内存有2G限制。无论你为系统配置多大的物理内存,正常情况下都不能使oracle使用超过2G的内存(包含SGA、PGA等)。windows 提供了一种叫4GT(4G Tuning)的技术,使得oracle使用超过2G(不超过3G)的内存成为可能。
oracle使用超过2G内存,不超过3G内存的具体设置步骤:
1 首先应卸载实例,关闭oracle服务。
2 打开操作系统3G开关:
....修改boot.ini文件,在启动windows项中添加 /3G 参数。修改过后的boot.ini文件应该类似以下内容:
[boot loader]
timeout=8
default=multi(0)disk(0)rdisk(0)partition(1)
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)="Microsoft Windows 2000 Advanced Server" /3G /fastdetect
注意在启动win2K AdvServer的一栏里,多了一个 /3G 参数。这个参数的作用,就是让windows启动时,将自己的内核及支持程序装载到内存地址 0xC0000000 到 0xFFFFFFFF 之间,给应用程序留出3G的空间来。
3 修改oralce 的 init.ora 文件
方法: (sid以szhii为例)
A、 在“运行”输入cmd
B、 C:\Documents and Settings\Administrator>sqlplus /nolog
C、 Sql> conn sys/oracle@szhii as sysdba
D、 Sql> create pfile from spfile;
说明:(建创文件放在$ \ora92\database \下,文件名称为init+(sid名称).ora (如sid名称为 szhii,则initszhii.ora) 备份此文件,然后到此文件进行修改)
修改内容如下:
..1) 确定oracle的缓冲区及共享池大小,假设作如下定义:
........ db_block_size = 4096
........db_block_buffers = 262144 # 缓冲区大小为1G (此项与文件中的db_cache_size冲突,因此删除此项或屏闭此项)
........ share_pool_size = 314572800 # 使用300M共享池
..2) 添加下列各项内容:
........ use_indirect_data_buffers = true
........ # 告诉oracle可以使用间接内存(即可以使用windows让出来的1G内存作为数据缓冲区) ........ pre_page_sga = true
........ # 把oracle SGA锁定到内存中,不产生页面交换文件(8i的参数可能是lock_sga = true)
........ # 对于一个有4G物理内存的系统来讲,可能这一个参数并不是必须的
4 修改注册表,定义oracle的DBbuffer使用常规内存大小
... AWE_WINDOW_MEMORY参数值,也就是在HKEY_LOCAL_MACHINE\ Software\Oracle\HOME0下中添加一个二进制值,名称为AWE_WINDOW_MEMORY ,值的单位为字节,大小为你需要让oracle使用普通内存作为缓存的大小(不是windows让出来的1G,而是内存地址在0x00000000 到 0x7FFFFFFF 之间的内存大小)。假如设为209715200,即200M大小,那么oracle的数据缓冲区将占用200M的普通内存,其余部分(1G - 200M = 824M)则使用间接内存。
(说明:修改完成以后看量否正确可以使用修改的文件启动数据库,具体方法如下:
Sql> startup pfile=' D:\oracle\ora92\database\INITszhii.ORA';
正常启动说明修改成功,否则修改不成功。
修改成功以后,调用生成spfile
Sql> create spfile from pfile
5 重新启动操作系统,启动数据库。OK,你现在的 oracle 可以使用2G + 824M内存了。