【问题标题】:Unable to connect to Oracle 9 (Powerbuilder 12.5) - ORA-12154 error无法连接到 Oracle 9 (Powerbuilder 12.5) - ORA-12154 错误
【发布时间】:2021-04-23 18:51:08
【问题描述】:

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

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

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

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

  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_波兰 = (描述= (地址列表 = (地址 =(协议 = TCP)(主机 = server.ip.given.here)(端口 = 1521)) ) (连接数据 = (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% 引用......

【问题讨论】:

    标签: powerbuilder oracle9i


    【解决方案1】:

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

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

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

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

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

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

    如果我将 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 --> 应用程序崩溃

    无论如何 - 我觉得我一定错过了一些基本的东西......

    非常感谢您的帮助。

    【讨论】:

      【解决方案2】:

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

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

      TNS_ADMIN=C:\0_Oracle_library
      

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

      所以,试试吧。不一定是新目录,可以使用已有的,比如

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

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

      【讨论】:

      • 我身边的另一个新手问题:我是否必须在 Windows 服务中查看特定的服务名称才能连接?如果是,它应该等于 tnsnames.ora 中的特定字段吗?
      • 如果您的 PC 上安装了 Oracle 数据库,那么它的名称类似于“OracleServiceXE”(就像我的 Express Edition 数据库)。也启动“OracleXETNSListener”。它的(服务)名称不必与您在 TNSNAMES.ORA 中的名称相同;该文件包含数据库的“别名”,您可以按照自己的方式命名该别名(例如“my_database”、“home_xe”、...)。但是 TNSNAMES.ORA 中包含的信息(主机、端口、服务名称)必须反映与该数据库相关的真实数据。
      • 好的,我的设置现在和你的一样 - 我有相同的服务名称和侦听器名称(两个服务都在运行)。 tnsnames.ora 中的服务名称是“orcl”。我不应该让 10gXE 实例知道我正在连接的数据库吗? (提供“server.ip.given.here/orcl”+用户名和密码?)。
      • 不知道PowerBuilder,没用过。但是,我用来连接到 Oracle 数据库的任何其他工具都需要数据库别名(来自 TNSNAMES.ORA)、用户名和密码。或者,您可以使用您建议的连接字符串,例如db_server:port/service_name username/password
      • 我从 PB 中的“数据库配置文件设置”连接,所以我正在填写这些字段。我仍然不确定我在 PB(服务器:10.100.100.10\orcl)中提供的数据、Oracle 10g 实例和 tnsnames.ora 之间有什么联系。您提到 TNSNAMES.ORA 中的服务名称应该反映真实的数据库信息。在我的情况下是“orcl”还是OracleServiceXE?请耐心等待我一段时间,我想我们正在找到解决方案:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-25
      • 1970-01-01
      • 2019-04-01
      • 2010-09-17
      相关资源
      最近更新 更多