今天在Windows XP上装可个11gR2数据库,却出现个很奇怪的问题,客户机和plsqldev都连不上数据库,提示ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务。
——————tnsping—————————–
C:\Documents and Settings\Administrator>tnsping stream
TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 – Production on 31-8月 –
2011 15:34:07
Copyright (c) 1997, 2010, Oracle. All rights reserved.
已使用的参数文件: D:\oracle\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
已使用 TNSNAMES 适配器来解析别名
尝试连接 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0 .0.1)
(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = stream)))
OK (0 毫秒)
—————-客户机连接数据库———————–
C:\Documents and Settings\Administrator>sqlplus scott/tiger@stream
SQL*Plus: Release 11.2.0.1.0 Production on 星期三 8月 31 15:34:19 2011
Copyright (c) 1982, 2010, Oracle. All rights reserved.
ERROR: ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
为什么tnsping是OK的 但是连接时说监听程序当前无法识别连接描述符中请求的服务呢?这是因为tnsping的时候只是根据tnsname.ora文件中记录的这个字符串相应的IP地址去查看对应的端口是否开发,而不会去验证SERVICE_NAME是否正确,SERVICE_NAME如果配置的不正确是不能连接上数据库的。
下面是我做的相关测试
———————-查看数据库的SERVICE_NAME—————–
SQL> show parameter service_name
NAME TYPE VALUE
————————————
service_names string stream
可以看到这个数据库的service_name是stream,修改tnsname.ora文件,将service_name改成orcl试试tnsping是否还通。
————————–修改tnsname.ora文件—————
STREAM =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = stream)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
———————–tnsping stream————————-
C:\Documents and Settings\Administrator>tnsping stream
TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 – Production on 04-9月 -
2011 10:22:42
Copyright (c) 1997, 2010, Oracle. All rights reserved.
已使用的参数文件:
D:\oracle\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
已使用 TNSNAMES 适配器来解析别名
尝试连接 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = strea
m)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))
OK (30 毫秒)
可以看到SERVICE_NAME = orcl,tnsping仍然OK,在试下这样是否可以连接上数据库。
——————-连接数据库————-
C:\Documents and Settings\Administrator>sqlplus stream/stream@stream
SQL*Plus: Release 11.2.0.1.0 Production on 星期日 9月 4 10:25:19 2011
Copyright (c) 1982, 2010, Oracle. All rights reserved.
ERROR:
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
请输入用户名:
实验结果已经连接不上数据库,在将tnsname.ora文件改成真正的SERVICE_NAME,再次连接数据库
——————tnsname.ora——————–
STREAM =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = stream)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = stream)
)
)
——————–再次连接数据库————————-
C:\Documents and Settings\Administrator>sqlplus stream/stream@stream
SQL*Plus: Release 11.2.0.1.0 Production on 星期日 9月 4 10:28:50 2011
Copyright (c) 1982, 2010, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
连接数据库成功,远程登录数据库的时候,是依赖于数据库服务端SERVICE_NAME,如果遇到tnsping通但是连接不上数据库的时候,一定要仔细检查是否是SERVICE_NAME配置的不正确。
分享到:
相关推荐
错误检查:有很多是oracle自身安装的问题,但是我这里服务器配置正常,监听正常,服务正常,远程可以ping通服务器。 这里主要是防火墙问题,解决办法: (1)关闭防火墙; (2)在防火墙中添加,orcale端口1521例外...
2. **验证网络配置**:确认客户端能够成功ping通数据库服务器。如果使用的是主机名而不是IP地址,请确保客户端机器上的`hosts`文件已正确映射了该主机名。 3. **检查Oracle客户端安装**: - 验证Oracle客户端版本...
- 最后,再次使用`tnsping`命令或数据库客户端工具(如PL/SQL Developer)测试连接,以确认问题是否已经解决。 以上步骤是解决"ORA-12170:TNS:连接超时"错误的一般方法。在实际环境中,可能还需要考虑其他因素,...
- 使用`tnsping ap1`和`tnsping ap2`命令检查是否能ping通AP1和AP2数据库。 - 设置`oracle_sid`为AP1和AP2,然后使用`sqlplus / as sysdba`登录,通过查询`v$database`视图的`name`和`open_mode`字段,确认数据库...
需要注意的是,不管用机器名或 IP 地址,在客户端一定要用 `ping` 命令 ping 通数据库侦听所在的机器的机器名,否则需要在 `hosts` 文件中加入数据库侦听所在的机器的机器名的解析。 * `PORT`:数据库侦听正在侦听的...
使用tnsping命令来测试客户端是否能够ping通服务器,如果ping不通,就可能需要检查网络设置,确保客户端和数据库服务器之间的网络是通畅的。 tnsping命令是用来测试TNS连接的一种工具,它会利用TNSNAMES.ORA文件中...
在配置tnsnames.ora时,确保客户端能够ping通主机名或IP地址,并且服务名称与服务器端的service_name一致至关重要。此外,如果数据库服务器采用多线程服务器(MTS,即共享服务器模式),而客户端需要使用专用服务器...
- 使用`tnsping <tns_name>`命令验证客户端能否成功ping通目标数据库的监听服务。 - **服务器端操作**(以Linux系统为例): - 查看监听服务的状态:`#> lsnrctl status` - 如果监听服务未启动,则需手动启动...