ora-12154无法解决...使用oracle即时客户端

时间:2011-08-16 20:17:34

标签: oracle oracle-sqldeveloper tnsnames ora-12154

以下是详细信息:

  1. 我在Windows 7 64位虚拟机(vmware)上从the OTN download page安装了oracle即时客户端11.2.0.2.0。
  2. 我正在尝试连接到远程oracle数据库,我可以使用TNS成功连接一个程序,但不能与SQL * Plus和其他应用程序连接。
  3. 尝试使用schema @ servicename,password等连接SQL * Plus会出现上述错误。
  4. 要通过SQL Developer连接,通常我会使用基本连接信息而不依赖于tnsnames,但尝试正常连接会给我:io error: unknown host specified。如果我使用TNS协议,SQL Developer可以成功连接和查询数据库。
  5. 尝试从其他程序中获得与SQL * Plus相同的错误。尝试使用tnsnames中的服务名称时也一样。
  6. 对于它以单向而非另一种方式工作显然非常令人沮丧。我按照所有使用即时客户端的正常说明,将带有instantclient的目录添加到PATH,还创建了一个TNS_ADMIN条目,目录为tnsnames.ora文件

3 个答案:

答案 0 :(得分:1)

嗯,一时兴起,我去改变我的设置中的所有内容,以匹配之前使用即时客户端设置的Windows 2003服务器。主要的变化是将即时客户端放在驱动器根目录下的文件夹中(不是程序文件/ oracle / etc),但是c:/ oracle,我知道我已经看到其他帖子说oracle特别关于目录路径中的字符,也许空格也是禁止的?

我还添加了一堆更多的环境变量,在另一台机器上的anythign,ORACLE_HOME(到实例的根),SQL_PATH(相同),并将目录的根添加到PATH系统变量,而不仅仅是文件夹使用instantclient文件。无论如何,我很高兴它的工作,但这些变化中的任何一个都可能是它 - 但

答案 1 :(得分:0)

您可以使用ProcessMonitor查看您的sqlplus进程正在执行的操作。在我的情况下,TNS_ADMIN被正确定义,但是,错误地,我的tnsnames.ora和sqlnet.ora有一个愚蠢的“.txt”扩展名,默认情况下我在创建这些文件时添加了记事本。并且因为“Windows资源管理器”默认设置了“隐藏已知文件类型的扩展名”选项,所以命名错误根本不明显。

答案 2 :(得分:0)

我安装了12.1即时客户端。对我来说,通过创建\ network \ admin \ tnsnames.ora文件解决了这个问题。这是我使用的PowerShell:

$source = "C:\Users\USER1\Desktop\tnsnames.ora"
$target = "C:\oracle\product\12.1.0\client_1\network\admin"
mkdir $target
copy-item $source $target