将erlang客户端连接到oracle

时间:2012-02-11 23:46:45

标签: linux oracle erlang

有谁知道如何从linux中的erlang客户端连接到oracle?我想ODBC驱动程序是必需的。

2 个答案:

答案 0 :(得分:2)

根据Erlang文档ODBC is the way to go

有一个Erlang ODBC API“应该在包括Linux在内的所有Unix方言上运行....但目前它仅针对Solaris,Windows 2000,Windows XP和NT进行了测试”。 Find out more

Linux有ODBC驱动程序。如果你很幸运,你的发行版已经安装了一个。 Find out more

答案 1 :(得分: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).

首先必须运行Erlang ODBC服务器。 Erlang ODBC将询问您是否有连接字符串和选项。在选项中首先要注意的是,大多数Oracle驱动程序都需要关闭这些可滚动游标。然后,在连接字符串中,您将需要输入有效的UID(用户名),密码,DSN(数据源名称)和驱动程序名称,这些完全与您在上述步骤中在Windows ODBC连接中创建DSN的方式完全相同。

那应该没问题。请注意,您应该坚持使用oracle驱动程序,并避免使用第三方ODBC Oracle驱动程序。我有使用其他第三方驱动程序的经验,因为在说了1000万个连接之后,驱动程序开始要钱/许可证并阻止您的流量到达oracle DB。

如果我知道以防万一你有任何挑战。上面的模块有点粗糙,不要因为它只是一个shell测试模块而使用,否则你需要说一个gen_server来保存Connection对象,以便其他处理只是继续与它通信。只要您成功使用计算机上安装的Oracle DB或客户端设置数据源名称,那么此模块将帮助您,否则在设置ODBC连接时遇到的大多数挑战。

= == Linux ===
对于Linux,我想你需要获得像 Easy Soft ODBC DriversUnixODBC这样的odbc库。然后尝试像上面的窗口一样设置它,然后使用我上面提供的Erlang模块。它应该仍然有效。由于在设置和配置ODBC库方面遇到了很多挑战,我担心我总是从Windows而不是Linux连接oracle(试一试,你可能在设置Unix ODBC或Easy Soft ODBC库方面取得成功),否则, Erlang的一部分是整理出来的。