如何使用Azure Functions连接到本地Oracle-db?

时间:2019-05-27 09:00:14

标签: oracle azure azure-functions azure-hybrid-connections

我正在尝试创建一个Azure功能来连接和查询本地Oracle-DB。我看不到在服务器上安装了Oracle Client或ODBC驱动程序来处理此问题。

使用JS或Python是否有解决方案?

我尝试使用node-odbc驱动程序,但是服务器缺少Oracle客户端。

3 个答案:

答案 0 :(得分:1)

使用 Linux 基础映像创建代码并将其作为自定义 Docker 容器部署到 Azure Functions。在自定义映像中安装 Oracle 客户端库。查看我关于该主题的博客: https://www.ravitella.com/azure-function-container/

答案 1 :(得分:0)

从Azure Functions连接到本地服务(例如Oracle-db)的部分答案,已有一个现成的SO线程How to Azure function configure for Site-to-Site Connectivity?已回答它,您可以参考。因此,首先,您必须确保对本地服务器的网络访问可用。

然后,如果要通过odbc查询oracle数据库,则必须在客户端上安装oracle odbc驱动程序。但是,oracle odbc驱动程序是一个商业组件,您需要付费才能获取它,并将其手动安装在Azure Functions中。因此,即使您想使用JS或Python进行连接,我也认为将Java与Oracle jdbc驱动程序配合使用是Azure Functions更好的解决方案,用于连接Oracle DB,以避免进行额外的安装。

我认为的另一种方法是在本地服务器上部署REST API应用程序作为代理,以使用JS或Python处理来自Azure Functions的查询请求,以帮助连接Oracle DB。

答案 2 :(得分:0)

您将需要建立混合连接。参见https://docs.microsoft.com/en-us/azure/app-service/app-service-hybrid-connections

然后,您可以参考此线程来建立上下文:

https://social.msdn.microsoft.com/Forums/en-US/2434fe10-3219-4625-bdbf-b9e96421230b/entity-framework-with-oracle-and-sql

对于nodejs解决方案,我将添加NPM并使用Kudu使用node-oracledb安装它: https://oracle.github.io/node-oracledb/doc/api.html#getstarted

// myscript.js //此示例使用Node 8的async / await语法。

var oracledb = require('oracledb');

var mypw = ...  // set mypw to the hr schema password

async function run() {

  let connection;

  try {
    connection = await oracledb.getConnection(  {
      user          : "hr",
      password      : mypw,
      connectString : "localhost/XEPDB1"
    });

    let result = await connection.execute(
      `SELECT manager_id, department_id, department_name
       FROM departments
       WHERE manager_id = :id`,
      [103],  // bind value for :id
    );
    console.log(result.rows);

  } catch (err) {
    console.error(err);
  } finally {
    if (connection) {
      try {
        await connection.close();
      } catch (err) {
        console.error(err);
      }
    }
  }
}

run();

示例代码