ORA-12514: TNS:listener does not currently know of service requested in connect
Posted jianglaoda
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORA-12514: TNS:listener does not currently know of service requested in connect相关的知识,希望对你有一定的参考价值。
1,登录报错如下:
[oracle@oracle_yueworld admin]$ rlwrap sqlplus system/system51@st1
SQL*Plus: Release 11.2.0.1.0 Production on Thu Dec 3 16:33:26 2015
Copyright (c) 1982, 2009, Oracle. All rights reserved.
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor
2,查看下lsnrctl状态,看是否是lsnrctl监听的问题
[[email protected]_yueworld admin]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 03-DEC-2015 17:03:07
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.121.51)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 03-DEC-2015 17:02:55
Uptime 0 days 0 hr. 0 min. 11 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /oracle/app/oracle/diag/tnslsnr/oracle_yueworld/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.121.51)(PORT=1521)))
The listener supports no services
The command completed successfully
[[email protected]_yueworld admin]$
[[email protected]_yueworld admin]$
从中可以看出监听正常,但是The listener supports no services这个貌似是不识别service_name啊
原blog地址:http://blog.csdn.net/mchdba/article/details/50166153
,未经过运行,不得转载
3,去查看下参数
SQL> show parameter name;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string /oracle/app/oracle/oradata/pow
erdes, /oracle/app/oracle/orad
ata/orcl
db_name string orcl
db_unique_name string stunq
global_names boolean FALSE
instance_name string orcl
lock_name_space string
log_file_name_convert string
service_names string stunq
SQL>
看到db_name和db_unique_name以及service_names不一样
4,解决方案
在listener.ora文件里面添加SID_LIST_LISTENER,如下所示:
[[email protected]_yueworld admin]$ more listener.ora
# listener.ora Network Configuration File: /oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = stunq)
(ORACLE_HOME = /oracle/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = stunq)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.121.51)(PORT = 1521))
)
ADR_BASE_LISTENER = /oracle/app/oracle
[[email protected]_yueworld admin]$
再重启lsnrctl服务:
[[email protected]_yueworld admin]$ lsnrctl start
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 03-DEC-2015 18:00:09
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Starting /oracle/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Log messages written to /oracle/app/oracle/diag/tnslsnr/oracle_yueworld/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.121.51)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.121.51)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 03-DEC-2015 18:00:09
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /oracle/app/oracle/diag/tnslsnr/oracle_yueworld/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.121.51)(PORT=1521)))
Services Summary...
Service "stunq" has 1 instance(s).
Instance "stunq", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[[email protected]_yueworld admin]$
看到The listener supports no services错误已经没有了,可以去试试登录
5,再次登录报错
[[email protected]_yueworld admin]$ rlwrap sqlplus orclk/[email protected]
SQL*Plus: Release 11.2.0.1.0 Production on Thu Dec 3 18:03:55 2015
Copyright (c) 1982, 2009, Oracle. All rights reserved.
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
Process ID: 0
Session ID: 0 Serial number: 0
Enter user-name:
6,去修改服务端和客户端的配置文件
google了很多资料,大部分都说是listener.ora配置错误导致listener找不到你要请求的sid。这有两种可能,一种是client端的tnsnames.ora中配置了错误的SID,一种是server端的listener.ora中配置错了SID。仔细检查,然后开始修改服务器listener.ora listener.ora,将SID_NAME修改成正确的instance_name为orcl
[[email protected]_yueworld admin]$ more listener.ora
# listener.ora Network Configuration File: /oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = stunq)
(ORACLE_HOME = /oracle/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = orcl)
)
)
#PS: 这里面的SID_NAME是oracle实例名,GLOBAL_DBNAME是全局的dbname,是db_unique_name
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.121.51)(PORT = 1521))
)
ADR_BASE_LISTENER = /oracle/app/oracle
[[email protected]_yueworld admin]$
修改客户端tnsnames.ora
[oracle@oracle_yueworld admin]$ vim tnsnames.ora
# tnsnames.ora Network Configuration File: /oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
st1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.121.51)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = stunq)
)
)
# PS:这里的service_name就是可以从执行 show parameter name;中显示的service_names参数值。
7,然后验证登录,成功了,如下所示:
[[email protected]_yueworld admin]$
[[email protected]_yueworld admin]$ rlwrap sqlplus orclk/[email protected]
SQL*Plus: Release 11.2.0.1.0 Production on Thu Dec 3 19:43:10 2015
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Release 11.2.0.1.0 - 64bit Production
SQL>
以上是关于ORA-12514: TNS:listener does not currently know of service requested in connect的主要内容,如果未能解决你的问题,请参考以下文章
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
ORA-12514: TNS:listener does not currently know of service requested in connect
ORA-12514: TNS: listener does not currently know of service requested in connect descriptor
Listener refused the connection with the following error:ORA-12514, TNS:listener does not currently
ORA-12514 TNS listener does not currently know of service re