8

我正在尝试连接到安装在 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)
    )
  )

我的 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
4

8 回答 8

7

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

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

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

那是!!问题解决了。头疼了好几天,现在问题解决了!!

于 2014-01-24T04:46:43.043 回答
4

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

什么命令

lsnrctl services

显示?

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

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

更改系统寄存器;

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

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

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

于 2010-02-18T04:46:41.697 回答
1

SERVICE_NAME输出中的与中的tnsping条目不匹配 tnsnames.ora该文件是来自 Windows 机器还是 Linux 机器?看起来您没有本地(Windows)tnsnames.ora条目u06,它正在猜测服务名称应该扩展它 - 我认为这就是对主机名适配器的引用的意思。

于 2010-02-18T08:38:12.633 回答
0

我也遇到了 ORA-12154: TNS:could not resolve the connect identifier specified,并添加试图连接到 oracle 的 oinstall 组的用户修复了它。

于 2011-02-17T07:19:44.713 回答
0

首先尝试oracle实例是否启动:

对于窗户:

开始->配置面板->管理工具->服务->ORACLESERVICEORCL(顺便说一下我的实例)->开始

于 2014-02-05T09:49:40.323 回答
0

提供这样的连接字符串:

服务器名:端口/服务名;用户名;密码

添加连接图像

于 2016-03-25T12:28:08.943 回答
0

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

SQL> conn  hr/hr  @pdborcl;

如果您发现相同的错误,则意味着您有不同的可插拔数据库名称。只需在其中写入以下命令即可检查可插入数据库名称sqlplus

sql> SELECT  name,  con_id  FROM  v$pdbs;
于 2017-03-26T09:13:02.447 回答
0

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

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

但答案就在这里。

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

    在此处输入图像描述

  5. 并将值更改为“tnsnames 的目录地址” 在此处输入图像描述

  6. 重新启动系统。

  7. 恭喜。
于 2017-04-10T11:56:57.230 回答