TNS-12560: TNS:协议适配器错误终极配置
?
我们知道oracle客户端连接时涉及用到的几个配置文件有:sqlnet.ora、tnsnames.ora、listener.ora。其中sqlnet.ora和tnsnames.ora是在客户端的配置文件,listener.ora则是在服务器端的监听配置文件。
而在最新的oracle版本中,已经将sqlnet.ora文件放到了,同一级目录的samples下,可见sqlnet.ora的用途会逐渐减弱。
其实很多文章都写到要配置这个配置那个,但是要换个角度看问题,首先从大的方面入手:
配置你的虚拟机的ip:
设置RedHat Linux下的IP时,要和本地Windown操作系统的物理网卡或者VMware虚拟机2块虚拟网卡中的一块在同一个网段,这样在本地的Windows操作系统就能telnet到虚拟机上的RedHat Linux系统去了。例如:如果RedHat Linux下的IP和本地Windown操作系统的物理网卡在同一个网段,那么RedHat Linux的Network connection就用Bridged:Connected directly to the physical network;如果RedHat Linux下的IP和VMware虚拟机2块虚拟网卡中的一块在同一个网段(这里用虚拟网卡1),那么RedHat Linux的Network connection就用Custom:Specipic virtual network,并且选择 VMware1(host only)。
如:我通过ipconfig看的自己的ip为192.168.88.144,我想使用host only模式,我就开始下面的操作
通过网上邻居->属性->VMware Network Adapter VMnet8->属性
设置(tcp/ip)将其静态ip设置为:192.168.174.243
同样的方法将VMware Network Adapter VMnet1的静态ip设置为192.168.174.242
然后设置linux主机的ip以及host only模式,在Vmware中通过菜单VM->settings->network Adapter设置为Custom:Specipic virtual network,并且选择 VMware1(host only)。
然后开始设置linux的静态ip。adminstrator->network来打开设置,然后设置在同一个网段。
设置完之后最好通过Activate激活,并在root下通过命令重启network
>service network restart
然后呢,还是不要着急。。。。
干什么呢,防火墙!!!windows防火墙关闭很简单这里就不说了,说说关闭自己的linux防火墙,selinux
在root用户通过命令
>setup
然后选择firewall configuration,通过空格键了选择,将防火墙关闭
下面开始配置监听
在配置服务器端监听程序时要注意几点:
//可以略过这一步?:1、在服务器上的/etc/hosts文件中需要有127.0.0.1 localhost 这一条.默认情况下是有的。若没有则在启动监听器是会报TNS-12537:TNS:connection closed的错误.同时最好添加上你的服务器IP 主机名。
2、配置监听器时可以使用netca或者直接写配置文件listener.ora也行
?? netca方式:在root用户下用命令>netca即可,用这种方式快速方便(推荐),但后一种能 提升能力
?? 配置文件方式:配置文件在$ORACLE_HOME/network/admin下
# 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.174.244)(PORT = 1521))
)
)
其中的HOST最好使用IP,主机名可能会发生改变——影响较多。
客户端的配置主要的是tnsnames.ora这个文件
SID名称?=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.174.244)(PORT = 1521))
)
(CONNECT_DATA =
(SID = SID名称)
(SERVER = DEDICATED)
)
)
在这些配置好之后呢,可以再linux内部看看自己能否监听自己,如果不可以可以chage login,如果再不行呢,就用下列操作
这样做是首先启动自己的数据库,然后启动数据库中自己配置好的监听,这样在用net常识看看linux内部是否能够监听的到,net是否配置正确。
下面就通过windows下的客户端的net cofiguration assitant 来配置自己linux下的数据监听就可以了。
最后在说下在排错时用到的一些命令:lsnrctl (start、stop、status)、tnsping (IP/主机名)、netstat -anp (查看端口)、telnet等。
更多信息请查看?java进阶网?http://www.javady.com