微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法连接到 Oracle 9 (Powerbuilder 12.5) - ORA-12154 错误

如何解决无法连接到 Oracle 9 (Powerbuilder 12.5) - ORA-12154 错误

经过 10 多个小时的尝试,我想寻求您的帮助。

我正在尝试在 Powerbuilder 12.5 中连接到 Oracle 数据库“O90 Oracle 9i”。

我的机器关于 Oracle 有点乱(如果实例我有几个 并且我无法完全删除它们)所以我设置了一个虚拟机来测试 它在干净的环境中。

这就是我在干净的机器上所做的:

  1. 已安装 Powerbuilder 12.5
  2. 安装了 ERP 软件(我尝试连接的地方)。 ERP 软件发行版带有 \dbms\oracle\bin|network 文件夹。
  3. 将“C:\facterp\dbms\oracle\bin”(第 2 点中的文件夹之一)添加到 PATH 变量

现在我可以使用 sqltools 连接到服务器(显然它从位于的 tnsnames.ora 读取数据 在第 2 点的其中一个文件夹中)。 在 tnsnames.ora 里面:

GERP_波兰 = (描述 = (ADDRESS_LIST = (地址 = (协议 = TCP)(主机 = server.ip.given.here)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl)

但是,当尝试从 Powerbuilder 连接时,我收到错误 ORA-12154。

我想也许 PB 使用了不同的 tnsnames.ora 文件(如果我删除修改 错误文件相同)。但是没有其他文件。据我所知 Powerbuilder 使用 ORACLE_HOME 变量作为 tnsnames.ora 位置。我添加了变量 但问题还是一样。

我的问题:

  1. 这可能是 32 位与 64 位的问题吗?我知道我应该安装 32 位 Oracle 客户端 使用 32 位 PB,但在这种情况下我不安装任何客户端。我只是使用提供的 文件。这对于 sqltools 来说已经足够了,但对于 PB 来说还不够。
  2. TNS 包括一行: (SERVICE_NAME = orcl)。 这是否意味着我需要配置和使用 listener.ora?

我承认我还没有弄清楚不同连接方式的整个概念 (平面ora文件/服务/等)

在我的“乱七八糟”的机器上也发生了同样的事情。

非常感谢您为我指明方向。

谢谢,

克里斯。


更新:

我扩展了 ORACLE_HOME 变量:

C:\facterp\dbms\oracle

C:\facterp\dbms\oracle\network\admin\oracle

现在 Powerbuilder 连接到数据库,但是当我展开“表”时 treeview 没有表。当我展开“用户”树视图时它崩溃了 整个应用程序。

我实施的更改似乎合乎逻辑(更长的 ORACLE_HOME 路径) 不应该工作 - 在其他地方有一些 ORACLE_HOME% 引用......

解决方法

ORA-12154 通常意味着 TNSNAMES.ORA 不包含您要连接的数据库,或者您使用的工具无法找到 TNSNAMES.ORA。

尝试创建指向包含 TNSNAMES.ORA 文件的目录的 TNS_ADMIN 环境变量。例如,在我的 PC 上,我将其设置为

TNS_ADMIN=C:\0_Oracle_library

现在,每个 Oracle 软件都知道在哪里查看。因为,它们中的每一个都包含自己的 \network\admin 或类似的目录,该目录具有自己的 TNSNAMES.ORA。无论何时添加新数据库,您都必须维护所有这些 TNSNAMES.ORA 文件(这变得乏味)。但是,使用 TNS_ADMIN,您只保留该文件的一个副本 - 没问题。

那么,试试吧。它不必是一个新目录,您可以使用现有目录,例如

TNS_ADMIN=C:\facterp\dbms\oracle\bin

(或任何您的 TNSNAMES.ORA 文件所在的位置)。

,

我忘了提到我已经尝试添加 TNS_ADMIN 变量。没有任何变化。

但是,我显然缺少一些东西:

在尝试我提供的连接时在 Powerbuilder 中:

*profile name* (probably has not meaning for this conversation,just internal name)
*server*: server.ip.given.here/orcl
*login&password*

我在 tnsnames.ora 文件中看不到 Oracle 应该查找的任何内容。它是否应该从下面的 tnsnames.ora 中查找“GERP_POLAND”?如果是,我在连接尝试中看不到任何对它的引用。

GERP_POLAND = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = server.ip.given.here)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME =) orcl)

如果我将 server.ip.given.here/orcl 修改为 server.ip.given.here/orclblabla,我会得到相同的结果(似乎已连接 - 绿色复选标志)但未连接。

顺便说一下 - 使用 PowerBuilder 跟踪信息:

SELECT OWNER,TABLE_NAME,TABLE_TYPE FROM SYS.ALL_CATALOG --> 空结果 SELECT USERNAME FROM SYS.ALL_USERS --> 应用程序崩溃

无论如何 - 我觉得我必须在这里遗漏一些基本的东西......

非常感谢您的帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。