2015-09-17 59 views
3

与此人有相反的问题。 TNSPING OK but sqlplus gives ORA-12154?使用EZCONNECT语法时,sqlplus获取ORA-12504

我试图在VMWare Workstation中的VM上安装Oracle。 我试着安装在Oracle 11g和12C:

  • 的Windows Server 2008 R2
  • 的Windows Server 2012 R2
  • 的Windows Server 2016技术预览版3(出于绝望)

在任何情况下,我都会看到“最低要求不符合”的对话框。 当我检查AppData中的安装日志时,我得到了这个。

检查是否本地主机的IP地址可以被 确定...重度:CVU不支持目标环境

我试过设置我的虚拟机使用NAT以及使用桥接连接。 根据这个线程,'CVU错误'可以被忽略。 https://community.oracle.com/thread/2478769

Oracle每次安装成功,它会自动在我的tnsnames.ora文件中插入一个条目。我可以连接sys用户通过做[email protected]_ENTRY as sysdba

但第二我尝试使用EZCONNECT语法,它不起作用。例如:

>sqlplus /nolog 
>connect [email protected]:1521/service 

然后我得到一个ORA-12504:TNS:监听器没有给出在CONNECT_DATA的SERVICE_NAME。这很奇怪,因为我甚至不想使用tnsnames.ora文件中的条目进行连接。我试过在Net Manager的sqlnet.ora配置管理器中推广EZCONNECT。

我已经验证Oracle安装程序并把监听我的机器被称为“监听器”

对我有另一台服务器运行Windows Server 2012 R2在裸机上运行。我交叉检查了所有tns,listener和sqlnet配置以及它们全部相同(由11g安装程序创建的默认配置)

我知道VMWare在其VM上支持Oracle数据库。我试图坚持这里列出的这些最佳做法。 http://www.vmware.com/files/pdf/partners/oracle/Oracle_Databases_on_VMware_-_Best_Practices_Guide.pdf

我检查了lsnrctl以确保它正确加载配置。 我看到我的终点那里,当我重新启动监听

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=mymachinename)(PORT=1521)))

防火墙是关闭的。

这里的TNSPING结果:

C:\用户\管理员> TNSPING本地主机

TNS Ping实用工具为64位Windows:11.2.0.1版本。0 - 生产 on 17-SEP-2015 11:36:02

版权所有(c)1997,2010,Oracle。版权所有。

使用参数文件: C:\程序\管理\产品\ 11.2.0 \ dbhome_1 \网络\ ADMIN \ sqlnet.ora中

二手EZCONNECT适配器来解析别名试图联系 (DESCRIPTION =( CONNECT_DATA =(SERVICE_NAME =))(ADDRESS =(PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))) 行(0毫秒)

^看起来完全一样从TNSPING我的2012 R2裸机服务器上有11g的工作。

我在这里错过了非常容易的事情吗?我在这里与我的智慧有关。

回答

3

这是EZCONNECT语法的问题,而不是数据库配置,如Mark Williams的here所述。连接字符串中的正斜杠使EZCONNECT易混淆,所以必须像这样转义:

C:\>sqlplus [email protected]\"localhost:1521/orcl12\" as sysdba 

SQL*Plus: Release 12.1.0.2.0 Production on Fri Sep 18 13:10:19 2015 

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

Enter password: 

Connected to: 
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production 
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options 

SQL> 
+0

谢谢!我觉得自己像个白痴......我甚至无法从sqldeveloper连接,这很奇怪。但现在情况很好。 :) – matrixugly

+0

马克威廉姆斯博客的永久链接,以防万一它发生故障。 http://web.archive.org/web/20120717020405/http://oradim.blogspot.com/2009/07/sqlplus-ezconnect-password-prompt-and.html – matrixugly

+0

请注意,您还必须使用\“用户名\ “如果你的Oracle用户名不全是大写的。特别是如果你有一个_foo_和_FOO_用户。在用户名周围没有“\”,Oracle做了隐含的大写转换,并且这与用户的意图不一样!是的,不建议使用这种非大写用户名,甚至更多_overloaded_仅用于案例,而是Oracle确实允许并支持它,所以最好做好准备。 – ddevienne