unixODBC 产生 ORA-12154 TNS 解析错误,而 sqlplus 工作正常
unixODBC yields ORA-12154 TNS resolve error while sqlplus works just fine
我在设置与 Oracle 11g R1 数据库的 unixODBC 连接时遇到一个奇怪的错误。一切设置完成后,我想尝试使用 isql 测试连接。它不断返回错误
[08004][unixODBC][Oracle][ODBC][Ora]ORA-12154: TNS:could not resolve the connect identifier specified
让我感到困惑的是,我可以使用相同的环境和 TNS 符号通过 sqlplus
进行连接
sqlplus dbuser/password@DBOPBAC9
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Release 11.2.0.3.0 - 64bit Production
SQL>
我已经处理了两天的问题,但找不到解决方案。 ORA-12154 是一个常见错误,我已经找到了很多可能的解决方案。但是 none 对我有用。这是令人沮丧的。
这是我尝试过的:
提到的环境变量都是在启动isql之前设置的
ORACLE_SID=DBOPBAC9
ORACLE_BASE=/CSGPBAC9/DBA/oracle
ORACLE_INSTANT_CLIENT_64=/CSGPBAC9/opt/myuser/tools/instantclient_11_2_x64
ORACLE_HOME=/CSGPBAC9/DBA/oracle/product/11.2.0
TNS_ADMIN=/CSGPBAC9/DBA/oracle/product/11.2.0/network/admin
这是在 $TNS_ADMIN 目录中找到的 tnsnames.ora
DBOPBAC9 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = host IP)(PORT = 1480))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBOPBAC9)
)
)
这是sqlnet.ora
TRACE_LEVEL_CLIENT = OFF
SQLNET.EXPIRE_TIME = 10
NAMES.DIRECTORY_PATH = (TNSNAMES)
DIAG_ADR_ENABLED=off
这是我的 unixODBC 设置。 我已经将 unixODBC 安装到目录 /opt/unixODBC
并相应地设置了环境变量。 odbc.ini
位于目录 /opt/myuser/tools/unixODBC
中,并且还设置了变量。
odbc.ini
[OracleODBC-11g]
Application Attributes = T
Attributes = W
BatchAutocommitMode = IfAllSuccessful
BindAsFLOAT = F
CloseCursor = F
DisableDPM = F
DisableMTS = T
Driver = Oracle 11g ODBC driver
DSN = OracleODBC-11g
EXECSchemaOpt =
EXECSyntax = T
Failover = T
FailoverDelay = 10
FailoverRetryCount = 10
FetchBufferSize = 64000
ForceWCHAR = F
Lobs = T
Longs = T
MaxLargeData = 0
MetadataIdDefault = F
QueryTimeout = T
ResultSets = T
ServerName = //host.ip/DBOPBAC9
SQLGetData extensions = F
Translation DLL =
Translation Option = 0
DisableRULEHint = T
UserID =
StatementCache=F
CacheBufferSize=20
UseOCIDescribeAny=F
odbcinst.ini
[Oracle 11g ODBC driver]
Description = Oracle ODBC driver for Oracle 11g
Driver =
Driver64 = /CSGPBAC9/opt/myuser/tools/instantclient_11_2_x64/libsqora.so.11.1
Setup =
FileUsage =
CPTimeout =
CPReuse =
I have created a strace output 检查错误,但不幸的是我找不到任何东西。对我来说,它似乎能够找到 tnsnames.ora 文件并读取它
您需要编辑 odbc.ini
ServerName = TNS_ALIAS
我在设置与 Oracle 11g R1 数据库的 unixODBC 连接时遇到一个奇怪的错误。一切设置完成后,我想尝试使用 isql 测试连接。它不断返回错误
[08004][unixODBC][Oracle][ODBC][Ora]ORA-12154: TNS:could not resolve the connect identifier specified
让我感到困惑的是,我可以使用相同的环境和 TNS 符号通过 sqlplus
进行连接
sqlplus dbuser/password@DBOPBAC9
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Release 11.2.0.3.0 - 64bit Production
SQL>
我已经处理了两天的问题,但找不到解决方案。 ORA-12154 是一个常见错误,我已经找到了很多可能的解决方案。但是 none 对我有用。这是令人沮丧的。
这是我尝试过的:
提到的环境变量都是在启动isql之前设置的
ORACLE_SID=DBOPBAC9
ORACLE_BASE=/CSGPBAC9/DBA/oracle
ORACLE_INSTANT_CLIENT_64=/CSGPBAC9/opt/myuser/tools/instantclient_11_2_x64
ORACLE_HOME=/CSGPBAC9/DBA/oracle/product/11.2.0
TNS_ADMIN=/CSGPBAC9/DBA/oracle/product/11.2.0/network/admin
这是在 $TNS_ADMIN 目录中找到的 tnsnames.ora
DBOPBAC9 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = host IP)(PORT = 1480))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBOPBAC9)
)
)
这是sqlnet.ora
TRACE_LEVEL_CLIENT = OFF
SQLNET.EXPIRE_TIME = 10
NAMES.DIRECTORY_PATH = (TNSNAMES)
DIAG_ADR_ENABLED=off
这是我的 unixODBC 设置。 我已经将 unixODBC 安装到目录 /opt/unixODBC
并相应地设置了环境变量。 odbc.ini
位于目录 /opt/myuser/tools/unixODBC
中,并且还设置了变量。
odbc.ini
[OracleODBC-11g]
Application Attributes = T
Attributes = W
BatchAutocommitMode = IfAllSuccessful
BindAsFLOAT = F
CloseCursor = F
DisableDPM = F
DisableMTS = T
Driver = Oracle 11g ODBC driver
DSN = OracleODBC-11g
EXECSchemaOpt =
EXECSyntax = T
Failover = T
FailoverDelay = 10
FailoverRetryCount = 10
FetchBufferSize = 64000
ForceWCHAR = F
Lobs = T
Longs = T
MaxLargeData = 0
MetadataIdDefault = F
QueryTimeout = T
ResultSets = T
ServerName = //host.ip/DBOPBAC9
SQLGetData extensions = F
Translation DLL =
Translation Option = 0
DisableRULEHint = T
UserID =
StatementCache=F
CacheBufferSize=20
UseOCIDescribeAny=F
odbcinst.ini
[Oracle 11g ODBC driver]
Description = Oracle ODBC driver for Oracle 11g
Driver =
Driver64 = /CSGPBAC9/opt/myuser/tools/instantclient_11_2_x64/libsqora.so.11.1
Setup =
FileUsage =
CPTimeout =
CPReuse =
I have created a strace output 检查错误,但不幸的是我找不到任何东西。对我来说,它似乎能够找到 tnsnames.ora 文件并读取它
您需要编辑 odbc.ini
ServerName = TNS_ALIAS