将Oracle与unixODBC连接:TNS:错误地指定了网络服务名称

时间:2016-04-08 12:50:22

标签: oracle ubuntu odbc unixodbc

我正在尝试从Windows Server中的Ubuntu连接到Oracle。我已经将unixODBC和Oracle驱动程序安装到Ubuntu。当我尝试使用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)。这是我第一次与甲骨文做任何事情,所以实际上我对此一无所知。我还尝试修改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侦听器)?

1 个答案:

答案 0 :(得分:4)

我尝试了很多东西并且不确定它们中哪些有用,但我的猜测是odbc.ini中的ServerName修复了这个错误:

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