求助:Oracle11g(linux) 本地一切正常;远程访问ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务。

sohome 2012-03-15 11:51:52
求助:Oracle11g(linux) 本地一切正常;远程访问ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务。
配置如下:

【oracle服务器listener.ora】
[oracle@localhost admin]$ more listener.ora
# listener.ora Network Configuration File: /opt/ora11g/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

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

ADR_BASE_LISTENER = /opt/ora11g


【oracle服务器tnsnames.ora】
[oracle@localhost admin]$ more tnsnames.ora
# tnsnames.ora Network Configuration File: /opt/ora11g/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

MASS =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME =MASS)
)
)

[oracle@localhost admin]$

[oracle@localhost admin]$ sqlplus mass/timesnet@mass

SQL*Plus: Release 11.2.0.1.0 Production on 5 11:44:15 2012

Copyright (c) 1982, 2009, Oracle. All rights reserved.



【oracle服务器本地连接访问正常】
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning and Real Application Testing options

SQL> select sysdate from dual;

SYSDATE
--------------
15-3月 -12





【远程tnsping oracle服务器】
C:\>tnsping 192.168.1.4

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 15-3月 -
2012 11:37:59

Copyright (c) 1997, 2005, Oracle. All rights reserved.

已使用的参数文件:
D:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora

已使用 HOSTNAME 适配器来解析别名
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=192.168.1.4))(ADD
RESS=(PROTOCOL=TCP)(HOST=192.168.1.4)(PORT=1521)))
OK (20 毫秒)


【远程连接 oracle服务器的配置】


【远程测试 oracle服务器的结果】

...全文
1474 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
mailking 2012-03-15
  • 打赏
  • 举报
回复
sqlnet.ora 的内容打印出来看看

SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)

跟这个一样么,不一样改成一样的
sohome 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mailking 的回复:]

你服务器端的listener使用的是动态注册,但你服务器实例已经启动应该不是这个问题。
还有这里
已使用 HOSTNAME 适配器来解析别名
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=192.168.1.4))(ADD
RESS=(PROTOCOL=TCP)(HOST=192.168.1.4)(PORT=……
[/Quote]

C:\>tnsping mass

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 15-3
2012 12:49:23

Copyright (c) 1997, 2005, Oracle. All rights reserved.

已使用的参数文件:
D:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora


已使用 TNSNAMES 适配器来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL =
(HOST = 192.168.1.4)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = MASS)))
OK (0 毫秒)
mailking 2012-03-15
  • 打赏
  • 举报
回复
你服务器端的listener使用的是动态注册,但你服务器实例已经启动应该不是这个问题。
还有这里
已使用 HOSTNAME 适配器来解析别名
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=192.168.1.4))(ADD
RESS=(PROTOCOL=TCP)(HOST=192.168.1.4)(PORT=1521)))
OK (20 毫秒)
这个service_name怎么是IP地址 应该是MASS

把你客户端的tnsname.ora的SERVICE_NAME=192.168.1.4改成SERVICE_NAME=mass 在试
cosio 2012-03-15
  • 打赏
  • 举报
回复
试一下,把HOST改为IP地址!
sohome 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 sohome 的回复:]

引用 11 楼 achilles12345 的回复:

这种问题,上次我解决的办法是你数据库不能绑定127.0.0.1或者是HOST,要绑定你这台服务器在局域网中的地址。我想是和底层Socket通信机制有关,监听器是在这个127.0.0.1监听,只能本地连接上。如果换成改服务器的局域网地址就行了。我就是这样解决的,希望能帮助楼主。


我也有过这样的考虑;
绑定127.0.0.1或h……
[/Quote]


GOOD!
ths!achilles12345
果然如你所言,将IP改成1.4就ok了。
ths all!
sohome 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 achilles12345 的回复:]

这种问题,上次我解决的办法是你数据库不能绑定127.0.0.1或者是HOST,要绑定你这台服务器在局域网中的地址。我想是和底层Socket通信机制有关,监听器是在这个127.0.0.1监听,只能本地连接上。如果换成改服务器的局域网地址就行了。我就是这样解决的,希望能帮助楼主。
[/Quote]

我也有过这样的考虑;
绑定127.0.0.1或host是出于无奈;
因为条件限制,后台数据库是通过双网卡与前端的2台服务器用交叉线进行连接的,还不同一个网段。
气恼啊,已经要求工程放一个交换机过去。
sohome 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 mailking 的回复:]

在服务器端的sqlplus里输入
show parameter service_name
看看service name是什么
[/Quote]

SQL> show parameter service_name;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string MASS
渭水飞熊 2012-03-15
  • 打赏
  • 举报
回复
这种问题,上次我解决的办法是你数据库不能绑定127.0.0.1或者是HOST,要绑定你这台服务器在局域网中的地址。我想是和底层Socket通信机制有关,监听器是在这个127.0.0.1监听,只能本地连接上。如果换成改服务器的局域网地址就行了。我就是这样解决的,希望能帮助楼主。
mailking 2012-03-15
  • 打赏
  • 举报
回复
在服务器端的sqlplus里输入
show parameter service_name
看看service name是什么
sohome 2012-03-15
  • 打赏
  • 举报
回复
设备原来是远程访问正常的;
但搬到机房后,由于条件限制。
与前端的tomcat服务器连接是采用交叉线来连接的;
这个是否有影响?
sohome 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zftang 的回复:]

数据库服务是否启动~~
[/Quote]

本地访问是正常的:

SQL> select sysdate from dual;

SYSDATE
--------------
15-3月 -12
秋雨飘落 2012-03-15
  • 打赏
  • 举报
回复
数据库服务是否启动~~
sohome 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mailking 的回复:]

sqlnet.ora 的内容打印出来看看

SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)

跟这个一样么,不一样改成一样的
[/Quote]

已经改成一样。但还是错误。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧