当前位置: 代码迷 >> Oracle管理 >> 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,该如何处理

热度:696   发布时间:2016-04-24 04:07:57.0
ORA-12514: TNS:listener does not currently know of service requested in connect
lsnrctl启动如下:
[oracle@powerlong4 admin]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 02-FEB-2015 19:18:25

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/xxxx/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xxx)(PORT=1521)))

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                02-FEB-2015 19:18:25
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/powerlong4/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=powerlong4)(PORT=1521)))
The listener supports no services
The command completed successfully
[oracle@powerlong4 admin]$ 
[oracle@powerlong4 admin]$ 
[oracle@powerlong4 admin]$ 
[oracle@powerlong4 admin]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 02-FEB-2015 19:18:37

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

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                02-FEB-2015 19:18:25
Uptime                    0 days 0 hr. 0 min. 12 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/powerlong4/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xxx)(PORT=1521)))
The listener supports no services
The command completed successfully
[oracle@powerlong4 admin]$ 


tnsnames.ora配置文件如下:
[oracle@powerlong4 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.

SC_PD =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.xxx.xxx.217)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = powerdes)
    )
  )

tnsping 是可以ping通的,如下所示:
[oracle@powerlong4 admin]$ tnsping SC_PD

TNS Ping Utility for Linux: Version 11.2.0.1.0 - Production on 02-FEB-2015 19:22:26

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

Used parameter files:


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = xxxx)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = powerdes)))
OK (0 msec)
[oracle@powerlong4 admin]$

但是连接报错:

[oracle@powerlong4 admin]$ sqlplus "sys/sys@SC_PD";

SQL*Plus: Release 11.2.0.1.0 Production on Mon Feb 2 19:21:04 2015

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

ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor


Enter user-name: ^C
[oracle@powerlong4 admin]$ 

------解决思路----------------------
sqlplus / as sysdba

select status from v$instance;

实例是否没有打开
------解决思路----------------------
就是说,tnsnames里的service_name配置错了

发帖问吧,我平时不怎么用QQ。论坛里的话,我没空,还有别人可以帮你
把具体的日志错误什么的贴出来
------解决思路----------------------
看看官方文档reference吧,里面描述得很清楚

DB_UNIQUE_NAME specifies a globally unique name for the database. Databases with the
same DB_NAME within the same DB_DOMAIN (for example, copies of a database created
for reporting or a physical standby) must have a unique DB_UNIQUE_NAME. Every
database's DB_UNIQUE_NAME must be unique within the enterprise.


DB_NAME specifies a database identifier of up to 8 characters. This parameter must be
specified and must correspond to the name specified in the CREATE DATABASE
statement.
If you have multiple databases, the value of this parameter should match the Oracle
instance identifier of each one to avoid confusion with other databases running on the
system. The value of DB_NAME should be the same in both the standby and production
initialization parameter files.


另外,db_name和db_unique_name和你上面的问题都没有关系,service_name只是给监听用的。上面是service_name指定错误
SERVICE_NAMES specifies one or more names by which clients can connect to the
instance. The instance registers its service names with the listener. When a client
requests a service, the listener determines which instances offer the requested service
and routes the client to the appropriate instance.
------解决思路----------------------
不需要,可以任意指定名称和数量
------解决思路----------------------
。。。如果tnsnames里面可以随便写,还要这个参数干嘛
服务端上可以自己设置service_names,客户端连接服务端,使用service_name的时候要配置成服务端中指定的名称,如果服务端指定了多个,那么客户端用其中一个即可
------解决思路----------------------
查看服务端的service_names是否有这个服务名
唉,同一个问题诶,理解一下试试看就知道了
------解决思路----------------------
说明c1配置错了。靠靠,我忙去了,解释半天又绕回去了
  相关解决方案