ORA-12154:TNS:无法解析指定的连接标识符

时间:2010-02-18 00:39:44

标签: oracle oracle11g listener tnsnames ora-12514

我正在尝试连接到安装在Linux EL 5上的oracle 11g,并且收到以下错误

SQL> connect sys/password@ud06 as sysdba
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor

我在network / admin下的listener.ora如下

LISTENER=
  (DESCRIPTION=
    (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=tcp)(HOST=ud06)(PORT=1521))
      (ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))

SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
      (GLOBAL_DBNAME=orcl)
      (ORACLE_HOME=/home/oracle/app/oracle/product/11g)
      (SID_NAME=orcl))
    (SID_DESC=
      (SID_NAME=plsextproc)
      (ORACLE_HOME=/home/oracle/app/oracle/product/11g)
      (PROGRAM=extproc)))

我的tnsnames.ora如下

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

UD06=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ud06)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

MY lsnrctl状态显示如下:

LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ud06.us.server.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                17-FEB-2010 16:23:06
Uptime                    0 days 0 hr. 12 min. 33 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /home/oracle/app/oracle/product/11g/network/admin/listener.ora
Listener Log File         /home/oracle/app/oracle/product/11g/log/diag/tnslsnr/ud06/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ud06.us.server.com)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=extproc)))
Services Summary...
Service "orcl" has 1 instance(s).
  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
Service "plsextproc" has 1 instance(s).
  Instance "plsextproc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

8 个答案:

答案 0 :(得分:5)

这个问题的答案非常简单。不要担心.ora文件或任何其他配置。 Oracle确实做到了这一切。

只有在通过命令行连接时,它才会与其中包含@符号的密码混淆。

  
    

因此,在通过命令行SQL连接时,请勿使用带有“@”的密码。只需使用Web界面创建一个没有“@”符号的密码帐户。

  
那是!!问题解决了。我已经打破了好几天了,现在我的问题解决了!

答案 1 :(得分:4)

你能成功ping ud06(如ud06,而不是ud06.us.server.com)?

命令是什么

lsnrctl services

显示?

编辑: 听起来我可能数据库实例名称实际上不是“orcl”? lsnrctl服务输出告诉我的是,“orcl”服务虽然在listener.ora文件中定义,但实际上并没有运行。

您可以使用服务器上的直接连接登录吗?如果是这样,您使用什么作为ORACLE_SID环境变量值?以SYS用户身份登录并发出命令:

ALTER SYSTEM REGISTER;

然后再次发出lsnrctl services命令,看看是否没有显示其他实例。

另外,正如Alex指出的那样,tnsping命令报告了一个完全限定的服务名称。编辑sqlnet.ora文件,如果NAMES.DEFAULT_DOMAIN值有值,则将其设置为NULL。

编辑2:服务器上的ud06 是否有效?或者我的假设客户端和服务器在不同的系统上是错误的?

答案 2 :(得分:1)

SERVICE_NAME输出中的tnspingtnsnames.ora中的条目不匹配;是从Windows框或Linux框中的文件?看起来你没有tnsnames.ora的本地(Windows)u06条目,它猜测服务名称应该扩展它 - 我认为这是对主机名适配器的引用意味着什么。 / p>

答案 3 :(得分:0)

我也遇到了ORA-12154:TNS:无法解析指定的连接标识符,并添加尝试连接到oracle的oinstall组的用户修复它。

答案 4 :(得分:0)

首先尝试启动oracle实例:

for windows:

start->配置面板 - >管理touls->服务 - > ORACLESERVICEORCL(顺便提一下我的实例) - >开始

答案 5 :(得分:0)

提供如下连接字符串:

ServerName:port / ServiceName;用户名;密码

Add connection image

答案 6 :(得分:0)

我也遇到了同样的错误,试试这段代码:

SQL> conn  hr/hr  @pdborcl;

如果您发现相同的错误,则表示您具有不同的可插拔数据库名称。 只需在sqlplus

中编写以下命令,即可检查可插拔数据库名称
sql> SELECT  name,  con_id  FROM  v$pdbs;

答案 7 :(得分:0)

我使用这个步骤解决了这个问题。

首先,如果您没有安装相同的目录或驱动器,则会发生此错误。

但答案就在这里。

  1. 以管理员身份登录窗口。
  2. 转到“控制面板”。
  3. 系统属性,然后单击环境
  4. 找到OS变量并将名称更改为“TNS_ADMIN”

    enter image description here

  5. 并将值更改为“tnsnames的目录地址” enter image description here

  6. 重启系统。

  7. Congrulations。