使用unixODBC连接Oracle:TNS:net服务名称指定不正确

问题描述 投票:0回答:2

我正在尝试从 Ubuntu 连接到 Windows Server 中的 Oracle。我已经在 Ubuntu 上安装了 unixODBC 和 Oracle 驱动程序。当我尝试使用 isql 连接时,出现以下错误:

user@user:~$ isql -v oracle-jono username password
[S1000][unixODBC][Oracle][ODBC][Ora]ORA-12545: Connect failed because target host or object does not exist
[ISQL]ERROR: Could not SQLConnect

当我用 sudo 运行它时,我收到不同的错误:

[S1000][unixODBC][Oracle][ODBC][Ora]ORA-12162: TNS:net service name is incorrectly specified

我尝试了许多环境变量的组合但没有成功(ORACLE_HOME、ORACLE_SID、TNS_ADMIN、TWO_TASK)。这是我第一次使用 Oracle 做任何事情,所以实际上我对此一无所知。我还尝试修改 odbc.ini 和 tnsnames.ora 文件。

此 Oracle 连接的 odbc.ini:

[oracle-jono]
Description = ...
Driver      = OracleDriver
Server      = 111.222.111.222
User        = ...
Password    = ...
Port        = 1521
Database    = mydatabase

我的tnsnames.ora:

Data Source=
    (DESCRIPTION=
        (ADDRESS_LIST=
            (ADDRESS=
                (PROTOCOL=TCP)
                (HOST=111.222.111.222)
                (PORT=1521)
            )
        )
        (CONNECT_DATA=
            (SERVER=DEDICATED)
            (SERVICE_NAME=mydatabase)
        )
);User Id=...;Password=...;

有明显错误吗?我应该在环境变量中添加什么?我是否必须在 Oracle 数据库存在的 Windows Server 中执行某些操作(例如 Oracle 侦听器)?

oracle ubuntu odbc unixodbc
2个回答
10
投票

我尝试了很多方法,不确定其中哪一个有效,但我猜测 odbc.ini 中的 ServerName 修复了此错误:

[oracle-jono]
Description = ...
...same as above...
ServerName  = //111.222.111.222:1521/mydatabase

0
投票

当我将 ServerName 放入 odbc.ini 中时,它会检查 freetds.conf 中的服务器“//111.222.111.222:1521/mydatabase”。我错过了什么吗?

© www.soinside.com 2019 - 2024. All rights reserved.