2012-02-11 66 views
2

有誰知道如何從一個Erlang客戶端連接到Oracle在Linux?我猜ODBC驅動程序是必需的。連接二郎客戶到Oracle

+0

用oracle保持可滾動遊標關閉。 odbc連接選項'{scrollable_cursors,off}'。 – 2012-02-12 10:46:16

+0

閱讀我在POSTED下面的答案,它應該幫助 – 2012-02-14 03:37:52

回答

2

根據Erlang的文檔ODBC is the way to go

有是一個Erlang ODBC API 「應該在所有的Unix方言,包括Linux操作系統上運行....但是目前我們只測試用於Solaris,Windows 2000中,Windows XP和NT」。 Find out more

有針對Linux的ODBC驅動程序。如果幸運的話,你的發行版已經安裝了一個。 Find out more

+0

真的嗎? Erlang中真的沒有本地數據庫驅動程序嗎? – 2014-10-30 02:33:01

0

====答案可能是,如果在Windows上非常有用,但可能包含有用的信息爲Linux以及=====

現在,首先,我們需要下載的Oracle客戶端或Oracle數據庫本身並從這裏安裝:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html。 Oracle安裝並創建一個名爲oracle的文件夾(在Windows上)。在此文件夾內,您通常會找到它的$ HOME文件夾:C:\oracle\product\10.2.0\db_1。如果您使用的是Windows,因此,當你通過閱讀這篇訪問ODBC配置:http://ozinisle.blogspot.com/2011/10/configuring-odbc-connection-for-oracle.html那麼您將創建您所選擇的新Data Source Name (DSN)。步驟大致如下:
1.選擇系統DSN
2.創建新數據源
3.向下滾動以在OraDB中選擇Oracle {Vsn} _home1
4.指定用戶名(UID),密碼
5.記下您選擇的驅動程序名稱,記下您輸入的數據源名稱。
6.測試連接,並確保窗戶說它很好。

現在,在此之後,我們去erlang一邊。看看這個模塊,它應該啓動你與oracle進行通信。

 
-module(oracle_client). 
-compile(export_all).
-define(CONNECT_OPTIONS,[ {auto_commit,on}, {scrollable_cursors, off} ]). -define(CONNECT_STRING,"DSN=data_source;UID=uid;PWD=password;DRIVER=Oracle in OraDb10g_home1").

connect()-> odbc:start(), try odbc:connect(?CONNECT_STRING,?CONNECT_OPTIONS) of {ok,ConnObject} -> {true,ConnObject}; Any -> {error,Any} catch E:E2 -> {exception,{E,E2}} end.
send_sql(ConnObject, SQLQuery)-> odbc:sql_query(ConnObject, SQLQuery).

二郎ODBC服務器必須先運行。 Erlang ODBC會詢問你一個連接字符串和選項。首先請注意,大多數Oracle驅動程序都需要關閉可滾動遊標。然後,在連接字符串中,您將被要求輸入有效的UID(用戶名),密碼,DSN(數據源名稱)和驅動程序名稱,所有這些都與您在上述步驟中以ODBC ODBC連接創建DSN的方式完全相同。

這應該沒問題。請注意,您應該堅持自己的Oracle驅動程序,並避免使用第三方ODBC Oracle驅動程序。我有從使用其他第三方驅動程序的經驗,因爲說了一千萬個連接後,驅動程序開始要求金錢/許可證,並阻止您的流量到達Oracle數據庫。

如果您遇到任何問題,請告訴我。上面的模塊有點粗糙,不要使用,因爲它只是一個shell測試模塊,否則你需要說一個gen_server,它將持有連接對象,以便其他處理只是與它保持通信。只要您成功地在您的計算機上安裝了Oracle DB或客戶端,即可設置數據源名稱,那麼該模塊將幫助您,否則在設置ODBC連接時會遇到大多數挑戰。

=== Linux ===
對於Linux,我想你需要獲得像 Easy Soft ODBC DriversUnixODBC這樣的odbc庫。然後嘗試按照上面的窗口設置它,然後使用上面提供的Erlang模塊。它應該仍然有效。由於在設置和配置ODBC庫方面遇到很多挑戰,恐怕我總是從Windows和NOT Linux連接到oracle(給它一個鏡頭,您可能會成功設置Unix ODBC或Easy Soft ODBC庫),否則, Erlang的一部分被整理出來。

+0

謝謝,我會嘗試發佈更新 – kostas 2012-02-14 08:10:26