我需要在RHEL 6上设置Oracle ODBC驱动程序以连接到驻留在远程Windows机器上的Oracle数据源。
我采取了以下步骤:
[1]安装oracle-instanceclient-basic
[2]设置环境变量:ORACLE_HOME和LD路径
[3]创建了/etc/oracle/TNSnames.ora并进行了配置,但没有正确设置
最初,我收到错误"Connect failed because target or object does not exist"
然后,我在TNSnames.ora文件中设置了ORACLE_SID = DB_NAME
。
但是,这并没有解决问题,我现在收到了一条新的错误消息:"TNS: net service name is incorrectly specified"
答案 0 :(得分:11)
yum install unixODBC
rpm -ivh oracle-instantclient-basic-10.2.0.3-1.i386.rpm #downloaded on http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxsoft.html
unzip instantclient-odbc-linux32-10.2.0.3-20061115.zip #downloaded on http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxsoft.html
cp ./instantclient_10_2/libsqora.so.10.1 /usr/lib/oracle/10.2.0.3/client/lib/
export ORACLE_HOME=/usr/lib/oracle/10.2.0.3/client
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
此外,您需要设置$TWO_TASK
(Oracle希望获取服务器的默认位置)以指向Oracle服务器在Windows上运行的位置 - 不要忘记在最后添加侦听器端口号:
export TWO_TASK=//213.123.23.19:1521/listener
要获取侦听器的名称,请在运行Oracle服务器的Windows提示符下键入以下命令:
lsnrctl
status
它将获得监听器及其状态(READY或UNKNOWN)。连接到处于就绪状态的侦听器:Instance "zelistener", status READY
mkdir / etc / oracle
vi /etc/oracle/tnsnames.ora
MY_SID =
( DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(Host = 127.0.0.1)
(Port = 1521)
)
)
(CONNECT_DATA = (SID = MY_SID)
)
)
导出TNS_ADMIN = / etc / oracle
vi /etc/odbcinst.ini
[OracleODBC-10g]
Description = Oracle ODBC driver for Oracle 10g
Driver = /usr/lib/oracle/10.2.0.3/client/lib/libsqora.so.10.1
FileUsage = 1
Driver Logging = 7
vi /etc/odbc.ini
[simple]
Driver = OracleODBC-10g
DSN = OracleODBC-10g
ServerName = MY_SID
UserID = USER
Password = PASSWORD
isql -v simple
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
答案 1 :(得分:2)
我认为我们应该分配unixODBC的版本。 如果要连接oracle12c,我们应该使用unixODBC-2.3.1