oracle连接数一直超出,Oracle超出最大連接數問題及解決(…

用過Oracle的應該都熟悉如何查看和設置Oracle數據庫的最大連接數。這里就再啰嗦一遍。

查看當前的連接數,可以用select count(*) from v$process;

設置的最大連接數(默認值為150)select value from v$parameter where name =‘processes’;

修改最大連接數alter system set processes = 300 scope = spfile;

都知道,當數據庫最大連接數不夠時會出現客戶端連接間歇性失敗,報錯ORA-12519。設置大點一般就可以了。但是做大型項目的時候還是會遇到一些不正常的問題,比如:設置最大連接數800,但是正常連接200多個就會報錯,這也是我在一次面試中得知的。回來因為自己的垃圾機器上沒有裝Oracle,就查了些資料,發現還真的有這個問題,不過不是什么難題,貌似很多人遇到過,看來我們真的做項目太少了吧,頂多同時測試的也就十多個人。

網上搜集到有此類問題的描述,如下。

服務器IBM XSERVER,內存:4G

oracle 數據庫配置的主要參數如下:

processes integer 500

sessions integer 585

pga_aggregate_target big integer 350M

sga_max_size big integer 1256M

sga_target big integer 1152M

shared_pool_size big integer 400M

large_pool_size big integer 16M

看樣子挺不粗的配置,但是就這樣默認情況還是會出現連接數不夠的現象。數據庫配置的連接數是500個,但是現在當Oracle的連接數達到120個時候,其他的客戶端就無法再連接上Oracle服務器了,報個錯:ORA-12518:TNS:監聽程序無法分發客戶機;但是已經連接上數據庫的應用還可以正常應用,就是其他沒連上的就再也連不上了,除非已有的連接有退出的,其他的才能再聯上,就是可連接的總數是120個;

有網友說是在可以在listener.ora中加入一行: direct_handoff_ttc_=off,經測試此方法依舊不行;

這期間我嘗試着把pga_aggregate_target改成200或者500等,結果是一樣的。也嘗試着把sga_target改成800m后,結果數據庫就起不來了,提示說要不能小於1024m。

后來查到有可能是oracle 10g forwin32的一個bug,上網下了補丁,打完補丁后的版本是:10.2.0.3;也曾懷疑是不是windows2003的tcp連接數不夠,上網查說好像是有這毛病,下了個2003的補丁,把tcp連接數擴到了1000,結果能夠達到可以有250個並發連接,但是再多就又連不上了。

現在就是不太清楚究竟是什么參數配置的不合適(不管是oracle10g的,還是windows2003的),才會造成實際上沒有達到oracle設置的最大連接數時就不能連接了。

最后,懷疑是不是windows 2003(32位)的問題,於是就裝了個64位的windows 2003,同樣版本的oracle10g,裝好后就把連接數process參數配置成800,然后做連接測試,一直可以有800個session連接上來,到現在為止,可以大致總結出症結所在了,就是windows2003 server(32位)的操作系統,在安裝oracle10g(10.2.0.1-10.2.0.3)時有問題,連接數不能達到系統配置的那么大,可以采用64位的替代。找到問題根源了,就可以想到究竟為什么windows2003 server(32位)的操作系統和oracle 10g數據庫連接數會有限制,修改一下2003的配置或者oracle10g的配置, 就可解決掉這個問題。

解決方案:

A.修改Oracle參數

1、原有參數

#pga_aggregate_target=67108864

#processes=500

#sessions=555

# pga_aggregate_target此參數是擴大並發連接數占用內存大小。

# 可調整此參數,放大或縮小,同時影響並發數量。

# 公式: 約=可按照並發數量*4M

pga_aggregate_target=720M

# processes、sessions是擴大並發連接數,是同時使用。

# 公式: sessions = processes *1.1 +5

processes=600

sessions=665

2、在監聽參數文件LISTENER.ORA 文件中增加參數

direct_handoff_ttc_listener = off

3、重新啟動數據庫服務。

B.修改windows配置

1、修改Windows系統中Boot.ini文件

/3GB /PAE

說明:修改操作系統中Boot.ini文件,可以使Oracle使用更多的內存空間。

2、修改用戶組策略中鎖定內存頁大小權限。

參數修改完畢問題解決。

3、重啟計算機。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值