[转]TNS-12560: TNS:协议适配器错误 总结

 

  我们知道oracle客户端连接时涉及用到的几个配置文件有:sqlnet.ora、tnsnames.ora、listener.ora。其中sqlnet.ora和tnsnames.ora是在客户端的配置文件,listener.ora则是在服务器端的监听配置文件。

想要顺利的连接上服务器端,首先要确保两者之间的网络通畅。其二在服务器上配置好监听程序。其三是客户端配置好相应的tnsnames.ora。

  在配置服务器端监听程序时要注意几点:

  1、在服务器上的/etc/hosts文件中需要有127.0.0.1  localhost 这一条.默认情况下是有的。若没有则在启动监听器是会报TNS-12537:TNS:connection closed的错误.同时最好添加上你的服务器IP  主机名。

  2、配置监听器时可以使用netca或者直接写配置文件listener.ora也行

# listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.120)(PORT = 1521))
)
)

其中的HOST最好使用IP,主机名可能会发生改变——影响较多。

  客户端的配置主要的是tnsnames.ora这个文件

CENTOS =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.120)(PORT = 1521))
)
(CONNECT_DATA =
(SID = centos)
(SERVER = DEDICATED)
)
)

其实也没什么东西

  对于sqlnet.ora这个文件中的NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)这个参数,其中EZCONNECT是oracle10G新加的,好像是用来快速连接的。使用主机名Easy的连接掉服务器。不用TNSNAMES的方式连接。

  所有的设置都弄好了,如果你还是发现在客户端(Windows)不能连接到服务器端(Linux),查看服务器上的防火墙对oracle的1521端口是否开放。不是很重要的练习用的机子可以直接将防火墙关闭。

  1) 永久性生效,重启后不会复原 
开启: chkconfig iptables on 
关闭: chkconfig iptables off 

2) 即时生效,重启后复原 
开启: service iptables start 
关闭: service iptables stop

  最后在说下在排错时用到的一些命令:lsnrctl (start、stop、status)、tnsping (IP/主机名)、netstat -anp (查看端口)、telnet等。

posted @ 2012-06-27 16:04  smodi  阅读(13168)  评论(1编辑  收藏  举报