博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle中4G以上内存的使用方法
阅读量:2506 次
发布时间:2019-05-11

本文共 2468 字,大约阅读时间需要 8 分钟。

 

         由于工作需要,单位的服务器进行升级,使用至强CPU,内存为8GB,系统为windows2003,数据库为oracle8i所以一直在查找如何在32位系统中使oracle使用超过4G内存的问题,baidu了n篇文章,发现在细节上写的都不够详细,又到微软和oracle网站上查找,终于对原理和方法有了一个大致了解,在此写出来供大家参考,如有错误还请指正。

  1、由于32位系统内存寻址只能到4G,所以在32位系统上使用超过4G的内存,首先要使用支持大内存的软硬件,比如使用至强的CPU(虽然是32位CPU,但是上增加了扩展寻址的能力),windows2003企业版或数据中心版。
  2、在操作系统中启用PAE(Physical Address Extensions )功能,这样oracle便可以通过
windows的AWE(Address Windowing Extensions)API使用多余4G的内存。
  方法:打开系统根目录下的隐藏文件 Boot.ini ,添加 PAE 开关:
  (1)multi(0)disk(0)rdisk(0)partition(2)\%systemroot%="Windows
Server 2003, Datacenter Edition" /PAE
  (2)multi(0)disk(0)rdisk(0)partition(2)\%systemroot%="Windows Server 2003, Datacenter Edition" /3GB /PAE
  我们知道32位windows对于每个进程都分配4GB内存(虚拟内存),其中起始的2GB归windows核心使用,考试@大提示剩余的归应用程序本身使用。因此这两种方法的区别就在于:
  方法一只使用了/PAE开关表示启用/PAE功能但是系统对每个进程仍然采用2G核心、2G应用程序的内存分配方式。
  方法二除了/PAE开关还使用了/3GB开关表示不仅启用/PAE功能并且系统对每个进程采用1G核心、3G应用程序的内存分配方式。不过这种方式不支持大于16GB的内存,也就是说如果你的实际内存超过16GB则只能使用方法一,这是因为大于16GB后1G的核心内存已经不够windows实现PAE功能。
  3、给运行Oracle数据库的操作系统帐户,授予"Lock Pages in Memory"的系统权限。
  执行 gpedit.msc打开“组策略”控制台
  “计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“用户权利指派”
  双击右边“锁定内存中的页”(或名为"内存中锁定页"),在“本地安全策略设置”对话框中,单击“添加”按钮,在“选择用户或组”对话框中,添加有权运行 oracle的帐户。
  4、配置oracle数据库的参数文件(init*.ora),添加USE_INDIRECT_DATA_BUFFERS=TRUE参数,表示使用扩展的内存。
  5、修改注册表中的AWE_WINDOW_MEMORY键值为合适值。该值表示在3GB内存中(如果使用了/3GB开关,如果没有使用该开关则为2GB)有多少用于
数据库块缓存。
  注意:
  (1)该值位置在HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0为二进制类型,单位为bytes。
  (2)如果不存在表示使用默认值1GB。
  (3)该值太大或太小都有可能导致数据库无法启动。
  这里解释一下:尽管我们现在拥有超过4GB的内存,但是这些多余的内存并不是oracle可以随便使用的,这些内存只能用于数据库块缓存(即db_buffer),而像share Pool,log buffer等只能保存在应用程序可访问的3GB内存中(如果使用了/3GB开关,如果没有使用该开关则为2GB)。在这里我将4GB以外内存中的数据库块缓存叫做AWE数据块缓存(自己起的名字:-))。这里又有问题了,oracle缓冲的数据块并不能全部保存到4GB以外的内存中,还必须在应用程序可直接访问的3GB内存(如果使用了/3GB开关,如果没有使用该开关则为2GB)中使用一部分空间来保存,这一部分内存我称为直接数据块缓存(自己起的名字:-))。也就是说“数据块缓存=AWE数据块缓存+直接数据块缓存”,为什么会这样呢,因为oracle缓冲到内存中的每个数据块的头部必须保存到“直接数据块缓存”中,是不能够保存到“AWE数据块缓存”中的,并且每个数据块的大小(db_block_size)和数据块的多少(db_block_buffers)都会影响到头部占用空间的多少。并且访问“直接数据块缓存”要比“AWE数据块缓存” 快, 因此AWE_WINDOW_MEMORY一般来讲需要设置的尽量大(但不能无限大,比如必须小于3GB),oracle建议以默认值为基础,以20%递增扩大,进行
测试。比如先测试1GB大小,在测试1.2GB大小等等。
  一般来讲AWE_WINDOW_MEMORY有一个最小公式
  min(AWE_WINDOW_MEMORY)=(4096 * db_block_size * db_block_lru_latches)/8
  其中:
  max buffer pools是一个常量=8
  sets_per_tool=2*cpu_count (use_indirect_data_buffers=true)
  sets_per_tool=cpu_count/2 (use_indirect_data_buffers<>true)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12330444/viewspace-582279/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12330444/viewspace-582279/

你可能感兴趣的文章
spfile
查看>>
Team Foundation Service更新:改善了导航和项目状态速查功能
查看>>
0x13 链表与邻接表
查看>>
js封装设置获取cookie
查看>>
二值图像连通区域标记
查看>>
MVC in Javascript
查看>>
eclipse 创建的Android工程的结构
查看>>
第8章 Android异常与性能优化相关面试问题
查看>>
linux 定时备份文件夹
查看>>
有道单词导入 大量有道单词 生词本 批量导入 添加 有道单词XML 背单词
查看>>
jQuery Easing动画效果扩展插件
查看>>
bzoj 1002 [FJOI2007]轮状病毒 Matrix-Tree定理+递推
查看>>
Selenium WebDriver- 操作JavaScript的Alert弹窗
查看>>
娘的,自己的求逆序对模板又不好使了。。。。。。。。
查看>>
C#面向对象模式设计第十四讲:Template Method 模板模式(行为型模式)
查看>>
linux后台运行命令:&和nohup
查看>>
springboot + shiro学习(配置SecurityManager,Realm)
查看>>
http://desk.zol.com.cn/1600x900/
查看>>
Linux基础之命令练习Day3-文件管理:cat,tar,gzip,vim,ln
查看>>
iOS中使用nil NULL NSNULL的区别
查看>>