使用 ODBC 连接到 OracleDB 时出现“[unixODBC][Driver Manager]未找到数据源名称,并且未指定默认驱动程序”

使用 ODBC 连接到 OracleDB 时出现“[unixODBC][Driver Manager]未找到数据源名称,并且未指定默认驱动程序”

我正在尝试从 Linux 建立 odbc 连接到 oracle 数据库。当我以 root 身份登录时,它可以工作。我的根配置文件如下:

more ~/.profile
export ODBCINI=/etc/unixODBC/odbc.ini
export ODBCSYSINI=/etc/unixODBC

但是,当我以普通用户身份登录时,无法进行 odbc 连接。我收到此错误:

[RODBC] ERROR: state IM002, code 0, message [unixODBC][Driver Manager]Data source name not found, and no default driver specified

我不确定这里有什么问题,但我想也许我可以向其他用户提供根配置文件,这可能会解决我的问题。如何向所有其他用户展示根配置文件?你知道这里可能发生什么吗?

附加信息:

这是我的 tnsnames.ora 文件,如下所示:

Data =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (LOAD_BALANCE = off)
      (FAILOVER = ON)
      (ADDRESS = (PROTOCOL = TCP)(HOST = server1.example.com )(PORT = 1521))
    )
    (CONNECT_DATA =
      (service_name = Data)
    )
  )

这是 odbc.ini 的内容:

[Data]
Driver=Oracle
Description=Test
Trace=Yes
ServerName=//server1.example.com:1521/
Database=test

这是 ondbcinst.ini

[Oracle]
Description = Oracle ODBC Connection
Driver = /opt/oclient/instantclient_12_1/libsqora.so.12.1
Setup =
FileUsage =

答案1

首先确定是环境变量的问题。

在调用应用程序之前手动运行这些行。该应用程序必须从命令行调用。

export ODBCINI=/etc/unixODBC/odbc.ini
export ODBCSYSINI=/etc/unixODBC

如果有效,那么您可以将这些行添加到系统范围的/etc/profile文件中。强制用户注销并重试。

答案2

如果您有一个数据库要连接,那么您可以执行以下操作

导出 TWO_TASK=db_SID

您可以将其放入 /etc/profile 中,然后您的工作就完成了。

相关内容