ORA-12514: TNS:listener does not currently know of service requested in connect
遇到这个错误,去网上查了,还是没有答案。 数据库的listener.ora
kkk=
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = s2cs5020)(PORT = 1536))
)
)在另外一台机器上用toad直接连,ip、sid、port报ora-12514,因为没有写tnsname.ora的权限,只能直接连。可是tnsname.ora的内容如果为下面,就可以连接成功了
kkk=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.31.9.227)(PORT = 1544))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.31.9.52)(PORT = 1543))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = kkk)
)
)
LISTENER_kkk =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.31.9.227)(PORT = 1544))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.31.9.52)(PORT = 1543))
)
不理解,为什么tnsnames.ora要包括listener的内容。
遇到这个错误,去网上查了,还是没有答案。 数据库的listener.ora
kkk=
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = s2cs5020)(PORT = 1536))
)
)在另外一台机器上用toad直接连,ip、sid、port报ora-12514,因为没有写tnsname.ora的权限,只能直接连。可是tnsname.ora的内容如果为下面,就可以连接成功了
kkk=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.31.9.227)(PORT = 1544))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.31.9.52)(PORT = 1543))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = kkk)
)
)
LISTENER_kkk =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.31.9.227)(PORT = 1544))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.31.9.52)(PORT = 1543))
)
不理解,为什么tnsnames.ora要包括listener的内容。
PROTOCOL:客户端与服务器端通讯的协议,一般为TCP。
HOST:数据库侦听所在的机器的机器名或IP地址,数据库侦听一般与数据库在同一个机器上,所以当我说数据库侦听所在的机器一般也是指数据库所在的机器。在UNIX或WINDOWS下,可以通过在数据库侦听所在的机器的命令提示符下使用hostname命令得到机器名,或通过ipconfig(for WINDOWS) or ifconfig(for UNIX)命令得到IP地址。需要注意的是,不管用机器名或IP地址,在客户端一定要用ping命令ping通数据库侦听所在的机器的机器名,否则需要在 hosts文件中加入数据库侦听所在的机器的机器名的解析。
PORT:数据库侦听正在侦听的端口,可以察看服务器端的listener.ora文件或在数据库侦听所在的机器的命令提示符下通过lnsrctl status [listener name]命令察看。此处Port的值一定要与数据库侦听正在侦听的端口一样。
要使用LISTENER来监听数据库的网络端口,主机名等。而在tnsname.ora是用来保存协议、主机名和端口的,所以要在tnsname.ora中使用监听