专业文档搜索
手机娱乐 收藏夹 Flash吧 贴贴吧 文档库 Flash游戏 Flash动漫
Google
 
登录 |  注册  | 目录
本主题共有 1 贴,  点击:122 次 回复 | 发贴 | 收藏 | 投诉
1 突破oracleforwin2K的2G内存限制
 3 修改oralce 的 init.ora 文件
  
  ..1) 确定oracle的缓冲区及共享池大小,假设作如下定义:
  
  ........ db_block_size = 4096 bbs.bitsCN.com
  
  ........ db_block_buffers = 262144 # 缓冲区大小为1G
  
  ........ 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使用常规内存大小
  
  ....在注册表 _Local_Machine中添加一个二进制值,名称为AWE_WINDOW_MEMORY ,值的单位为字节,大小为你需要让oracle使用普通内存作为缓存的大小(不是windows让出来的1G,而是内存地址在0x00000000 到 0x7FFFFFFF 之间的内存大小)。假如设为209715200,即200M大小,那么oracle的数据缓冲区将占用200M的普通内存,其余部分(1G - 200M = 824M)则使用间接内存。
  
  5 重新启动操作系统,启动数据库。OK,你现在的 oracle 可以使用2G + 824M内存了。
  
  四 几个补充讨论
  
  1 windows系统“让”出来的1G间接内存,只能用于数据缓冲区
  
  ....在4GT特性测试中发现,间接内存只能用于数据缓冲区,而不能用于共享池,也不能分配给用户作为PGA。或许有其他的参数可以定义,但我查到的文献中没有任何一篇讲间接内存可以用于哪些地方,而在我们的测试中发现按上面的修改后,间接内存只能用于数据缓冲区。此结论只作为一个经验,不是定论,请各位大侠补充修正。
  
  2 注册表中 AWE_WINDOW_MEMORY 参数大小的定义
  
  ....这个参数定义缓冲池使用普通内存的大小,不能太小。在数据块大小为4K,缓冲池为1G(即使用262144个块作缓冲池)大小的情况下,此参数定义为100M时,oracle不能启动,定义为200M时正常启动。根据我阅读文献后对这个情况的理解,数据缓冲区的每一个块的块头信息都将存放于普通内存中,不能存放于间接内存中。如果此参数定义过小,导致缓冲区块头信息都不能存放,则可导致数据库启动失败。那么,是不是同样大小的缓冲区,数据库块越大,则这个参数就可以定义得越小,因而可以占用更少的普通内存呢?有待验证。
  
  ....在具体的应用中,如何定义此参数,应综合考虑最大并发连接数(专用服务器模式下)、用户重用的堆栈大小、排序区、共享池、大池等内存参数的设置情况,尽可能的将数据缓冲区放到间接内存中,充分利用系统的资源。
  
  3 间接内存的性能
  
  ....据oracle的文献讲,间接内存的性能(我想主要是指速度和效率吧?)不如直接内存,绝不推荐在未安装有4G物理内存的系统上使用4GT特性。我不知道如何比较间接内存与直接内存的速度和效率,因而未作测试,姑且信之。
  
  ....一点小结,期望能对大家有所启发。还请各位大侠补充指正。
  
  以上内容的测试环境:
  
  IBM X360 +4G内存 + RAID 5阵列
  
  Windows 2000 Advaced Server SP3 + oracle 8.1.6 专用服务器模式
[作贴] 芳芳 [发表] 2008-01-08 12:56:52.0  回复


快速回复
标题
内容
贴图
用户 你还没有登录,请从这里登录免费注册
验证码
   
   
Copyright (c) Yeegle.com 2003
耗时 63 毫秒