erlang odbc mysql参数_Erlang在Redhat 5.3下使用unixODBC连接Oracle数据库的配置
個(gè)人在安裝配置時(shí)遇到一些麻煩,特此記錄如下: 環(huán)境 數(shù)據(jù)庫服務(wù)器操作系統(tǒng):Windows 2003 數(shù)據(jù)庫:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 erlang運(yùn)行的服務(wù)器操作系統(tǒng):Redhat 5.3 erlang:Erlang R14B03 (erts-5.8.4) 注意 ==========
個(gè)人在安裝配置時(shí)遇到一些麻煩,特此記錄如下:
環(huán)境
數(shù)據(jù)庫服務(wù)器操作系統(tǒng):Windows 2003
數(shù)據(jù)庫:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
erlang運(yùn)行的服務(wù)器操作系統(tǒng):Redhat 5.3
erlang:Erlang R14B03 (erts-5.8.4)
注意
===============================================================================
redhat 5.3中默認(rèn)安裝的unixODBC是2.2.11版本,這個(gè)版本與oracle的odbc驅(qū)動(dòng)不兼容。所以需要將先將其卸載,然后安裝unixODBC 2.3.0
卸載unixODBC的rpm包:
rpm -e mysql-connector-odbc-3.51.12-2.2.i386
rpm -e unixODBC-devel-2.2.11-7.1
rpm -e unixODBC-2.2.11-7.1
下載安裝unixODBC 2.3.0
從www.unixodbc.org處下載,或者
http://olex.openlogic.com/package_versions/download/10003?package_version_id=5966&path=openlogic%2Funixodbc%2F2.3.0%2Fopenlogic-unixodbc-2.3.0-all-src-2.zip
在configure時(shí)加兩個(gè)參數(shù):--sysconfdir=/etc --prefix=/usr
然后make install就可以啦
安裝完成后執(zhí)行odbcinst -j可以看到配置文件等的位置
===============================================================================
1. 從Oracle網(wǎng)站下載客戶端安裝包
http://download.oracle.com/otn/linux/instantclient/11203/oracle-instantclient11.2-basic-11.2.0.3.0-1.i386.rpm
http://download.oracle.com/otn/linux/instantclient/11203/oracle-instantclient11.2-odbc-11.2.0.3.0-1.i386.rpm
最好再安裝一下sqlplus
http://download.oracle.com/otn/linux/instantclient/11203/oracle-instantclient11.2-sqlplus-11.2.0.3.0-1.i386.rpm
2. 配置lib目錄
cd /usr/lib/oracle/11.2/client/lib
pwd >>/etc/ld.so.conf
ldconfig
3. 修改/etc/odbcinst.ini
增加如下:
# Driver form oracle
[Oracle]
Desription = ODBC for Oracle
Driver = /usr/lib/oracle/11.2/client/lib/libsqora.so.11.1
Setup = /usr/lib/liboraodbcS.so
FileUsage = 1
這個(gè)加到odbcinst.ini文件的最后。測試時(shí)用,正常使用時(shí)應(yīng)該去掉
[ODBC]
Trace = 1
TraceFile =/tmp/odbc.log
Debug = 1
Pooling = No
4. 修改/etc/odbc.ini
增加如下
[ORCL_146] #本地?cái)?shù)據(jù)源名
Description = ODBC for Oracle
Driver = Oracle
Server = 192.168.1.146
Port = 1521
ServerName = ORCL_146 #tnsnames.ora中的服務(wù)名
UserID = mycomm
Password = mycomm123
5. 增加/usr/lib/oracle/11.2/network/admin/tnsnames.ora
ORCL_146 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.146)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
其中ORCL_146要與odbc.ini的ServerName相同,
SERVICE_NAME為oracle的服務(wù)名
HOST為數(shù)據(jù)庫所在主機(jī)IP,PORT為數(shù)據(jù)庫所在主機(jī)port。
6. 在/etc/profile中增加:
export TNS_ADMIN=/usr/lib/oracle/11.2/network/admin/
然后,為了讓TNS_ADMIN環(huán)境變化現(xiàn)在就生效,執(zhí)行
. /etc/profile
7. 用isql測試一下
isql ORCL_146 -v
出錯(cuò):
[01000][unixODBC][Driver Manager]Can't open lib '/usr/lib/oracle/11.2/client/lib/libsqora.so.11.1' : libclntsh.so.11.1: cannot open shared object file: No such file or directory
[ISQL]ERROR: Could not SQLConnect
發(fā)現(xiàn)是沒有l(wèi)ibclntsh.so.11.1這個(gè)庫文件,這個(gè)庫文件在/usr/lib/oracle/11.2/client/lib/下,之所以沒有找到是由于在第2步時(shí)執(zhí)行l(wèi)dconfig的終端不是現(xiàn)在執(zhí)行isql的終端。
重新執(zhí)行一下ldconfig
再執(zhí)行isql ORCL_146 -v
出錯(cuò):
isql: symbol lookup error: /usr/lib/oracle/11.2/client/lib/libsqora.so.11.1: undefined symbol: SQLGetPrivateProfileStringW
這個(gè)問題就是unixODBC的版本問題啦,如果前面安裝了unixODBC 2.3.0的話不會(huì)出現(xiàn)這個(gè)錯(cuò)誤
如果sqlplus可以連接,但isql不可以,需要確認(rèn)是否export了TNS_ADMIN這一環(huán)境變量
8. erlang odbc 連接oralce時(shí)出錯(cuò)如下:
------------------------------------------
Erlang R14B03 (erts-5.8.4) [source] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]
Eshell V5.8.4 (abort with ^G)
1> odbc:start().
ok
2> odbc:connect("DSN=ORCL_146;UID=scott;PWD=tiger", []).
=ERROR REPORT==== 21-Oct-2011::19:23:49 ===
ODBC: received unexpected info: {tcp_closed,#Port<0.725>}
{error,connection_closed}
3>
=ERROR REPORT==== 21-Oct-2011::19:23:49 ===
** Generic server <0.39.0> terminating
** Last message in was {#Port<0.723>,{exit_status,23}}
** When Server state == {state,#Port<0.723>,
{<0.32.0>,#Ref<0.0.0.38>},
<0.32.0>,undefined,on,undefined,undefined,on,
connecting,undefined,0,
[#Port<0.721>,#Port<0.722>],
#Port<0.724>,#Port<0.725>}
** Reason for termination ==
** {port_exit,collecting_of_driver_information_faild}
----------------------------------------------
根據(jù)這里的方法
http://www1.erlang.org/pipermail/erlang-questions/2005-August/016816.html
這樣連接就可以啦
3>odbc:connect("DSN=ORCL_146;UID=scott;PWD=tiger", [{scrollable_cursors, off}]).
{ok,<0.41.0>}
4>
其實(shí)這里可以不用UID和PWD,只要一個(gè)DSN就可以啦,形如:
odbc:connect("DSN=ORCL_146", [{scrollable_cursors, off}]).
本文原創(chuàng)發(fā)布php中文網(wǎng),轉(zhuǎn)載請注明出處,感謝您的尊重!
總結(jié)
以上是生活随笔為你收集整理的erlang odbc mysql参数_Erlang在Redhat 5.3下使用unixODBC连接Oracle数据库的配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: fch32.exe是什么进程 作用是什么
- 下一篇: 热搜第一!玲娜贝儿的复工第一天 上海迪士