知识库

在未使用 TNSNames.ora 的情况下连接到 Oracle 时出现“ORA-12154”错误


发布时间: 01 Aug 2014
上次修改日期: 09 May 2022

问题

使用 Oracle 连接时,如果该连接是在使用 LDAP、TNSNAMES 或 EZCONNECT 的计算机上创建的,或者在初始连接期间配置了所有三个连接参数(服务器服务端口),则该连接将不再工作,并且可能会出现以下错误:

“Oracle 数据库错误 12154:ORA-12154:TNS:无法解析指定的连接标识符”

当您尝试使用“服务器”参数内 TNSNames.ora 文件中的服务名称连接到同一 Oracle 数据库,并将其他两个参数留空时,连接成功。

在以下情况下,可能会出现此行为:
  • 在运行 Tableau Desktop 的计算机之间共享工作簿,其中一台计算机具有上述配置文件,而另一台计算机没有。
  • 将与 Oracle 的实时连接从运行 Tableau Desktop 的计算机(使用上述配置文件之一)发布到不使用上述配置文件的 Tableau Server 实例。(如果以数据提取形式发布连接,连接将正常工作,但不会刷新。)

环境

  • Tableau Server
  • Tableau Desktop
  • Oracle

解决方案

选项 1:

与您的 Oracle 数据库管理员一起允许在运行 Tableau Desktop 或 Tableau Server 的计算机上使用 Oracle 客户端的 HOSTNAME 连接类型。

选项 2:

以下解决方法可能允许使用 HOSTNAME 连接类型:

  1. 在运行 Tableau Desktop 或 Tableau Server 的计算机上,查找 sqlnet.ora 文件。包含该文件的文件夹应该在 TNS_ADMIN 变量中指定,也应该包含 TNSNames.ora 文件。有关详细信息,请参阅 Oracle 常见问题中将 Oracle 连接设置为使用 TNSNames.oraSqlnet.ora 内的“设置 TNS_Admin 环境变量”。
    备注:如果此文件夹不包含 sqlnet.ora 文件,请创建一个 sqlnet.ora 文件。
  2. 在 sqlnet.ora 文件中,修改 NAMES.DIRECTORY_PATH 行以显示以下行或将以下行添加到 sqlnet.ora 文件中: 
    NAMES.DIRECTORY_PATH= (LDAP, TNSNAMES, HOSTNAME)
备注:如果 Tableau Server 分布式环境中出现此问题,请在 Tableau Server 安装过程中在所有计算机上执行上述步骤。 包括服务名称和端口号,在连接对话框的“服务器”文本字段中使用 FQDN(完全限定的域名)。

原因

Sqlnet.ora 文件不允许 Oracle 驱动程序使用所有三个连接参数查找数据库。

当使用 TNSNAMES.ora 或 LDAP.ora 时,它们允许在 Tableau 连接器外部定义 Oracle 连接及其参数。“net_service_name”部分将用作服务器字段,当与凭据一起输入时,它将从 TNSNAMES/LDAP 文件中获取服务名称和端口号。不使用 TNSNAMES/LDAP 的计算机需要输入服务名称和端口号才能进行连接,它们还需要使用服务器的 FQDN 而不是自定义名称(例如:“oracle.test.tsi.lan”将是 FQDN,而“Oracle_01”可以用作 net_service_name)
此文章是否已解决问题?