建立 Oracle 資料庫連線 URI
Microsoft BizTalk Adapter for Oracle Database 連接 URI 包含配接器用來建立 Oracle 資料庫連線的屬性。 本主題提供有關如何使用 tnsnames.ora 和不使用 tnsnames.ora 指定連線 URI 以連線到 Oracle 資料庫的相關資訊。 它也提供使用連線 URI 連線到 Oracle 資料庫的相關資訊。
使用 tnsnames.ora 連線到 Oracle 資料庫的連線 URI
重要
- 針對此方法,您必須在已安裝配接器用戶端的電腦上,于 tnsnames.ora 檔案中新增 net 服務名稱專案。 如需 net 服務名稱專案的詳細資訊,請參閱 設定 Oracle Database 配接器的 Oracle 用戶端。
- 由於 Oracle 用戶端的限制,如果您在交易中執行作業, DataSourceName 參數 (連線 URI 中的 net 服務名稱) 不能包含超過 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 中指定使用者名稱和密碼。 [BizTalk Server系結] 索引標籤中無法使用AcceptCredentialsInUri系結屬性。注意 Oracle Database 配接器會保留您在 Oracle 資料庫上開啟連接時,針對使用者名稱輸入的值大小寫。 Oracle 資料庫上的使用者名稱會區分大小寫。 您應該確定在 Oracle 資料庫預期的案例中,將 Oracle 使用者名稱提供給 Oracle Database 配接器。 一般而言,這表示 SCOTT/TIGER 認證中的使用者名稱應該是大寫:「SCOTT」。 |
[PASSWORD] | userauthparams | 要用於 Oracle 資料庫驗證的密碼,例如 TIGER 。 您必須將 AcceptCredentialsInUri 系結屬性設定為 true ,才能在連線 URI 中指定使用者名稱和密碼。 [BizTalk Server系結] 索引標籤中無法使用AcceptCredentialsInUri系結屬性。注意 Oracle Database 配接器會保留您在 Oracle 資料庫上開啟連接時為密碼輸入的值大小寫。 若為 10g 及更早版本,則 Oracle 系統上的密碼不區分大小寫。 |
[NET_SERVICE_NAME] | hostinfoparams | 在安裝 Oracle 資料庫配接器之電腦上的 tnsnames.ora 檔案中指定的 net 服務名稱。 如需 net 服務名稱和 tnsnames.ora 的詳細資訊,請參閱 設定 Oracle Database 配接器的 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 中指定使用者名稱和密碼。 [BizTalk Server系結] 索引標籤中無法使用AcceptCredentialsInUri系結屬性。 注意 Oracle Database 配接器會保留您在 Oracle 資料庫上開啟連接時,針對使用者名稱輸入的值大小寫。 Oracle 資料庫上的使用者名稱會區分大小寫。 您應該確定在 Oracle 資料庫預期的案例中,將 Oracle 使用者名稱提供給 Oracle Database 配接器。 一般而言,這表示 SCOTT/TIGER 認證中的使用者名稱應該是大寫:「SCOTT」。 |
[PASSWORD] | userauthparams | 要用於 Oracle 資料庫驗證的密碼;例如 TIGER。 您必須將 AcceptCredentialsInUri 系結屬性設定為 true ,才能在連線 URI 中指定使用者名稱和密碼。 [BizTalk Server系結] 索引標籤中無法使用AcceptCredentialsInUri系結屬性。 注意 Oracle Database 配接器會保留您在 Oracle 資料庫上開啟連接時為密碼輸入的值大小寫。 若為 10g 及更早版本,則 Oracle 系統上的密碼不區分大小寫。 |
[SERVER_ADDRESS] | hostinfoparams | 執行 Oracle 資料庫之伺服器的名稱或 IP 位址。 如果您使用這種類型的連線,這是必要專案。 |
[PORT_NUMBER] | hostinfoparams | Oracle Net Listener 埠。 如果未指定任何值,配接器會採用預設值 1521。 |
[SERVICE_NAME] | hostinfoparams | Oracle 資料庫服務名稱。 如果您使用這種類型的連線,這是必要專案。 |
[SERVICE_TYPE] | hostinfoparams | Oracle 服務的型別。 可能的值為 Dedicated 或 Shared。 專用服務會使用專用伺服器進程來僅提供一個使用者進程。 共用服務會使用可為多個使用者進程提供服務的共用伺服器進程。 預設值是 [專用]。 |
[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,且連接參數包含保留字元,則必須使用適當的逸出字元來指定連接參數。
如果您在 BizTalk Server 管理主控台中建立傳送或接收埠時指定 URI,且連線參數包含保留字元,則必須使用適當的逸出字元來指定連接參數。
使用連線 URI 連接到 Oracle 資料庫
以下是 Oracle 資料庫配接器的連線 URI 範例。
使用 tnsnames.ora | 不使用 tnsnames.ora |
---|---|
oracledb://ADAPTER 在此範例中,ADAPTER 是與 tnsnames.ora 中目標 Oracle 資料庫的 SERVICE NAME 和連線資訊相關聯的 Net 服務名稱。 |
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 資料庫連線的相關資訊:
使用取用配接器服務 BizTalk 專案增益集或新增配接器服務參考 Visual Studio 外掛程式,請參閱 使用取用配接器服務連接到 Visual Studio 中的 Oracle 資料庫。
在BizTalk Server解決方案中設定傳送埠或接收埠 (位置) ,請參閱手動設定實體埠系結至 Oracle 資料庫配接器。
在程式設計解決方案中使用 WCF 通道模型,請參閱 使用 Oracle Database 建立通道。
在程式設計解決方案中使用 WCF 服務模型,請參閱 設定 Oracle 資料庫的用戶端系結。
使用 WCF ServiceModel 中繼資料公用程式工具 (svcutil.exe) ,請參閱 搭配 BizTalk Adapter for Oracle Database 使用 ServiceModel 中繼資料公用程式工具。