2010-02-18 79 views
6

我试图连接到安装在Linux EL 5的Oracle 11g和并收到以下错误ORA-12154:TNS:无法解析连接标识符指定

SQL> connect sys/[email protected] as sysdba 
ERROR: 
ORA-12514: TNS:listener does not currently know of service requested in connect 
descriptor 

下我的网络/管理员的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状态显示s如下:

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 
+0

我在仅安装了** Oracle Client **的计算机上遇到** ORA-12154 **。我的答案[这里](http://stackoverflow.com/a/26020374/1497596)。 – DavidRR

回答

4

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

什么命令

lsnrctl services 

说明了什么?

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

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

ALTER SYSTEM REGISTER;

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

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

编辑2:tnsping ud06 在服务器上工作吗?或者,我认为客户端和服务器在不同的系统上是错误的?

+0

是的,我可以ping ud06。 此外,当我用tnsping我得到以下 C:\ Documents和Settings \ a.APPLICATIONS>用tnsping ud06 TNS Ping实用工具为32位Windows:版本10.2.0.1.0 - 生产的17 FEB- 2 010 23:09:16 版权所有(c)1997,2005,Oracle。版权所有。 使用参数文件: 用于HOSTNAME适配器解决试图联系(DESCRIPTION =(CONNECT_DATA =别名 (SERVICE_NAME = ud06.us.server.com))(ADDRESS =(PROTOCOL = TCP)(HOST = 19.148。 (PORT = 1521))) OK(350毫秒) – user275705

+0

lsnrctl显示如下 – user275705

+0

[oracle @ ud06〜] $ lsnrctl服务 Linux版LSNRCTL:版本11.2.0.1.0 - 2010年2月17日生产23 :13:01 服务“orcl”有1个实例。连接到DESCRIPTION =(ADDRESS =(PROTOCOL = tcp)(HOST = ud06)(PORT = 1521))) 服务摘要... 服务“orcl”有1个实例。 实例“orcl”,状态UNKNOWN,对此服务具有1个处理程序...处理程序: “DEDICATED”已建立:1已拒绝:0 本地服务器 服务“plsextproc”有1个实例(s) 。 实例“plsextproc”,状态未知有此服务处理程序(一个或多个)处理器(S):设立“专用”:0拒绝:0 本地服务器命令成功完成 – user275705

1

SERVICE_NAME中的tnsping输出与tnsnames.ora中的条目不匹配;该文件来自Windows盒子还是Linux盒子?它看起来像你不必为u06本地(Windows)中tnsnames.ora进入和它的猜测哪些服务名称应该扩大它 - 我认为这是什么参考主机适配器机构。

0

我也碰到ORA-12154:TNS:无法解析连接标识符指定,并添加用户试图连接到固定它oinstall组甲骨文。

5

回答这个问题很简单。不要担心.ora文件或任何其他配置。甲骨文所做的一切都很完美。

只有当通过命令行连接,它就会与那些在他们一个@符号的密码混淆。

因此,当通过命令行SQL进行连接时,不要使用带有'@'的密码。只需使用Web界面创建一个帐户,其中有一个不带'@'符号的密码。

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

0

首先尝试Oracle实例是否启动

对于Windows:

开始 - >配置面板 - >管理touls->服务 - > OracleServiceORCL的(我的方式实例) - >启动

0

提供连接字符串是这样的:

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

Add connection image

0

我也面临着同样的错误,试试这个代码:

SQL> conn hr/hr @pdborcl; 

如果你发现同样的错误,这意味着你有不同的可插拔的数据库名称。通过刚刚在sqlplus

sql> SELECT name, con_id FROM v$pdbs; 
0

写下面的命令 检查可插拔数据库的名字,我固定使用这个步骤这个问题。

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

但是答案在这里。

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

    enter image description here

  5. 更改数值为 “TNSNAMES的目录地址” enter image description here

  6. 重新启动系统。

  7. 议论。
相关问题