日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Oracle超出最大连接数问题及解决

發(fā)布時(shí)間:2024/9/27 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle超出最大连接数问题及解决 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

用過Oracle的應(yīng)該都熟悉如何查看和設(shè)置Oracle數(shù)據(jù)庫(kù)的最大連接數(shù)。這里就再啰嗦一遍。

查看當(dāng)前的連接數(shù),可以用:select count(*) from v$process;
設(shè)置的最大連接數(shù)(默認(rèn)值為150)select value from v$parameter where name = ‘processes’;
修改最大連接數(shù)alter system set processes = 300 scope = spfile;

都知道,當(dāng)數(shù)據(jù)庫(kù)最大連接數(shù)不夠時(shí)會(huì)出現(xiàn)客戶端連接間歇性失敗,報(bào)錯(cuò)ORA-12519。設(shè)置大點(diǎn)一般就可以了。但是做大型項(xiàng)目的時(shí)候還是會(huì)遇到一些不正常的問題,比如:設(shè)置最大連接數(shù)800,但是正常連接200多個(gè)就會(huì)報(bào)錯(cuò),這也是我在一次面試中得知的。回來因?yàn)樽约旱睦鴻C(jī)器上沒有裝Oracle,就查了些資料,發(fā)現(xiàn)還真的有這個(gè)問題,不過不是什么難題,貌似很多人遇到過,看來我們真的做項(xiàng)目太少了吧,頂多同時(shí)測(cè)試的也就十多個(gè)人。

網(wǎng)上搜集到有此類問題的描述,如下。

服務(wù)器IBM XSERVER,內(nèi)存:4G
oracle 數(shù)據(jù)庫(kù)配置的主要參數(shù)如下:

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

看樣子挺不粗的配置,但是就這樣默認(rèn)情況還是會(huì)出現(xiàn)連接數(shù)不夠的現(xiàn)象。數(shù)據(jù)庫(kù)配置的連接數(shù)是500個(gè),但是現(xiàn)在當(dāng)Oracle的連接數(shù)達(dá)到120個(gè)時(shí)候,其他的客戶端就無法再連接上Oracle服務(wù)器了,報(bào)個(gè)錯(cuò):ORA-12518: TNS: 監(jiān)聽程序無法分發(fā)客戶機(jī);但是已經(jīng)連接上數(shù)據(jù)庫(kù)的應(yīng)用還可以正常應(yīng)用,就是其他沒連上的就再也連不上了,除非已有的連接有退出的,其他的才能再聯(lián)上,就是可連接的總數(shù)是120個(gè);

有網(wǎng)友說是在可以在listener.ora中加入一行: direct_handoff_ttc_?=off,經(jīng)測(cè)試此方法依舊不行;

這期間我嘗試著把pga_aggregate_target 改成200或者500等,結(jié)果是一樣的。也嘗試著把sga_target改成800m后,結(jié)果數(shù)據(jù)庫(kù)就起不來了,提示說要不能小于1024m。

后來查到有可能是oracle 10g for win32的一個(gè)bug,上網(wǎng)下了補(bǔ)丁,打完補(bǔ)丁后的版本是:10.2.0.3;也曾懷疑是不是windows 2003的tcp連接數(shù)不夠,上網(wǎng)查說好像是有這毛病,下了個(gè)2003的補(bǔ)丁,把tcp連接數(shù)擴(kuò)到了1000,結(jié)果能夠達(dá)到可以有250個(gè)并發(fā)連接,但是再多就又連不上了。

現(xiàn)在就是不太清楚究竟是什么參數(shù)配置的不合適(不管是oracle10g的,還是windows 2003的),才會(huì)造成實(shí)際上沒有達(dá)到oracle設(shè)置的最大連接數(shù)時(shí)就不能連接了。

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

解決方案:
A.修改Oracle參數(shù)

1、原有參數(shù)
#pga_aggregate_target=67108864
#processes=500
#sessions=555
# pga_aggregate_target此參數(shù)是擴(kuò)大并發(fā)連接數(shù)占用內(nèi)存大小。
# 可調(diào)整此參數(shù),放大或縮小,同時(shí)影響并發(fā)數(shù)量。
# 公式: 約=可按照并發(fā)數(shù)量*4M
pga_aggregate_target=720M
# processes、sessions是擴(kuò)大并發(fā)連接數(shù),是同時(shí)使用。
# 公式: sessions = processes *1.1 +5
processes=600
sessions=665
2、在監(jiān)聽參數(shù)文件LISTENER.ORA 文件中增加參數(shù)
direct_handoff_ttc_listener = off
3、重新啟動(dòng)數(shù)據(jù)庫(kù)服務(wù)。

B.修改windows配置

1、修改Windows系統(tǒng)中Boot.ini文件
/3GB /PAE
說明:修改操作系統(tǒng)中Boot.ini文件,可以使Oracle使用更多的內(nèi)存空間。
2、修改用戶組策略中鎖定內(nèi)存頁(yè)大小權(quán)限。
參數(shù)修改完畢問題解決。
3、重啟計(jì)算機(jī)

總結(jié)

以上是生活随笔為你收集整理的Oracle超出最大连接数问题及解决的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。