1

以下是详细信息:

  1. 我从Windows 7 64 位 vm (vmware) 上的 OTN 下载页面安装了 oracle 即时客户端 11.2.0.2.0 。
  2. 我正在尝试连接到远程 oracle 数据库,我可以使用 TNS 成功连接到一个程序,但不能连接到 SQL*Plus 和其他应用程序。
  3. 尝试使用 schema@servicename、密码等连接 SQL*Plus,会出现上述错误。
  4. 要通过 SQL Developer 连接,通常我会使用基本连接信息而不依赖 tnsnames,但尝试正常连接会给我:io error: unknown host specified. 如果我使用 TNS 协议,SQL Developer 可以成功连接和查询数据库。
  5. 尝试从其他程序中得到与 SQL*Plus 相同的错误。尝试使用 tnsnames 中的服务名称时也是如此。

这显然是非常令人沮丧的,因为它以一种方式而不是另一种方式工作。我遵循了使用即时客户端的所有常规说明,已将带有 Instantclient 的目录添加到 PATH,还创建了一个 TNS_ADMIN 条目,该目录位于 tnsnames.ora 文件中

4

3 回答 3

1

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

我还添加了更多环境变量,其他机器上的任何变量,ORACLE_HOME(到实例的根目录),SQL_PATH(相同),并将目录的根目录添加到 PATH 系统变量,而不仅仅是带有 Instantclient 的文件夹文件。不管怎样,我很高兴它的工作,这些变化中的任何一个都可能是它——

于 2011-08-17T16:43:00.387 回答
0

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

于 2012-02-12T09:18:39.323 回答
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
于 2016-08-09T19:43:29.267 回答