遠(yuǎn)程訪問(wèn)不了oracle

Oracle本地可以連接,但是遠(yuǎn)程連接不了的問(wèn)題。

遇到問(wèn)題,一定要先學(xué)會(huì)分析結(jié)合自己知道的知識(shí)點(diǎn)嘗試解決問(wèn)題。如果解決不了,再?gòu)木W(wǎng)上搜索相關(guān)信息。從問(wèn)題的根源性不斷探索解決方法。

今天突然發(fā)現(xiàn)公司業(yè)務(wù)系統(tǒng)訪問(wèn)不了,去后臺(tái)一看訪問(wèn)沒(méi)有請(qǐng)求到,再看日志發(fā)現(xiàn)訪問(wèn)不了數(shù)據(jù)庫(kù)。然后在本地用數(shù)據(jù)庫(kù)連接工具,連接超慢最后報(bào)10072錯(cuò),這應(yīng)該是遠(yuǎn)程監(jiān)聽(tīng)配置有問(wèn)題。默認(rèn)的監(jiān)聽(tīng)是localhost 。

(因?yàn)闃I(yè)務(wù)是政府單位,不方便截圖,只說(shuō)具體的思路)

處理步驟如下:

1、登錄linux服務(wù)器,切換到oracle下,輸入 su - oracle

2、輸入命令:sqlplus / as sysdba

3、輸入命令:select * from all_tables; 正常,說(shuō)明本地可以訪問(wèn)。

4、輸入命令?lsnrctl status,查看到監(jiān)聽(tīng)的host=gxffjzdb,端口是1521。這里host指向的應(yīng)該是本機(jī)的計(jì)算機(jī)名,我們?nèi)?etc/hosts驗(yàn)證一下果然是。最后去檢查oracle的listener.ora配置,一切正常。

處理到這里,一切都看起來(lái)正常。思路有些斷了,只好去網(wǎng)上翻翻前人的經(jīng)驗(yàn),大部分文章都是說(shuō)listener.log 這個(gè)監(jiān)測(cè)日志超過(guò)4g大小就會(huì)出現(xiàn)問(wèn)題。于是我去檢查服務(wù)器上的監(jiān)聽(tīng)日志整整16G已經(jīng)超過(guò)4G大小,我本以為問(wèn)題就出現(xiàn)在這里,心中暗暗竊喜這回問(wèn)題終于可以解決了。最后把日志文件刪了,信心滿滿地再次點(diǎn)擊連接還是不行,難道要重啟oracle?重啟,問(wèn)題依舊。

網(wǎng)上出現(xiàn)的不能遠(yuǎn)程訪問(wèn)oracl大體都是從sqlnet.ora、listener.ora、tnsnames.ora配置和listener.log過(guò)大上解決的。

于是我再次把配置檢查,一切正常。這時(shí)無(wú)意看到一篇文章說(shuō):翻看了《OCP/OCA認(rèn)證考試指南手冊(cè)-oracle database 11g》,書(shū)中給了一張oracle net的流程。

oracle-net.jpg

看了這張圖,最后還是把問(wèn)題定位在了listener監(jiān)聽(tīng)上。

但是監(jiān)聽(tīng)配置是沒(méi)有問(wèn)題的呀?這就太奇怪了,腦中的想法不斷,這時(shí)候突然想到監(jiān)聽(tīng),那我們?nèi)タ纯磍inux上的服務(wù)和監(jiān)聽(tīng)。

輸入命令: lsof -i

發(fā)現(xiàn)oracle本地與另外一個(gè)服務(wù)器建立了連接,因?yàn)槲覀儽镜厥菬o(wú)法連接這個(gè)oracle。說(shuō)明另外一個(gè)服務(wù)器連上了oracle。這是為什么呢?大家都是在同一個(gè)局域網(wǎng)上都有權(quán)限,你能訪問(wèn),我不能訪問(wèn)?

然后我想到了日志,日志最能表現(xiàn)問(wèn)題。(說(shuō)句題外話,大家在解決問(wèn)題的時(shí)候,一定要看日志,往往日志最能發(fā)現(xiàn)問(wèn)題和提供解決辦法的思路)。

輸入命令:tail -f? /.../..../.../listeners.log,發(fā)現(xiàn)監(jiān)聽(tīng)日志不斷的打印和另外一個(gè)服務(wù)器的連接,而且通過(guò)分析打印的日志,發(fā)現(xiàn)user是個(gè)集群的名稱?聯(lián)想是否公司大數(shù)據(jù)團(tuán)隊(duì)需要不斷的抽取我這個(gè)oralce上的數(shù)據(jù),我當(dāng)即向大數(shù)據(jù)那邊反應(yīng),不過(guò)他們好像很忙,暫時(shí)沒(méi)有空理會(huì)我。

最后我想反正這個(gè)大數(shù)據(jù)業(yè)務(wù)上暫時(shí)用不上,索性重啟這臺(tái)服務(wù)器。

馬上重啟,然后測(cè)試可以遠(yuǎn)程連接數(shù)據(jù)庫(kù)了,最后重啟tomcat上的web服務(wù),訪問(wèn)一切正常。bingo。

問(wèn)題暫時(shí)解決了(因?yàn)槲抑皇秦?fù)責(zé)java后端,不是很懂大數(shù)據(jù),這個(gè)問(wèn)題就留著以后問(wèn)大數(shù)據(jù)同事看看是什么原因吧)

最后總結(jié)一下吧。

遇到問(wèn)題,一定要先學(xué)會(huì)分析結(jié)合自己知道的知識(shí)點(diǎn)嘗試解決問(wèn)題。如果解決不了,再?gòu)木W(wǎng)上搜索相關(guān)信息。從問(wèn)題的根源性不斷探索。例如這里遠(yuǎn)程不能訪問(wèn)oracle,那就要想是不是oralce服務(wù)沒(méi)有啟動(dòng),服務(wù)器上是否可以本地訪問(wèn)oralce呢?如果可以,那是不是oracle監(jiān)聽(tīng)出現(xiàn)問(wèn)題了呢?oracle監(jiān)聽(tīng)沒(méi)有問(wèn)題,是不是oralce服務(wù)連接有問(wèn)題?一步步推導(dǎo),最終解決問(wèn)題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容