乙個Oracle監聽問題的網路排查

2021-09-22 19:14:33 字數 2137 閱讀 2075

今天在梳理一套環境的時候,發現了乙個奇怪的問題,應用端連線正常,但是服務端卻有些問題。

假設服務端的ip位址為10.129.128.57

使用tnsping本機的服務,竟然丟擲了監聽的問題。

$ tnsping s2gamebbs

attempting to contact (description = (address = (protocol = tcp)(host = s2gamebbs.test.com)(port = 1528)) (connect_data = (server = dedicated) (service_name = gamebbs)))

tns-12541: tns:no listener

是監聽沒啟動嗎,檢視監聽程序存在,確實是啟動了,但是檢視監聽狀態卻丟擲了錯誤

lsnrctl> status listener_1528

connecting to (description=(address=(protocol=tcp)(host=s2gamebbs.test.com)(port=1528)))

tns-12541: tns:no listener

tns-12560: tns:protocol adapter error

tns-00511: no listener

linux error: 111: connection refused

這個問題立馬勾起了我的興趣,我使用網域名稱解析的方式檢視是沒有問題的。

$ ping `hostname`

ping s2gamebbs.cyou.com (10.129.128.57) 56(84) bytes of data.

64 bytes from s2gamebbs.cyou.com (10.129.128.57): icmp_seq=1 ttl=64 time=0.059 ms

。。。^c

但是ping伺服器的ip是有問題的。

# ping 10.129.128.57                                     

ping 10.129.128.57 (10.129.128.57) 56(84) bytes of data.   

from 10.129.128.57 icmp_seq=1 destination port unreachable 

from 10.129.128.57 icmp_seq=2 destination port unreachable    

如此一來,這個問題就有趣了,我對比了如下的幾種測試場景。 

# telnet 10.129.128.57 1528

trying 10.129.128.57...

telnet: connect to address 10.129.128.57: connection refused

#  telnet 127.0.0.1 1528

trying 127.0.0.1...

telnet: connect to address 127.0.0.1: connection refused

# telnet `hostname` 1528

trying 10.129.128.57...

telnet: connect to address 10.129.128.57: connection refused

同時做了strace除錯,也沒有看到明顯的問題,於是我懷疑是網路層面解析的問題,/etc/hosts的檔案看了很多遍沒有問題,那就只有網路層面,比如防火牆了,我開始琢磨防火牆裡的配置。 看到了下面的一段:

-a input -s 10.10.75.59/32 -j accept

-a input -p udp -j accept

-a input -m state --state related,established -j accept

-a input -j reject --reject-with icmp-port-unreachable

其中最後的一句是關鍵,如果倒數兩句的順序調整一下,上面的錯誤就會完全不一樣。

這個引數其實的設定其實也是一種安全策略,如果能夠掃瞄到我們的埠,但是卻沒法得知我們的網路訪問是否在防火牆控制下,當然這個地方的設定傷害到「自己人」了。所以暫不需要。

去掉折後,重新啟動防火牆,問題就得到了解決。

乙個oracle隨機取記錄的問題

問題 select from select from t order by dbms random.value where rownum 1 隨機取表中的 1 條資料 現在想實現取出的資料不是按平均的概率出現,而是按指定的概率。比如表中的資料是 a b c d e 5條記錄,指定出現的概率為5 4 ...

oracle 乙個有趣的行列轉換問題

資料 aid name 1 test1 2 test2 3 test3 bid name code 11 test1 001 12 test1 002 13 test2 004 結果 a.id b.code 1 001 2 004 3 null 方法一 先左連線,在去掉重複的資料 with ta a...

乙個使用beans連線oracle的問題

最近做的乙個專案使用了tomcat oracle jsp,寫好了連線資料庫的beans後用乙個oracletest.jsp檔案測試總是連線不上,顯示一些什麼內部錯誤,最痛恨這種錯誤了。於是又寫了個在頁面中直接連線資料庫的jsp檔案,命名為test.jsp,測試一切正常,奇怪的是這個時候再使用orac...