今天在梳理一套環境的時候,發現了乙個奇怪的問題,應用端連線正常,但是服務端卻有些問題。
假設服務端的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...