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

use*_*705 8 oracle tnsnames listener oracle11g 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
Run Code Online (Sandbox Code Playgroud)

我在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)))
Run Code Online (Sandbox Code Playgroud)

我的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)
    )
  )
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

Aru*_*ran 5

这个问题的答案很简单.不要担心.ora文件或任何其他配置.Oracle完成所有这些工作.

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

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

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


DCo*_*kie 4

您能否成功 ping ud06(作为 ud06,而不是 ud06.us.server.com)?

命令是什么

lsnrctl services
Run Code Online (Sandbox Code Playgroud)

展示?

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

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

更改系统寄存器;

然后再次发出 lsnrctl services 命令并查看是否未显示其他实例。

此外,正如 Alex 指出的那样,tnsping 命令正在报告完全限定的服务名称。编辑 sqlnet.ora 文件并将 NAMES.DEFAULT_DOMAIN 值设置为 NULL(如果有值)。

编辑 2:服务器上的tnsping ud06 是否工作?或者我关于客户端和服务器位于不同系统上的假设是错误的?