创建 Oracle 数据库连接 URI

适用于 Oracle 数据库的 Microsoft BizTalk 适配器连接 URI 包含适配器用来建立与 Oracle 数据库的连接的属性。 本主题介绍如何指定连接 URI 以使用 tnsnames.ora 和不使用 tnsnames.ora 连接到 Oracle 数据库。 它还提供有关使用连接 URI 连接到 Oracle 数据库的信息。

使用 tnsnames.ora 连接到 Oracle 数据库的连接 URI

重要

  • 对于此方法,必须在安装了适配器客户端的计算机上的 tnsnames.ora 文件中添加 net 服务名称条目。 有关 net 服务名称条目的详细信息,请参阅 为 Oracle 数据库适配器配置 Oracle 客户端
  • 由于 Oracle 客户端限制,如果在事务中执行操作,则连接 URI 中) (Net 服务名称 (DataSourceName 参数不能包含超过 39 个字符。 因此,如果要在事务中执行操作,请确保为 DataSourceName 参数指定的值小于或等于 39 个字符。

WCF 中典型的终结点地址 URI 表示为: scheme://userauthparams@hostinfoparams?query_string,其中:

  • scheme 是方案名称。
  • userauthparams 是终结点进行用户身份验证所需的参数的名称值集合。
  • hostinfoparams 是建立与主机的连接所需的信息;例如,路径。
  • query_string 是由问号 (?) 分隔的参数的可选名称值集合。

Oracle 数据库适配器连接 URI 遵循此基本格式,并按如下方式实现:

oracledb://[NET_SERVICE_NAME]?PollingId=[POLLING_ID]  

或者,在更高级的方案中:

oracledb://User=[USER_NAME];Password=[PASSWORD]@[NET_SERVICE_NAME]?PollingId=[POLLING_ID]  

下表说明了连接 URI 中包含的属性:

连接 URI 属性 类别 说明
[USER_NAME] userauthparams 用于对 Oracle 数据库进行身份验证的用户名,例如 SCOTT。 必须将 AcceptCredentialsInUri 绑定属性设置为 true ,才能在连接 URI 中指定用户名和密码。 AcceptCredentialsInUri 绑定属性在“BizTalk Server绑定”选项卡中不可用。

注意 Oracle 数据库适配器在 Oracle 数据库上打开连接时保留为用户名输入的值大小写。 Oracle 数据库上的用户名区分大小写。 在 Oracle 数据库预期的情况下,应确保向 Oracle 数据库适配器提供 Oracle 用户名。 通常,这意味着 SCOTT/TIGER 凭据中的用户名应为大写:“SCOTT”。
[PASSWORD] userauthparams 用于对 Oracle 数据库进行身份验证的密码,例如 TIGER。 必须将 AcceptCredentialsInUri 绑定属性设置为 true ,才能在连接 URI 中指定用户名和密码。 AcceptCredentialsInUri 绑定属性在“BizTalk Server绑定”选项卡中不可用。

注意 Oracle 数据库适配器会在 Oracle 数据库上打开连接时保留为密码输入的值大小写。 对于发行版 10g 和更早版本,Oracle 系统中的密码不区分大小写。
[NET_SERVICE_NAME] hostinfoparams 在安装了 Oracle 数据库适配器的计算机上的 tnsnames.ora 文件中指定的网络服务名称。 有关网络服务名称和 tnsnames.ora 的详细信息,请参阅 为 Oracle 数据库适配器配置 Oracle 客户端
[POLLING_ID] query_string 适配器应追加到 POLLINGSTMT 操作的标准命名空间的可选字符串。 这使你可以在项目包含多个轮询操作时为每个轮询操作指定唯一的命名空间。 如果项目仅包含一个 POLLINGSTMT 操作,则不必指定 PollingId 字符串。

注意

为 WCF 元数据 Exchange 客户端指定终结点地址时,连接 URI 中也会使用查询参数。

在不使用 tnsnames.ora 的情况下连接到 Oracle 数据库的连接 URI

重要

  • 对于此方法,tnsnames.ora 文件中的 net 服务名称或实际的 tnsnames.ora 文件本身不需要存在于客户端计算机上。
  • 如果在事务中执行操作,则不支持此连接模式。 这是由于 Oracle 客户端的限制。

WCF 中典型的终结点地址 URI 表示为: scheme://userauthparams@hostinfoparams?query_string,其中:

  • scheme 是方案名称。
  • userauthparams 是终结点进行用户身份验证所需的参数的名称值集合。
  • hostinfoparams 是建立与主机的连接所需的信息;例如,服务器名称、端口号等。
  • query_string 是由问号 (?) 分隔的参数的可选名称值集合。

Oracle 数据库适配器连接 URI 遵循此基本格式,并按如下方式实现:

oracledb://[SERVER_ADDRESS]:[PORT_NUMBER]/[SERVICE_NAME]/[SERVICE_TYPE]?PollingId=[POLLING_ID]  

或者,在更高级的方案中:

oracledb://User=[USER_NAME];Password=[PASSWORD]@[SERVER_ADDRESS]:[PORT_NUMBER]/[SERVICE_NAME]/[SERVICE_TYPE]?PollingId=[POLLING_ID]  

下表说明了连接 URI 中包含的属性:

连接 URI 属性 类别 说明
[USER_NAME] userauthparams 用于对 Oracle 数据库进行身份验证的用户名;例如 SCOTT。 必须将 AcceptCredentialsInUri 绑定属性设置为 true ,才能在连接 URI 中指定用户名和密码。 AcceptCredentialsInUri 绑定属性在“BizTalk Server绑定”选项卡中不可用。

注意 Oracle 数据库适配器在 Oracle 数据库上打开连接时保留为用户名输入的值大小写。 Oracle 数据库上的用户名区分大小写。 在 Oracle 数据库预期的情况下,应确保向 Oracle 数据库适配器提供 Oracle 用户名。 通常,这意味着 SCOTT/TIGER 凭据中的用户名应为大写:“SCOTT”。
[PASSWORD] userauthparams 用于对 Oracle 数据库进行身份验证的密码;例如 TIGER。 必须将 AcceptCredentialsInUri 绑定属性设置为 true ,才能在连接 URI 中指定用户名和密码。 AcceptCredentialsInUri 绑定属性在“BizTalk Server绑定”选项卡中不可用。

注意 Oracle 数据库适配器会在 Oracle 数据库上打开连接时保留为密码输入的值大小写。 对于发行版 10g 和更早版本,Oracle 系统中的密码不区分大小写。
[SERVER_ADDRESS] hostinfoparams 运行 Oracle 数据库的服务器的名称或 IP 地址。 如果使用此类型的连接,则这是必需的。
[PORT_NUMBER] hostinfoparams Oracle Net 侦听器端口。 如果未指定任何值,适配器将采用默认值 1521。
[SERVICE_NAME] hostinfoparams Oracle 数据库服务名称。 如果使用此类型的连接,则这是必需的。
[SERVICE_TYPE] hostinfoparams Oracle 服务的类型。 可能的值为 DedicatedShared。 专用服务使用专用服务器进程仅为一个用户进程提供服务。 共享服务使用可为多个用户进程提供服务的共享服务器进程。 默认值为“专用”
[POLLING_ID] query_string 适配器应追加到 POLLINGSTMT 操作的标准命名空间的可选字符串。 这样,便可以在项目包含多个轮询操作时为每个轮询操作指定唯一的命名空间。 如果项目仅包含一个 POLLINGSTMT 操作,则无需指定 PollingId 字符串。

注意

为 WCF 元数据 Exchange 客户端指定终结点地址时,连接 URI 中也会使用查询参数。

Oracle 数据库凭据和连接 URI

默认情况下,在连接 URI 中指定 Oracle 数据库凭据时,Oracle 数据库适配器将引发异常。 这是因为这些凭据在连接 URI 中表示为纯文本,这会带来安全风险。 可以设置 AcceptCredentialsInUri 绑定属性来控制连接 URI 是否可以包含 Oracle 数据库的凭据。 如果 AcceptCredentialsInUri 属性为 false,则连接 URI 包含 Oracle 数据库凭据时,Oracle 数据库适配器将引发异常;如果 属性为 true,则不引发异常。

在一些有限的情况下,需要在连接 URI 中指定凭据。 例如,在使用 WCF 服务模型或 WCF 通道模型时接收入站 POLLINGSTMT 操作。 但是,在大多数情况下,应避免在连接 URI 中提供凭据。 有关如何更安全地为 Oracle 数据库提供凭据的详细信息,请参阅 保护 Oracle 数据库应用程序

重要

由于将字符串中的凭据以纯文本形式传递会带来安全风险,应避免在连接 URI 中指定 Oracle 数据库连接凭据。

在连接 URI 中使用保留字符

Oracle 数据库适配器不支持为任何参数值指定具有特殊字符的连接 URI。 如果连接参数值包含特殊字符,请确保执行下列操作之一:

  • 如果要使用“添加适配器服务引用插件”或“使用适配器服务加载项”在 Visual Studio 中指定 URI,则必须在“ URI 属性 ”选项卡中按原样指定 URI,即不使用任何转义字符。 如果直接在 “配置 URI” 字段中指定 URI,并且连接参数包含保留字符,则必须使用正确的转义字符指定连接参数。

  • 如果在 BizTalk Server 管理控制台中创建发送或接收端口时指定 URI,并且连接参数包含保留字符,则必须使用正确的转义字符指定连接参数。

使用连接 URI 连接到 Oracle 数据库

下面是 Oracle 数据库适配器的连接 URI 的示例。

使用 tnsnames.ora 不使用 tnsnames.ora
oracledb://ADAPTER

在此示例中,ADAPTER 是一个与 tnsnames.ora 中目标 Oracle 数据库的服务名称和连接信息关联的网络服务名称。
oracledb://yourOracleServer:1521/yourOracleDatabaseServiceName/Dedicated

在此示例中,服务器名称为“yourOracleServer”,服务名称为“yourOracleDatabaseServiceName”。

下面是 POLLINGSTMT 操作的连接 URI 的示例。 此 URI 包含一个 PollingId 参数,用于修改 POLLINGSTMT 操作的命名空间。

使用 tnsnames.ora 不使用 tnsnames.ora
oracledb://ADAPTER?PollingId=MyPollingNotification1 oracledb://yourOracleServer:1521/yourOracleDatabaseServiceName/Dedicated? PollingId=MyPollingNotification1

对于上述连接 URI,Oracle 数据库适配器为 POLLINGSTMT 操作创建以下命名空间。

http://Microsoft.LobServices.OracleDB/2007/03/POLLINGSTMTMyPollingNotification1  

有关如何在以下情况下与 Oracle 数据库建立连接的信息:

另请参阅

创建与 Oracle 数据库的连接
为 Oracle 数据库适配器配置 Oracle 客户端