日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

erlang odbc mysql参数_Erlang在Redhat 5.3下使用unixODBC连接Oracle数据库的配置

發布時間:2023/12/10 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 erlang odbc mysql参数_Erlang在Redhat 5.3下使用unixODBC连接Oracle数据库的配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

個人在安裝配置時遇到一些麻煩,特此記錄如下: 環境 數據庫服務器操作系統:Windows 2003 數據庫:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 erlang運行的服務器操作系統:Redhat 5.3 erlang:Erlang R14B03 (erts-5.8.4) 注意 ==========

個人在安裝配置時遇到一些麻煩,特此記錄如下:

環境

數據庫服務器操作系統:Windows 2003

數據庫:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0

erlang運行的服務器操作系統:Redhat 5.3

erlang:Erlang R14B03 (erts-5.8.4)

注意

===============================================================================

redhat 5.3中默認安裝的unixODBC是2.2.11版本,這個版本與oracle的odbc驅動不兼容。所以需要將先將其卸載,然后安裝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時加兩個參數:--sysconfdir=/etc --prefix=/usr

然后make install就可以啦

安裝完成后執行odbcinst -j可以看到配置文件等的位置

===============================================================================

1. 從Oracle網站下載客戶端安裝包

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

這個加到odbcinst.ini文件的最后。測試時用,正常使用時應該去掉

[ODBC]

Trace = 1

TraceFile =/tmp/odbc.log

Debug = 1

Pooling = No

4. 修改/etc/odbc.ini

增加如下

[ORCL_146] #本地數據源名

Description = ODBC for Oracle

Driver = Oracle

Server = 192.168.1.146

Port = 1521

ServerName = ORCL_146 #tnsnames.ora中的服務名

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的服務名

HOST為數據庫所在主機IP,PORT為數據庫所在主機port。

6. 在/etc/profile中增加:

export TNS_ADMIN=/usr/lib/oracle/11.2/network/admin/

然后,為了讓TNS_ADMIN環境變化現在就生效,執行

. /etc/profile

7. 用isql測試一下

isql ORCL_146 -v

出錯:

[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

發現是沒有libclntsh.so.11.1這個庫文件,這個庫文件在/usr/lib/oracle/11.2/client/lib/下,之所以沒有找到是由于在第2步時執行ldconfig的終端不是現在執行isql的終端。

重新執行一下ldconfig

再執行isql ORCL_146 -v

出錯:

isql: symbol lookup error: /usr/lib/oracle/11.2/client/lib/libsqora.so.11.1: undefined symbol: SQLGetPrivateProfileStringW

這個問題就是unixODBC的版本問題啦,如果前面安裝了unixODBC 2.3.0的話不會出現這個錯誤

如果sqlplus可以連接,但isql不可以,需要確認是否export了TNS_ADMIN這一環境變量

8. erlang odbc 連接oralce時出錯如下:

------------------------------------------

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}

----------------------------------------------

根據這里的方法

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>

其實這里可以不用UID和PWD,只要一個DSN就可以啦,形如:

odbc:connect("DSN=ORCL_146", [{scrollable_cursors, off}]).

本文原創發布php中文網,轉載請注明出處,感謝您的尊重!

總結

以上是生活随笔為你收集整理的erlang odbc mysql参数_Erlang在Redhat 5.3下使用unixODBC连接Oracle数据库的配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。