从 Azure 逻辑应用 中的工作流连接到 Oracle 数据库

适用范围:Azure 逻辑应用(消耗型 + 标准型)

当工作流需要使用 Oracle 数据时,请在 Azure 逻辑应用 中使用 Oracle Database 连接器连接到 Oracle 数据库。 可以访问本地或Azure虚拟机上托管的数据库。

Oracle 数据库连接器可帮助你解决常见的数据集成任务,例如:

  • 将客户记录添加到数据库。
  • 更新数据库中的订单记录。
  • 在工作流中获取、插入或删除表行。

对于标准工作流程,Oracle Database 内置连接器已公开预览。 该连接器与 Azure 逻辑应用 运行时同步运行,后者可提供比托管连接器更低的延迟和更高的吞吐量。 当运行时能够访问 Oracle 端点时,内置连接器就不需要本地数据网关。 Azure托管的工作流可以通过虚拟网络集成访问私有的Oracle端点,而采用混合部署模型的工作流则可以通过客户管理的基础设施访问Oracle数据库。

支持的 Oracle 数据库版本

下表列出了每个连接器支持的 Oracle DB 版本:

Connector 逻辑应用程序 支持的 Oracle DB 版本
管理 -消费
-标准
- Oracle 9 及更高版本
- Oracle 数据访问客户端 (ODAC) 11.2 及更高版本
内置(预览版) 标准 Oracle 数据库 11 及更高版本

连接器技术参考

Oracle 数据库连接器具有不同的版本,具体取决于 逻辑应用工作流类型和主机环境。

逻辑应用程序 环境 连接器版本
消费 多租户 Azure 逻辑应用 托管连接器,显示在“共享”筛选器下的连接器库中。

有关详细信息,请参阅 Oracle 数据库托管连接器参考。
标准 单租户Azure 逻辑应用、应用服务环境 v3(仅限Windows计划)和混合 托管连接器,该连接器显示在 “共享 筛选器”下的连接器库和内置连接器(公共预览版),该连接器显示在 内置 筛选器下的连接器库中。

内置版本依托 Azure 逻辑应用 运行时,在进程内运行,不需要本地数据网关,因为运行时可以通过网络访问 Oracle 终结点。

有关详细信息,请参阅:

- Oracle 数据库管理连接器参考
- 内置连接器参考

内置连接器操作(预览版)

内置连接器当前支持以下操作:

名字 参数 Description 退货
执行查询 (executeQuery) - 查询(query):需要string类型。 要运行的 SQL 查询。

- 查询参数(类型 queryParameters):可选。 要包括的查询参数。
运行 SQL 查询。 SQL 查询结果为 array.
执行存储过程 (executeStoredProcedure) - 存储过程名称 (storedProcedure):需要指定string类型。 要运行的存储过程的名称。

- 存储过程参数(storedProcedureParameters):可选,object 类型。 要包括的存储过程参数。
运行存储过程并返回结果集和输出参数。 - 结果集 (resultSets)类型为string 。 存储过程返回的结果集列表。

- 具有类型的outputParmaters (string)。 存储过程返回的输出参数值。
获取行 (getRows) - 表名称 (tableName):需要使用类型 string。 源表的名称。

- Where condition (columnValuesForWhereCondition):类型为object 的可选项。 标识要获取的行的列的键值对。

- 获取行的偏移量 (skipCount):类型为 string 时可选。 要跳过的条目数。 默认值为 0。

- 最大行数(maxcount):该功能可选,适用于string类型。 要获取的最大行数。 默认值为 0。

- 排序列(orderBy):可选,适用于 string 类型。 用于对查询结果进行排序的列名。

- 选择列(filterBy):string 类型为可选。 要从表或视图中获取的列值。
根据指定的条件获取一行或多行数据。 提取的行作为array形式。
获取表 (getTables) 仅返回当前用户拥有的表 (ownedTables):类型 string 为可选。 仅返回所有者为指定用户的表。 获取表的列表。 表格列表为 array。
插入行 (insertRow) - 表名称 (tableName):需要使用类型 string。 表的名称。

- 设置列 (setColumns):对于 object 类型可选。 行字段的值。
插入行。 插入的行类型为 object。

先决条件

托管的连接器先决条件(消费型和标准型)

  • 下载并安装本地数据网关。

    此网关的作用好似一架桥,提供本地数据与应用或客户端之间的安全数据传输。 可对多个服务和数据源使用相同的网关安装过程,这意味着网关可能只需要安装一次。

  • 将 Oracle 客户端与本地数据网关安装在同一计算机上。 否则,在尝试创建或使用连接时将会发生错误。

  • 为网关安装创建 Azure 网关资源。

内置连接器先决条件(标准、预览版)

  • 确保标准逻辑应用工作流可以访问 Oracle 终结点,包括任何主机、端口、DNS 解析和防火墙规则。

  • 创建 Oracle 数据库连接时,需要以下值:

    • Oracle 数据库服务器地址
    • 用户名
    • 密码

    对于服务器地址,请以以下格式之一指定此值:

    格式 Syntax Example
    简易连接 (非 SSL) < host>:<port>/<database-service-name> localhost:1522/XE
    透明网络基底(TNS)描述符(SSL):完整的 Oracle 数据源描述符 (description=(retry_count=<重试次数>)(retry_delay=<延迟时长>)(address=(protocol=tcps)(port=<端口号>)(host=<主机>)(connect_data=(service_name=<服务名称>))(security=(ssl_server_dn_match=yes)) (description=(retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=localhost))(connect_data=(service_name=XE))(security=(ssl_server_dn_match=yes)))
  • 对于此示例中使用的 获取行 操作,你需要知道要访问的表名。

    如果你不知道此信息,请联系 Oracle Database 管理员,或通过以下语句获取输出:select * from <table-name>。

已知问题和限制

当前连接器版本不支持触发器。 使用适合方案的任何触发器启动工作流,然后添加 Oracle 操作。

Connector Limitations
管理 - 具有复合键的表
- 具有嵌套对象类型的表
- 具有非标值的数据库函数
内置 - 无专用更新或删除操作。 对于更新和删除方案,请使用 执行查询 或 执行存储过程 操作。
- 某些连接问题可能仅在工作流运行时出现,而不是在创建连接时出现。
- 默认查询超时为30秒。 运行时间较长的操作仍受 工作流操作和函数主机超时设置 限制。
- Oracle 标识符可以区分大小写。 确保表、视图和列的名称与你模式中定义的标识符一致。

添加操作

添加和使用 Oracle 操作的步骤因是使用内置连接器还是托管连接器而异。

添加内置连接器操作(标准、预览版)

  1. 在 Azure portal 中,打开标准逻辑应用资源。

  2. 在设计器中,打开工作流。

  3. 按照 常规步骤 将所需的 Oracle 数据库 操作添加到工作流。

    此示例继续执行 “获取行 ”操作。

  4. 在连接信息面板中输入所需信息,例如你想要的连接名称、Oracle 数据库服务器地址、用户名和密码,例如:

    截图显示了 Azure 门户、标准工作流设计器以及用于“获取行”操作的 Oracle 数据库连接窗格。

  5. 完成后,选择“新建”。

  6. 在操作信息窗格中,输入所选操作所需的参数值。

    例如,如果选择 “获取行 ”操作,请输入表名称:

    屏幕截图显示 Azure 门户、标准工作流设计器和“获取行”操作,其中包含一个示例表名称。

  7. 添加完成工作流所需的任何其他操作。

  8. 保存工作流。 在设计器工具栏上选择“保存”。

添加一种托管连接器操作(消费型和标准型)

  1. 在 Azure 门户中,打开消耗或标准逻辑应用资源。

  2. 在设计器中,打开工作流。

  3. 按照 常规步骤 将所需的 Oracle 数据库 操作添加到工作流。

    此示例继续执行“获取行”操作。

  4. 在“连接信息”窗格中,输入所需的 连接信息。

  5. 对于网关属性,请选择要使用的 Azure 订阅和 Azure 网关资源。

  6. 完成连接后,从 “表名” 列表中选择一个表。

  7. 对于行 ID属性,输入您希望在表中使用的行 ID。

    在以下示例中,从“人力资源”数据库返回了作业数据:

    截图显示 Azure 门户、工作流设计器以及包含表名称和行 ID 的获取行操作。

  8. 添加完成工作流所需的任何其他操作。

  9. 保存工作流。 在设计器工具栏上选择“保存”。

排查 Oracle 数据库连接问题

内置连接器

当内置连接器操作失败时,请查看工作流程运行历史和诊断日志。 下表描述了常见的状态代码和故障排除步骤:

状态代码 原因和解决方法
401 身份验证失败。 核实用户名和密码、账户锁定状态以及密码过期政策。
404 请求的数据库对象没有被找到。 检查架构、表或视图名称(包括标识符的大小写),并确认用户具有访问该对象的权限。
429 Oracle 数据库达到了资源或会话的限制。 请审查Oracle会话限制和工作流并发设置。
502 运行时无法到达 Oracle 端点。 验证主机和端口连接、DNS解析、防火墙规则以及Oracle监听器的可用性。
504 操作超时了。检查查询复杂度和索引,检查查询和工作流程主机超时设置。

托管连接器

错误:无法访问网关

原因:本地数据网关无法连接到云。

缓解措施:请确保您的网关在您安装它的本地计算机上运行,并且具有互联网连接。 避免将网关安装在可能会关闭或进入睡眠状态的计算机上。 还可以尝试重新启动本地数据网关服务 (PBIEgwService)。

错误:要使用的提供程序已弃用:“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本”。 若要安装正式的提供程序,请参阅 https://go.microsoft.com/fwlink/p/?LinkID=272376。

原因:Oracle 客户端 SDK 未与正在运行的本地数据网关安装在同一计算机上。

解决方法:下载 Oracle 客户端 SDK 并将其与本地数据网关安装在同一计算机上。

错误:表“[表名]”未定义任何键列

原因:表没有主键。

解决方案:Oracle Database 连接器要求使用包含主键列的表。