【问题标题】:Connect erlang client to oracle将erlang客户端连接到oracle
【发布时间】:2012-03-03 22:40:23
【问题描述】:

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

【问题讨论】:

  • 使用 oracle 保持可滚动光标关闭。 odbc 连接选项{scrollable_cursors, off}.
  • 阅读我在下面发布的答案,它应该会有所帮助

标签: linux oracle erlang


【解决方案1】:

根据 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.

【讨论】:

  • 真的吗? Erlang 中真的没有原生的 DB 驱动程序吗?
【解决方案2】:

==== 如果在 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{Vsn}_home1
4 中选择 Oracle。指定用户名 (UID)、密码
5。记下您选择的驱动程序名称,记下您输入的数据源名称。
6.测试连接并确保 Windows 显示正常。

现在,在这之后,我们去 erlang 方面。看看这个模块,它应该让你开始与 oracle 沟通。

-模块(oracle_client)。 -编译(export_all)。
-定义(连接选项,[ {auto_commit,on}, {scrollable_cursors,关闭} ])。 -define(CONNECT_STRING,"DSN=data_source;UID=uid;PWD=password;DRIVER=Oracle in OraDb10g_home1").

connect()-> odbc:开始(), 尝试 odbc:connect(?CONNECT_STRING,?CONNECT_OPTIONS) 的 {ok,ConnObject} -> {true,ConnObject}; 任何 -> {错误,任何} 抓住 E:E2 -> {异常,{E,E2}} 结束。
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 来保存连接对象,以便其他处理保持与它通信。只要您在机器上成功设置了已安装 Oracle DB 或客户端的数据源名称,那么此模块将为您提供帮助,否则大多数挑战都在于设置 ODBC 连接。

=== Linux ===
对于 Linux,我想您需要获得像 Easy Soft ODBC DriversUnixODBC 这样的 odbc 库。然后尝试像我们在上面的 windows 中那样设置它,然后使用我上面提供的 Erlang 模块。它应该仍然有效。恐怕我总是从 Windows 而不是 Linux 连接到 oracle,因为在设置和配置 ODBC 库方面存在许多挑战(试一试,您可能会成功设置 Unix ODBC 或 Easy Soft ODBC 库),否则, Erlang部分整理出来了。

【讨论】:

    猜你喜欢
    • 2021-05-27
    • 2015-11-17
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 2021-03-02
    相关资源
    最近更新 更多