伺服器IBM XSERVER,記憶體:4G
oracle 資料庫配置的主要參數如下:
processes integer 800
sessions integer 885
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
資料庫配置的串連數是800個,但是現在當oracle的串連數達到250個時候,其他的用戶端就無法再串連上oracle伺服器了,報個錯:ORA-12518: TNS: 監聽程式無法分發客戶機 ;
但是已經串連上資料庫的應用還可以正常應用,就是其他沒連上的就再也連不上了,除非已有的串連有退出的,其他的才能再聯上,就是可串連的總數是250個;
上網查:說是在可以在listener.ora中加入一行: direct_handoff_ttc_<listener name>=off,但是依舊不成;
這期間我們嘗試著把
pga_aggregate_target 改成200或者500等,結果是一樣的;
sga_target改成800m後,結果資料庫就起不來了,提示說要不能小於1024m;
後來查到有可能是oracle 10g for win32的一個bug,上網下了補丁,打完補丁後的版本是:10.2.0.3);還懷疑是不是windows 2003的tcp串連數不夠,上網查說好像是有這毛病,下了個2003的補丁,把tcp串連數擴到了1000,結果能夠達到可以有350個並發串連,但是再多就又連不上了;
現在就是不太清楚究竟是什麼參數配置的不合適,(不管是oracle10g的,還是windows 2003的),才會造成實際上沒有達到oracle設定的最大串連數時就不能串連了;
又後來,我們懷疑是不是windows 2003 32位的問題,於是就裝了個64位的windows 2003,同樣版本的oracle 10g,裝好後就把串連數process參數配置成800,然後做串連測試,一直可以有800個session串連上來,到現在為止,可以大致總結出癥結所在了,就是我們裝的這個windows 2003 server(31位)的作業系統,在安裝oracle 10g(10.2.0.1-10.2.0.3)時 有問題,串連數不能達到系統配置的那麼大;可以採用64位的替代。但是我在想,究竟為什麼windows 2003 server(31位)的作業系統+oracle 10g資料庫連接數會有限制,有沒有什麼辦法,修改一下2003的配置或者oracle 10g的配置, 就可解決掉這個問題,
解決方案二、
解決方案:
一、修改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、重新啟動資料庫服務。
二、1、修改Windows系統中Boot.ini檔案
/3GB /PAE
說明:修改作業系統中Boot.ini檔案,可以使oracle使用更多的記憶體空間。
2、修改使用者組策略中鎖定記憶體頁大小許可權。
參數修改完畢問題解決。
3、重啟電腦。