我需要使用PLSQL Developer来访问oracle数据库。当我尝试连接到我的数据库时出现以下错误。 ORA-12154: TNS:could not resolve the connect identifier specified.
我能够从命令行使用SQLPLUS连接到数据库,并且 tnsping 成功返回,但我无法弄清楚为什么PLSQL Developer无法工作 - 它正在使用右 tnsnames.ora 文件,其中的连接字符串是正确的,因为它与 tnsping 使用的相同。
任何人都知道我可以做些什么来解决这个问题?我已经查看了关于这个特定错误的其他线程而没有运气。
的tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = MININT-AIVKVBM)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
的sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
sqlpus命令行 image here
PLSQL开发人员连接首选项:image here
答案 0 :(得分:27)
答案只是将PLSQL Developer文件夹从“Program Files(x86)”移动到“Program Files”文件夹中 - 很奇怪!
答案 1 :(得分:3)
此错误非常常见,通常是您尝试与数据库建立连接时获得的第一个错误。 我建议修复ORA-12154的6个步骤:
了解更多信息:http://turfybot.free.fr/oracle/11g/errors/ORA-12154.html
答案 2 :(得分:1)
由于我无法添加评论,只是想我发布此内容以便完成。 tufy的答案是正确的,它与正在运行的应用程序的路径中的括号(括号)有关。
网络层存在网络错误 无法解析路径中包含括号的程序位置 尝试连接到Oracle的可执行文件。
提交给Oracle,Bug 3807408引用。
答案 3 :(得分:1)
在程序文件x86和程序文件中复制粘贴pl sql developer。如果客户端安装在其他分区/驱动器中,则将pl sql developer复制到该驱动器。并从pl sql developer文件夹而不是桌面快捷方式运行。
终极解决方案!寒意
答案 4 :(得分:0)
或第二种解决方案
您可以尝试通过在Toad
的连接屏幕中提供主机和端口来使用Direct not TNS进行连接答案 5 :(得分:0)
对我来说,这是tnsnames.ora连接标识符的格式错误。标识符字符串的缩进是必需的,如注释中的tnsnames.ora示例所示。
答案 6 :(得分:0)
只是想添加 - 显然这也可能是因为安装Instant Client for 10,然后意识到你想要完整安装并在并行目录中再次安装它。我不知道为什么会破坏它。
答案 7 :(得分:0)
除上述解决方案外, 还要检查tnsname ora文件所在的位置,并与环境变量
中的路径进行比较答案 8 :(得分:0)
我在工作中遇到了问题。 oracle服务器被修补了#34;我使用的其中一个数据库无法通过TNSNames条目连接,但通过Basic连接。数据库已启动,管理员可以看到它已启动并运行。
另外,任何使用TNS连接数据库的应用程序都无法正常工作。
发现的问题是TNS文件中的数据库名称不正确,但由于某种原因,它已经工作了多年。更正名称为我们修复了它。我确实发现Oracle SQL Developer一直在使用旧的TNS条目,即使我更新了它,我也不想只为一个数据库连接重新安装它。看来,当创建数据库时,它被赋予了一个较小的名称,然后是其他名称,并通过TNSNames文件中的一些剪切和粘贴操作混合起来。没有人确定它是如何工作的,因为我们正在调查它,但是oracle补丁确保名称必须正确
这个名字的一个例子就是" DBName.Part1.Part2"但事实上,数据库名称是" DBName"
答案 9 :(得分:0)
只能从PLSQL Developer Main文件夹中的Oracle home复制并粘贴tnsnames和sqlnet文件。 使用下面的Query来获取oracle home
选择substr(file_spec,1,instr(file_spec,'\',-1,2)-1)ORACLE_HOME 来自dba_libraries 其中library_name ='DBMS_SUMADV_LIB';
答案 10 :(得分:0)
我遇到了运行CentOS7和Oracle 11GR2的VM从Windows 7访问的问题,解决方案很奇怪,在我的本地机器上,指向数据库的tnsnames在服务名称之前有一个空格,我只是删除了空间和然后我就能连接了。
一个简单的例子。
错误的tnsnames。
[这是一个空的空间] XE = (DESCRIPTION = (ADDRESS =(PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE) ) )
EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) ) (CONNECT_DATA = (SID = PLSExtProc) (演示= RO) ) )
正确的tnsnames。
XE = (DESCRIPTION = (ADDRESS =(PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE) ) )
EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) ) (CONNECT_DATA = (SID = PLSExtProc) (演示= RO) ) )
答案 11 :(得分:-1)
答案:转到已安装ORACLE DATABASE的文件夹。例如E:\oracle\product\10.2.0 [or as your oracle version]\db-1\network\ADMIN
然后复制两个文件(1)sqlnet.ora,(2)tnsnames.ora并关闭此文件夹。
转到已安装ORACLE DEVELOPER的文件夹。例如E:\DevSuitHome_1\NETWORK\ADMIN
然后重命名两个文件(1)sqlnet.ora,(2)tnsnames.ora并将这两个复制的文件粘贴到这里,你没事。