ORA-12170: TNS: 連線逾時問題解決
虛擬機器上可以正常訪問資料庫,但是在物理機上串連資料庫時出現“ORA-12170:TNS:連線逾時”時,可以用以下思路解決問題。
一、檢查網路
1.ping ip地址 查看網路問題,看能否ping通;
2.tnsping ip地址(或者是伺服器的執行個體名SID)如果報“TNS-12535:操作逾時“,可能是伺服器端防火牆,沒有關閉;
3.netstat -na 查看1521連接埠是否關閉
4.lsnrctl status lsnrctl是listener-control 監聽器的縮寫,查看監聽的狀態
如果檢查出來是防火牆的問題,則可以關閉防火牆或者修改防火牆規則來解決該問題(目前只遇到訪問牆的問題)。
二、防火牆問題
2.1 關閉防火牆
chkconfig iptables off;#重啟後失效
/etc/init.d/iptables stop;#立即失效
2.2修改防火牆規則
1)直接開啟連接埠
iptables -I INPUT -p tcp --dport 1521 -j ACCEPT;#1521是連接埠號碼;
#如果要刪除規則,就使用iptables -D INPUT number;
#number可以用/etc/init.d/iptables status來查看
#使用這種方式,機器重啟或者防火牆關閉再開啟,該規則失效。
2)永久開啟某連接埠
首先,用vim開啟防火牆設定檔:
vim /etc/sysconfig/iptables
然後,在iptables檔案內容中,在預設的22連接埠下一行添加如下內容:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT
最後,儲存設定檔後,執行如下命令重啟防火牆:
/etc/init.d/iptables restart
#經過測試,在/etc/sysconfig/iptables中添加“-A……”這條內容是,在位置1添加語句,重啟防火牆後可以串連資料庫;在2處添加語句,重啟防火牆後仍然是報“ORA-12170:TNS:連線逾時”。