Oracle 10g 最大可分配内存数问题,请数据库高手给予解答,详细问题见下:
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 10g 最大可分配内存数问题,请数据库高手给予解答,详细问题见下:相关的知识,希望对你有一定的参考价值。
我们医院的 HIS 采用 Oracle 10g 32位进行管理,操作系统为 32位 Windows Server 2003 标准版;近期出现连接数一多TNS就无响应的问题(已经连接的用户可以正常使用程序,只是拒绝新连接的用户),按照网上的说法增加了并发连接数,上调到 1000 ,死锁的情况有所改善,但是遇到极端情况仍然会死,后来使用 VB 写了一个测试程序在自己的计算机上测试,发现即使把并发连接数调到1000,也只能建立400个左右的连接!超过这个数目程序就会无响应,与我们单位的情况类似。
在网上搜索还发现一种观点:说是 Oracle10g 32位版本只能使用 1.5G 左右的物理内存,超过这个值就会拒绝连接,与并发连接数设置值无关,我想堂堂 Oracle 不会出现这样的限制吧??总该有个解决办法,突然想到了 Win2003 有个 PAE 参数,可以使得 2003 识别 4G 以上的物理内存,不知道这个参数对 Oracle 是不是会有用呢???
我们单位现在极端情况是连接数 500+ ,当然只是极少数情况会达到这个阈值,但是老是死机也蛮烦的,数据库菜鸟诚心希望高手指点一下,我该怎么办??????
这边的程序已经做好了,要换 64 位系统的话,什么 Rose双机、数据环境 统统都得重新装,由于医院的特殊性,业务是一定不能停的,重装很麻烦! 有没有什么办法使32位的 Oracle 突破500个连接呢?? 500个绝对够用了......
如果性能不满足,从可靠性、稳定性的角度出发,强烈建议你换成64位环境,即64位的操作系统+64位的oracle。
没错,系统升级、迁移过程是避免不了的。如果实在不想干,那么适度扩大pga的容量吧,当然,对应的很可能是sga的缩小,从而造成性能下降,这是oracle性能调优的过程。追问
那么再请不吝赐教,这两个参数应该有一定规矩的吧,要遵循怎样的准绳呢??
追答没有一定之规,都要根据系统实际情况进行调整的。
参考技术A 换64位版本的oracle 10g是一劳永逸的做法, 通过RMAN备份, 再导入, 没有你想像的那么麻烦, 如果不愿意这么做的话, 那么就只能从内存上解决了.1. 修改操作系统能识别的内存, 在win7下, 可以通过 bcdedit /set IncreaseUserVa 3072 命令, 使系统识别单个程序的内存达到 3G
2. 修改oracle参数, memory_target, sga_max_size 都设置为3072M追问
那服务器用的是 server2003 standard Edition ,不支持物理内存扩展(/PAE),我家的系统是 Server2003 Enterprise Edition 照理说应该支持 /PAE ,8GB 内存也够用,但是在这个系统上测试,SGA_Max_size 调到大于 2G ,结果 TNS 起不来了,试过貌似最大 1.7 G,也就是说所谓的“物理地址扩展”并没有让 Oracle 识别出 2GB 以上的内存,而仅仅是让 Windows 本身认出了更多的内存,不知道这样理解对否......
追答memory_target 也要同时调整才行, 否则数据库是起不来的, 想要扩大oracle内存
1. 操作系统要允许单个进程用到那么多内存
2. oracle自身扩大到那么大的内存
关于Oracle内存分配-解决实际运行时最大Session数不一致远小于系统配置最大的Session数目
一、相关的技术准备
1. 关于内存的介绍:https://blog.csdn.net/u013641333/article/details/82732526
2. PGA_AGGREGATE_TARGET -此参数用来指定所有session总计可以使用最大PGA内存。这个参数可以被动态的更改,取值范围从10M -- (4096G-1 )bytes。
https://blog.csdn.net/shuaiyu133/article/details/7369001
3.关于自动分配内存
https://blog.csdn.net/fjseryi/article/details/50818843
4.PGA的介绍
https://www.iteye.com/blog/wallimn-2250795
以上是关于Oracle 10g 最大可分配内存数问题,请数据库高手给予解答,详细问题见下:的主要内容,如果未能解决你的问题,请参考以下文章