社区
Oracle 高级技术
帖子详情
ORACLE9i SGA分配的问题
msf
2007-01-17 08:18:06
各位朋友。对于ORACLE的SGA分配置有规则吗?我现在的系统是双机。
3.5g的内 2个CUP。如何分配PGA。和SGA比较合理呢?具体的怎么做?最好有实例。谢谢
...全文
2252
9
打赏
收藏
ORACLE9i SGA分配的问题
各位朋友。对于ORACLE的SGA分配置有规则吗?我现在的系统是双机。 3.5g的内 2个CUP。如何分配PGA。和SGA比较合理呢?具体的怎么做?最好有实例。谢谢
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
大智 Kevin
2007-07-31
打赏
举报
回复
如果Oracle服务器单独作为数据库服务器,那么
SGA占50%
PGA占30%
OS占20%
其他情况就按照分配给数据库服务器的内存量,按比例分配。
这也不是固定的,SGA一般应为物理内存的50%-75%
其中80%的data buffer,15%的share pool,5%的其他
至于large pool和java pool就要看你用不用的着了,我的这个两个池设的都很小,java pool就设成了0m
liujinxing
2007-07-31
打赏
举报
回复
共享池:Memory*20%
高速缓冲池:Memory*50%
大型池:64M
JAVA池:100M
msf
2007-07-26
打赏
举报
回复
谢谢各位朋友。我配置如下:经验与大家分享一下。
共享池:800M
高速缓冲池:280M
大型池:8M
JAVA池:32M
现在有几个表有上百万条记录。运行正常。供大家参考
atsoftworld
2007-02-05
打赏
举报
回复
TO msf (飞黄腾达) :
你的服务器的性能不错,只要参考如上的资料调整一下配置,应该是可以的。
我没有去试,我们的系统有专用的数据库服务器,而且ORACLE上跑的数据就只有几十万条的数据和20台不到的客户端。
有什么心得记得给我来一份,我也学习学习
atsoftworld
2007-02-05
打赏
举报
回复
TO netstring(想跳了...) :
我找了资料,在windows 2000 advance server中,就可以不用装64位的操作系统,W2K AS有集成4GT技术,可参考资料http://www.webstudy8.com/2006/12/oracle24288.html:
突破oracle for win2K的2G内存限制
众所周知,在32位的操作系统如win2K上,操作系统能管理的内存为4GB(power(2,32) =4G) ,oracle使用的总内存有2G限制。目前大多数信息系统都能为数据库服务器配上4G物理内存甚至更多,但无论你为系统配置多大的物理内存,正常情况下都不能使oracle使用超过2G的内存(包含SGA、PGA等),从而造成系统资源浪费。那么,有没有什么办法能使运行在windows系统上的oracle使用超过2G的内存呢?windows 提供了一种叫4GT(4G Tuning)的技术,使得oracle使用超过2G(不超过3G)的内存成为可能。而为了让应用程序使用更大的内存,还有一种PSE36的技术,可以让oracle使用超过3G的内存。这里,只对我们使用4GT特性让oracle使用超过2G的内存进行讨论。
一 使用4GT特性的基本要求:
....尽管可以在不超过2G物理内存的系统上使用4GT特性,但oracle并不推荐这种做法,因为这将会严重降低系统性能。以我的经验来讲,如果系统未安装4G物理内存,最好也不要使用这种方法来让oracle使用更多的内存。此外,在需要你的oracle使用超过2G的内存时,数据库服务器最好不要再运行其他的服务,以减小系统的压力,让oracle工作得更好。
....另外,据MS的文档,4GT只能用于 Advanced Server , Datacenter版本上,Server 版以及 Professional 版不能使用4GT特性(实际上是不是也没有必要?)
二 为什么4GT能让应用程序使用超过2G的内存
....在正常情况下,windows系统对内存的分配是这样的:在内存地址0x00000000 到 0x7FFFFFFF之间的空间,交给应用程序使用,操作系统内核及其支持则使用内存地址 0x80000000 到 0xFFFFFFFF之间的空间。在使用4GT之后,操作系统将内核及其支持程序使用的内存地址空间压缩到 0xC0000000 到 0xFFFFFFFF之间,从而为应用程序“让”出来1G的空间。但是,仅仅“让”出来了这1G的空间还是不够的,还需要指定哪一个应用程序来使用这“多出来的”1G空间,以及如何分配份额等。后面将结合具体的参数设置来讨论。为便于讨论,我们将正常情况下应用程序可以使用的2G内存(即地址在 0x00000000 到 0x7FFFFFFF 之间的内存)称作普通内存,而将windows “让”出来的1G内存(地址在 0x80000000 到 0xBFFFFFFF之间)称作间接内存。
三 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 文件
..1) 确定oracle的缓冲区及共享池大小,假设作如下定义:
........ db_block_size = 4096
........ 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 专用服务器模式
netstring
2007-02-04
打赏
举报
回复
1.要装64位操作系统, 不然32位系统不能有效寻址.
2.最好跑一个instance, 一台机器上不要跑多个instance.
3.oracle 10g的话可以设置sga_target = 2G, PGA_aggreate_target=700M, 要是9i可以设置sga_max_size=2G, db_buffer_size=1.5G, share_pool_size=200M, PGA_aggreate_target=700M,其它default setting
4.以上设置假定你的系统为交易系统用途.
atsoftworld
2007-02-01
打赏
举报
回复
我们的服务器是3G内存,我也不知道该怎么分配
老是提示共享内存不足的提示
只有一个instance,不到百万条数据。
iihero
2007-02-01
打赏
举报
回复
二楼给的参数值也太小了吧。
它可是3.5G的可用内存。
用这些值放大到3.5G的70%成比例算一算吧。呵呵。
tgm78
2007-01-17
打赏
举报
回复
要看你这个机器上跑几个instance了,和数据量有多大
一般建议:
所以,建议:
共享池:200MB;
缓冲区高速缓冲:150MB;
大型池:10MB;######是共享模式吗?不是的话可改成10m
JAVA池:20MB;
Oracle
9i
调整
SGA
性能
调整
SGA
以及优化
oracle
数据库,提高数据库的性能。
oracle
9i
教程
NULL 博文链接:https://seav.iteye.com/blog/604726
Oracle
9i
10g 数据库管理详细
Oracle
9i
10g 数据库管理详细
oracle
9i
数据库课件
oracle
9i
数据库课件,ppt,非常详细,极力推荐!!!
经典
Oracle
9i
课件-ppt
Oracle
9i
的powerpoint 课件,讲解的非常详细, 可以作为初学
Oracle
9i
者的指导书和上机手册
Oracle 高级技术
3,494
社区成员
18,710
社区内容
发帖
与我相关
我的任务
Oracle 高级技术
Oracle 高级技术相关讨论专区
复制链接
扫一扫
分享
社区描述
Oracle 高级技术相关讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章