虚拟机上可以正常访问数据库,但是在物理机上连接数据库时出现“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:连接超时”。