突破oracle for win2K的2G内存限制

突破oracle for win2K的2G内存限制

========================================

众所周知,在32位的操作系统如win2K上,操作系统能管理的内存为4GB(power(2,32) =4G) ,使用的总内存有2G限制。目前大多数信息系统都能为数据库服务器配上4G物理内存甚至更多,但无论你为系统配置多大的物理内存,正常情况下都不能使使用超过2G的内存(包含SGA、PGA等),从而造成系统资源浪费。那么,有没有什么办法能使运行在系统上的 使用超过2G的内存呢? 提供了一种叫4GT(4G )的技术,使得使用超过2G(不超过3G)的内存成为可能。而为了让应用程序使用更大的内存,还有一种PSE36的技术,可以让 使用超过3G的内存。这里,只对我们使用4GT特性让使用超过2G的内存进行讨论。

一 使用4GT特性的基本要求:

….尽管可以在不超过2G物理内存的系统上使用4GT特性,但并不推荐这种做法,因为这将会严重降低系统性能。以我的经验来讲,如果系统未安装4G物理内存,最好也不要使用这种方法来让使用更多的内存。此外,在需要你的使用超过2G的内存时,数据库服务器最好不要再运行其他的服务,以减小系统的压力,让工作得更好。

….另外,据MS的文档突破oracle for win2K的2G内存限制,4GT只能用于 , 版本上, 版以及 版不能使用4GT特性(实际上是不是也没有必要?)

二 为什么4GT能让应用程序使用超过2G的内存

….在正常情况下,系统对内存的分配是这样的:在内存地址 到 之间的空间,交给应用程序使用,操作系统内核及其支持则使用内存地址 到 之间的空间。在使用4GT之后,操作系统将内核及其支持程序使用的内存地址空间压缩到 到 之间,从而为应用程序“让”出来1G的空间。但是,仅仅“让”出来了这1G的空间还是不够的,还需要指定哪一个应用程序来使用这“多出来的”1G空间,以及如何分配份额等。后面将结合具体的参数设置来讨论。为便于讨论,我们将正常情况下应用程序可以使用的2G内存(即地址在 到 之间的内存)称作普通内存,而将 “让”出来的1G内存(地址在 到 之间)称作间接内存。

三 使用超过2G内存,不超过3G内存的具体设置步骤:

1 首先应卸载实例,关闭服务。

2 打开操作系统3G开关:

….修改boot.ini文件,在启动项中添加 /3G 参数。修改过后的boot.ini文件应该类似以下内容:

boot

=8

=multi(0)disk(0)rdisk(0)(1)

multi(0)disk(0)rdisk(0)(1)=” 2000 ” /3G /

注意在启动win2K 的一栏里,多了一个 /3G 参数。这个参数的作用,就是让启动时,将自己的内核及支持程序装载到内存地址 到 之间,给应用程序留出3G的空间来。

3 修改 的 init.ora 文件

..1) 确定的缓冲区及共享池大小,假设作如下定义:

…….. = 4096

…….. = # 缓冲区大小为1G

…….. = # 使用300M共享池

..2) 添加下列各项内容:

…….. ffers = true

…….. # 告诉可以使用间接内存(即可以使用让出来的1G内存作为数据缓冲区)

…….. = true

…….. # 把 SGA锁定到内存中,不产生页面交换文件(8i的参数可能是 = true)

…….. # 对于一个有4G物理内存的系统来讲,可能这一个参数并不是必须的

4 修改注册表,定义的使用常规内存大小

….在注册表 中添加一个二进制值,名称为 ,值的单位为字节,大小为你需要让使用普通内存作为缓存的大小(不是让出来的1G,而是内存地址在 到 之间的内存大小)。假如设为,即200M大小,那么的数据缓冲区将占用200M的普通内存,其余部分(1G – 200M = 824M)则使用间接内存。

5 重新启动操作系统oracle 运行l内存限制,启动数据库。OKoracle 运行l内存限制,你现在的 可以使用2G + 824M内存了。

四 几个补充讨论

1 系统“让”出来的1G间接内存,只能用于数据缓冲区

….在4GT特性测试中发现,间接内存只能用于数据缓冲区,而不能用于共享池,也不能分配给用户作为PGA。或许有其他的参数可以定义,但我查到的文献中没有任何一篇讲间接内存可以用于哪些地方,而在我们的测试中发现按上面的修改后,间接内存只能用于数据缓冲区。此结论只作为一个经验突破oracle for win2K的2G内存限制,不是定论,请各位大侠补充修正。

2 注册表中 参数大小的定义

….这个参数定义缓冲池使用普通内存的大小,不能太小。在数据块大小为4K,缓冲池为1G(即使用个块作缓冲池)大小的情况下,此参数定义为100M时,不能启动,定义为200M时正常启动。根据我阅读文献后对这个情况的理解,数据缓冲区的每一个块的块头信息都将存放于普通内存中,不能存放于间接内存中。如果此参数定义过小,导致缓冲区块头信息都不能存放,则可导致数据库启动失败。那么,是不是同样大小的缓冲区,数据库块越大oracle 运行l内存限制,则这个参数就可以定义得越小,因而可以占用更少的普通内存呢?有待验证。

….在具体的应用中,如何定义此参数,应综合考虑最大并发连接数(专用服务器模式下)、用户重用的堆栈大小、排序区、共享池、大池等内存参数的设置情况,尽可能的将数据缓冲区放到间接内存中,充分利用系统的资源。

3 间接内存的性能

….据的文献讲,间接内存的性能(我想主要是指速度和效率吧?)不如直接内存,绝不推荐在未安装有4G物理内存的系统上使用4GT特性。我不知道如何比较间接内存与直接内存的速度和效率,因而未作测试,姑且信之。

….一点小结,期望能对大家有所启发。还请各位大侠补充指正。

以上内容的测试环境:

IBM X360 +4G内存 + RAID 5阵列

2000 SP3 + 8.1.6 专用服务器模式

公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299

资源库 - 资源分享下载网 » 突破oracle for win2K的2G内存限制

常见问题FAQ

关于资源售价和售后服务的说明?
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值。软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助费用,收取的赞助费仅用来维持本站的日常运营!毕竟收集整理资料需要投入云计算资源和站长大量的精力。
代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 hao.35dc.com 试试。

发表评论

资源库,由老程序员细心甄别、精心筛选,只为提供优质的源码资源

关于我们 联系我们