大家好:
前幾天在機房連接數據庫服務器時,報了”0ra-12170 tns 連接超時”。這個錯誤費了我兩天的時間才把問題解決掉,現在總結下,希望大家少走些彎路
從錯誤的信息上看,是肯定是本地的客戶端和服務器沒有連接好,兩個機器的oracle直接不能通信。這個問題就多了,現總結一下:
一tns的配置文件不對
這個問題是最基本的,這是連接的基礎。這個我建議直接從服務器上拷貝,就不會出錯了。我見過的就是因爲服務器名後有空格,導致了服務器無法解析。
二服務器的防火牆開了
防火牆會組織tns直接的連接,驗證可以把服務器的防火牆關了試試看。
三路由的配置問題
這是我今天想說的,也是花了我兩天的時間弄明白的地方。對於那些既要用外網上網收發郵件,又要用內網連接服務器的用戶,這點尤其重要。
我在機房時,用無線連接外網做上網用,用有線連接內網做連接數據庫用。正常情況下,是不能同時實現外網和內網的同時訪問的,必須先把路由表的信息設置下,使外網和內網的網關不在同一個子網掩碼上。可以在控制檯下用 route print 查看本地的路由信息。
大家可能沒有看沒明白,我舉例說明。下面這張圖是我連不上服務器時的路由信息,重點是前面的兩行,可以明顯的看到我的外網的網關(192.168.1.1)和內網的網關(132.77.124.129)在同一網絡掩碼(0.0.0.0)內,這樣路由就無法解析了。
這時可以把外網的無線網絡斷掉,這樣內網就可以連接上了。我正是看到了這點,才明白是網絡的原因,不是tns的原因。接下來,我就該看怎樣實現內網和外網的同時訪問了。
我用了以下的命令:
route delete 0.0.0.0
route add 0.0.0.0 mask 0.0.0.0 192.168.1.1
route add 132.77.0.0 mask 255.255.0.0 132.77.124.129
route add 132.78.0.0 mask 255.255.0.0 132.77.124.129
route add 10.193.0.0 mask 255.255.0.0 132.77.124.129
可以逐條的在控制檯下輸入,也可以做成bat文件的形式直接的手工執行。運行完後,我的路由信息如下圖所示
同樣可以明顯的看到我的外網的網關(192.168.1.1)和內網的網關(132.77.124.129)不在同一個網絡掩碼內了,這樣路由就可以解析了。
總結一下,出現這個問題不要慌,要一步步的去找問題的原因。