最近,筆者參與某培訓(xùn)活動(dòng)保障任務(wù),活動(dòng)現(xiàn)場(chǎng)部署有100余臺(tái)電腦終端,數(shù)據(jù)庫(kù)服務(wù)器為Oracle 10g。培訓(xùn)活動(dòng)的一項(xiàng)主要內(nèi)容是使用地理信息系統(tǒng)進(jìn)行圖上作業(yè)。前期,我們對(duì)每一臺(tái)電腦終端的硬件和軟件,特別是對(duì)保存有大比例尺地圖底圖的數(shù)據(jù)庫(kù)調(diào)用都進(jìn)行了嚴(yán)格測(cè)試,系統(tǒng)使用均正常??稍趯?shí)際培訓(xùn)過(guò)程中,突然出現(xiàn)部分電腦無(wú)法正常調(diào)用地圖底圖數(shù)據(jù),提示需要連接地理信息數(shù)據(jù)庫(kù)(如圖1)。
圖1 故障提示
顯然這是不正常的,實(shí)際運(yùn)行過(guò)程中都是系統(tǒng)自動(dòng)連接數(shù)據(jù)庫(kù),不可能出現(xiàn)手工連接操作提示。事實(shí)是,無(wú)論輸入什么值,都不能進(jìn)行有效連接。
前期,筆者在安裝每一臺(tái)電腦終端時(shí),都曾對(duì)系統(tǒng)運(yùn)行進(jìn)行過(guò)測(cè)試,結(jié)果表明均正常,說(shuō)明單臺(tái)終端的系統(tǒng)安裝和運(yùn)行都是沒(méi)有問(wèn)題的。根據(jù)故障提示,初步判斷是在穩(wěn)定性上出了問(wèn)題,主要存在三個(gè)方面的穩(wěn)定性問(wèn)題:一是系統(tǒng)本身運(yùn)行不夠穩(wěn)定;二是數(shù)據(jù)庫(kù)連接不夠穩(wěn)定;三是網(wǎng)絡(luò)環(huán)境不夠穩(wěn)定。三個(gè)方面,只要哪一個(gè)問(wèn)題出現(xiàn),都會(huì)導(dǎo)致連接故障。順著這個(gè)思路由易到難,首先利用Ping命令快速檢查了終端到服務(wù)器之間的網(wǎng)絡(luò)運(yùn)行情況,包括連通性及穩(wěn)定性狀態(tài)等。通過(guò)發(fā)送100個(gè)數(shù)據(jù)包到服務(wù)器,發(fā)現(xiàn)無(wú)任何丟包和斷點(diǎn)情況存在,說(shuō)明網(wǎng)絡(luò)運(yùn)行環(huán)境穩(wěn)定,連通性好(如圖2)。
隨后,對(duì)終端系統(tǒng)穩(wěn)定性進(jìn)行了測(cè)試。當(dāng)全網(wǎng)只有一臺(tái)終端在線運(yùn)行時(shí),無(wú)論怎樣操作,包括正常開(kāi)關(guān)調(diào)用,異常中斷運(yùn)行等,系統(tǒng)運(yùn)行都相當(dāng)穩(wěn)定,沒(méi)有出現(xiàn)任何問(wèn)題。但當(dāng)在線運(yùn)行的終端數(shù)量超過(guò)50臺(tái)時(shí),系統(tǒng)開(kāi)始出現(xiàn)時(shí)連時(shí)斷現(xiàn)象。由此看來(lái),終端機(jī)器連接數(shù)量是導(dǎo)致故障出現(xiàn)的最直接的表象原因。
根據(jù)系統(tǒng)故障提示,我們知道是數(shù)據(jù)庫(kù)連接出現(xiàn)問(wèn)題,而上面的測(cè)試結(jié)果表明,連接數(shù)量是導(dǎo)致系統(tǒng)故障的直接原因,因此判斷,本次故障并非穩(wěn)定性問(wèn)題,而是因數(shù)據(jù)庫(kù)連接數(shù)量過(guò)大導(dǎo)致的數(shù)據(jù)庫(kù)連接問(wèn)題。
圖2 網(wǎng)絡(luò)連通情況
圖3 查看默認(rèn)及在線連接數(shù)
隨著故障定位的確定,筆者將問(wèn)題解決的重心調(diào)整到了Oracle數(shù)據(jù)庫(kù)連接數(shù)量參數(shù)的設(shè)置上,即利用Oracle提供的Sqlplus工具對(duì)其連接參數(shù)進(jìn)行修改。
首先,在cmd窗口下,運(yùn)行Sqlplus工具,進(jìn)入Sqlplus管理界面:
然后,在sqlplus管理界面下,輸入SQL命令,以管理員身份連接Oracle數(shù)據(jù)庫(kù)。
術(shù)中當(dāng)病人HR<50次/min,可靜注阿托品0.5 mg;血壓下降超過(guò)麻醉前20%或收縮壓降低至90 mmHg,可靜注麻黃堿6 mg。血壓升高超過(guò)麻醉前20%或血壓升高達(dá)160/95 mmHg,在確認(rèn)麻醉鎮(zhèn)靜深度且增加瑞芬太尼靶濃度仍未緩解后,靜脈推注烏拉地爾5 mg。若術(shù)中出現(xiàn)肌松過(guò)深而無(wú)法監(jiān)測(cè)喉返神經(jīng)功能,排除神經(jīng)損傷后立即停止輸注米庫(kù)氯銨。
此后,可利用如下SQL命令,查看Oracle數(shù)據(jù)庫(kù)服務(wù)器默認(rèn)允許的最大連接數(shù)和當(dāng)前在線連接數(shù),并修改數(shù)據(jù)庫(kù)最大連接數(shù)(如圖3)。
SQL>select value from
查看數(shù)據(jù)庫(kù)默認(rèn)允許最大連接數(shù)
查看當(dāng)前在線連接數(shù)
可以看到,數(shù)據(jù)庫(kù)允許的最大連接數(shù)默認(rèn)為150,當(dāng)前在線連接數(shù)為66。需要說(shuō)明的是,每一臺(tái)電腦終端連接到數(shù)據(jù)庫(kù)服務(wù)器時(shí),都不可能只建立一個(gè)連接,而是會(huì)根據(jù)自身應(yīng)用需要?jiǎng)討B(tài)創(chuàng)建多個(gè)連接,所以一臺(tái)電腦終端會(huì)消耗多個(gè)數(shù)據(jù)庫(kù)連接資源。這樣看來(lái),150個(gè)連接數(shù)對(duì)于較大規(guī)模的部署應(yīng)用都是不夠的。因此,為滿足100臺(tái)電腦終端應(yīng)用需要,修改數(shù)據(jù)庫(kù)最大連接數(shù)為500。
這里需要說(shuō)明的是,如果Oracle是以pfile方式啟動(dòng),則必須將其修改為spfile方式啟動(dòng),才能用上述方法動(dòng)態(tài)修改連接參數(shù),具體命令如下:
創(chuàng)建spfile啟動(dòng)方式
最后,關(guān)閉并重啟Oracle數(shù)據(jù)庫(kù):
SQL>startup;
重啟數(shù)據(jù)庫(kù)
至此,100余臺(tái)終端同時(shí)啟動(dòng)地理信息系統(tǒng),打開(kāi)地圖底圖數(shù)據(jù)時(shí),運(yùn)行均正常,再無(wú)數(shù)據(jù)庫(kù)連接故障提示,問(wèn)題得到圓滿解決。
本次故障貌似通過(guò)修改一個(gè)數(shù)據(jù)庫(kù)連接參數(shù)得到了圓滿解決,但僅僅是“一改了之”這么簡(jiǎn)單嗎?如果是這樣,Oracle數(shù)據(jù)庫(kù)系統(tǒng)為什么不將其允許最大連接數(shù)的默認(rèn)值設(shè)置得更大一些呢?為什么還需要用戶通過(guò)出現(xiàn)故障這種消極的方式去費(fèi)力地修改一個(gè)參數(shù)呢?
細(xì)想之下就明白了,簡(jiǎn)單地修改一個(gè)連接參數(shù)確實(shí)可以提高在線連接數(shù)量,滿足更多用戶或應(yīng)用連接使用,但同時(shí)可能會(huì)因?yàn)檫B接數(shù)量的增加而加大數(shù)據(jù)庫(kù)訪問(wèn)負(fù)荷,極有可能因?yàn)閿?shù)據(jù)庫(kù)服務(wù)器硬件性能不夠高或者網(wǎng)絡(luò)帶寬不夠?qū)挼葪l件局限,導(dǎo)致數(shù)據(jù)訪問(wèn)性能的急劇下降。因此,這里面實(shí)際還包含一個(gè)更深層次的命題,即如何合理有效地分配負(fù)載,實(shí)現(xiàn)系統(tǒng)功能和性能的平衡,也就是說(shuō),如何通過(guò)合理有效的負(fù)載均衡管理,使連接數(shù)量和訪問(wèn)效率達(dá)到一個(gè)大家都能接受的點(diǎn)。
這也就不難理解,為什么Oracle公司會(huì)將其最大默認(rèn)連接數(shù)值設(shè)定為150,這確實(shí)是在主流服務(wù)器硬件配置、網(wǎng)絡(luò)環(huán)境、部署規(guī)模及數(shù)據(jù)訪問(wèn)性能之間做出的一個(gè)綜合考量,不大也不是很小。
試想,如果部署規(guī)模是200臺(tái)或300臺(tái)電腦終端呢?按照以上思考,我們就不會(huì)只是簡(jiǎn)單地修改數(shù)據(jù)庫(kù)連接參數(shù),我們還會(huì)根據(jù)實(shí)際需要,加設(shè)數(shù)據(jù)庫(kù)服務(wù)器數(shù)量,利用數(shù)據(jù)分布部署等方式,分擔(dān)負(fù)載壓力,實(shí)現(xiàn)負(fù)載均衡,確保數(shù)據(jù)訪問(wèn)效率。
通過(guò)這一故障的解決及其思考,我們可以得到這樣一些經(jīng)驗(yàn)。
一是部署規(guī)模的變化往往會(huì)由量變引起質(zhì)變,這應(yīng)該引起我們足夠的重視。實(shí)踐表明,當(dāng)部署規(guī)模達(dá)到一定數(shù)量,如100臺(tái)電腦終端以上時(shí),我們必須注意因數(shù)量規(guī)模變化引起的質(zhì)量效率變化,包括數(shù)據(jù)連接資源、系統(tǒng)運(yùn)行速度、數(shù)據(jù)訪問(wèn)效率等,而這些變化往往具有一定的隱蔽性,必須運(yùn)用工程實(shí)踐中常常用到的壓力測(cè)試方法進(jìn)行滿負(fù)荷檢驗(yàn),這樣才能暴露問(wèn)題,發(fā)現(xiàn)故障。
二是必須利用系統(tǒng)和辯證的思維方法來(lái)解決問(wèn)題。通??此埔粋€(gè)簡(jiǎn)單的故障,其背后往往隱藏著較為復(fù)雜的耦合因素,我們除了能用簡(jiǎn)單有效的方法加以解決外,更應(yīng)該對(duì)其進(jìn)行深入思考和總結(jié),最忌“頭痛醫(yī)頭,腳痛醫(yī)腳”。應(yīng)從實(shí)踐角度出發(fā),盡可能多地考慮各種環(huán)境因素及相關(guān)耦合條件,看看會(huì)不會(huì)因?yàn)橐粋€(gè)問(wèn)題的解決而帶來(lái)了新的潛在問(wèn)題的出現(xiàn),一定要放遠(yuǎn)眼光,拓展思維,辯證施治,系統(tǒng)求解,這樣才經(jīng)得起時(shí)間和實(shí)踐的檢驗(yàn)。