我在设置到Oracle 11g R1数据库的unixODBC连接时出现奇怪的错误。完成所有设置后,我想尝试使用isql测试连接。它不断返回错误unixODBC生成ORA-12154 TNS解析错误,而sqlplus工作正常
[08004][unixODBC][Oracle][ODBC][Ora]ORA-12154: TNS:could not resolve the connect identifier specified
什么是困惑我的是,我可以通过sqlplus
使用相同的环境和TNS符号就好
sqlplus dbuser/[email protected]
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Release 11.2.0.3.0 - 64bit Production
SQL>
我的问题,工作两天连现在无法找到解决方案。 ORA-12154是一个常见的错误,我发现了很多可能的解决方案。但他们都没有为我工作。这是令人沮丧的。
以下是我已经tryed:所提到的全部设置
环境变量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)
)
)
这是sqlne t.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文件和读取它
当您在SQL运行SELECT * Plus中会发生什么? –
我对unixODBC并不熟悉,但对我来说odbc.ini中的参数DSN是'OracleODBC-11g'而不是'DBOPBAC9'似乎很奇怪。我会尝试改变它。 – wolfrevokcats
@BobJarvis语句成功执行。 – ap0