針對 Oracle E-Business Suite 配接器的作業問題進行疑難排解
本節討論如何使用疑難排解技術來解決您在使用 Microsoft BizTalk Adapter for Oracle E-Business Suite 時可能會遇到的作業錯誤。
啟用追蹤
如需 Oracle E-Business 配接器中追蹤支援的詳細資訊,請參閱 Oracle E-Business Suite 配接器中的診斷追蹤和訊息記錄。
已知問題
以下是使用 BizTalk 配接器套件時可能會遇到的最常見錯誤,以及其可能的原因和解決方式。
載入配接器系結時發生錯誤
問題
當您嘗試啟動 [新增配接器服務參考 Visual Studio 外掛程式] 或 [取用配接器服務 BizTalk 專案增益集] 時,您會收到下列錯誤:
There was an error loading the binding, <binding name>, from your system configuration.
ConfigurationErrorsException: Exception has been thrown by the target of an invocation.
原因
當您嘗試啟動 [新增配接器服務參考外掛程式] 或 [取用配接器服務增益集] 時,WCF 會載入所有已安裝介面卡的配接器系結。 接著,配接器系結相依于企業應用程式的特定用戶端軟體。 您可能會因為下列其中一個或兩個原因而遇到此問題:
您安裝介面卡的電腦上未安裝必要的 LOB 用戶端軟體。
您執行了一般或完整的配接器安裝,它會安裝 BizTalk 配接器套件中包含的所有介面卡。 不過,只有一個企業應用程式可能會安裝 LOB 用戶端程式庫。 因此,GUI 無法載入其他配接器的系結。
解決方法
請確定您在安裝 BizTalk 配接器套件的電腦上安裝必要的 LOB 用戶端版本。 如需支援用戶端版本的相關資訊,請參閱安裝磁片磁碟機 > :\Program Files\Microsoft BizTalk 配接器套件提供的 < 安裝指南。
請確定您執行介面卡的自訂安裝,只安裝您需要的介面卡。
Oracle E-Business Suite 配接器不會顯示在 BizTalk Server 管理主控台的介面卡清單中
問題
不同于隨附于 BizTalk Server 的舊版介面卡,BizTalk 配接器套件隨附的 Oracle E-Business 配接器不會顯示在 BizTalk Server 管理主控台的配接器清單中。
原因
最新的 Oracle E-Business 配接器是 WCF 自訂系結。 因此,雖然BizTalk Server管理主控台會顯示 WCF-Custom 介面卡,但它不會顯示 WCF 自訂系結,因此不會顯示 WCF 型 Oracle E-Business 配接器。
解決方法
您可以依照將 Oracle E-Business Suite 配接器新增至 BizTalk Server BizTalk Server 管理主控台中所述的步驟,明確地將Oracle E-Business Adapter 新增至BizTalk Server管理主控台。
在 Oracle E-Business Suite 上執行作業時發生錯誤
問題
配接器在使用 BizTalk Server 在 Oracle E-Business Suite 上執行任何作業時,會提供下列錯誤。
針對 BizTalk Server
System.ArgumentNullException: Value cannot be null.
原因
未指定訊息的 WCF 動作。 WCF 需要為每個作業指定 SOAP 動作,以通知配接器有關在 LOB 應用程式上執行的作業。
解決方法
在傳送埠中指定 SOAP 動作,或在 BizTalk 協調流程中指定為訊息內容屬性。 如需指示,請參閱 設定 Oracle E-Business Suite 的 SOAP 動作。 請參閱 Oracle EBS 配接器的訊息和訊息架構 ,以查看每個作業的動作清單。
在接收位置卸載要求訊息時,BizTalk 程式可能會因為 Oracle 用戶端版本不正確而損毀
問題
在 BizTalk 協調流程中定義的接收位置卸載要求訊息之後,協調流程會取用訊息和 BizTalk 主機 (BTSNTSvc.exe) 當機並重新啟動。
原因
安裝 Oracle 用戶端會將參考新增至 PATH 變數中最新的用戶端元件。 此外,Oracle 用戶端元件最近安裝的參考位於現有用戶端元件的參考之前。 因此,如果最新的 Oracle 用戶端安裝不是支援的用戶端版本,BizTalk 主機會當機,然後重新開機。
例如,假設電腦上已安裝支援的 Oracle 用戶端 11.1.0.7,且 PATH 變數具有下列參考:
C:\oracle\product\11.1.0\client_1\bin;
如果相同電腦上安裝不支援的 Oracle 用戶端,例如 10.2.0.3,PATH 變數將具有下列參考:
C:\oracle\product\10.2.0\db_2\bin;C:\oracle\product\11.1.0\client_1\bin;
請注意,不支援的用戶端版本會在支援的版本之前參考,因此 BizTalk 主機損毀。 如果有多個 BizTalk 主機正在執行,則裝載介面卡的主機會當機。
解決方法
如果在同一部電腦上安裝多個 Oracle 用戶端,請確定在 PATH 變數中的其他 Oracle 用戶端版本之前參考支援的 Oracle 用戶端版本。 例如,如果支援的 Oracle 用戶端版本是 11.1.0.7,PATH 變數中的參考必須如下所示:
C:\oracle\product\11.1.0\client_1\bin;C:\oracle\product\10.2.0\db_2\bin;
配接器在執行作業時可能會擲回溢位例外狀況
問題
如果您使用配接器,如果您嘗試在 DataSet 或弱型別 REF CURSORS 內執行包含 Oracle 數值資料類型的作業,配接器可能會擲回溢位例外狀況。
原因
如果您為 DataSets 內的 Oracle 數值資料類型提供大型值,或無法放入個別 .NET 類型的弱式 REF CURSORS,就會發生這種情況。
解決方法
如果您想要在 DataSets 或弱型別 REF CURSORS 內傳遞 Oracle 數值資料類型的大型值,您必須將 EnableSafeTyping 系結屬性的值設定為 true,以啟用安全輸入。 啟用安全輸入會將 DataSet 內的 Oracle 數值資料類型或弱型別 REF CURSORS 公開為字串。
配接器在執行 ExecuteScalar 運算時,可能會擲回算術溢位例外狀況
問題
如果您使用配接器,如果您嘗試在擷取大量數位的 ExecuteScalar 作業中執行 SELECT 語句,配接器會擲回下列例外狀況:「System.OverflowException:算數運算導致溢位」。
原因
這是因為 ODP.NET 中 ExecuteScalar 作業的已知限制所造成。 ODP.NET 嘗試將資料放入 .NET Decimal 資料類型,而且如果結果太大而無法容納 .NET Decimal 類型,則會擲回例外狀況。
解決方法
在 ExecuteScalar 作業的 SELECT 語句中使用 TO_CHAR () ,將傳回的資料轉換成字串。
配接器用戶端在執行作業時可能會擲回下列例外狀況:「無法擷取使用者識別碼、責任識別碼、應用程式識別碼。檢查是否已傳入正確的值。」
問題
如果您在 Oracle E-Business Suite 成品上執行作業, (介面資料表、介面檢視、並行程式和要求集) ,配接器用戶端可能會擲回此例外狀況。
原因
如果您在介面資料表、介面檢視、並行程式和要求集上執行作業時,提供 Oracle 使用者名稱、密碼和責任名稱的不正確組合,就會發生這種情況。 Oracle E-Business 配接器需要這些值,才能設定這些成品的應用程式內容。 如需設定應用程式內容的詳細資訊,請參閱 設定應用程式內容。
解決方法
您必須指定 Oracle 使用者名稱、密碼和責任的正確組合,才能適當地設定 Oracle E-Business Suite 成品的應用程式內容。 若要指定 Oracle 使用者名稱和密碼的值,您必須使用 OracleUserName 和 OraclePassword 系結 屬性。 若要指定 Oracle 責任的值,您可以使用 OracleEBSResponsibilityName 系結屬性或訊息內容屬性。
BizTalk 專案中的 RootNode TypeName 錯誤
問題
在 Visual Studio 的 BizTalk 專案中,如果從取用配接器服務增益集產生的架構包含 RootNode TypeName 屬性的無效字元或保留字,編譯專案時會發生下列錯誤:
Node <node reference> - Specify a valid .NET type name for this root node.
The current .NET type name of this root node is invalid (it is a reserved BizTalk Keyword or is an invalid C# identifier).
解決方法
以滑鼠右鍵按一下錯誤中所參考的 rood 節點,然後選取 [ 屬性]。
針對 RootNode TypeName 屬性,請移除任何不合法的字元或保留字,例如點 (.) 。
在 Visual Studio 中使用配接器時不正確系結警告
問題
當您使用配接器在 Visual Studio 2013 中建立應用程式,並開啟配接器所產生的組態檔 (app.config) 時,您會看到類似下列的警告:
The element 'bindings' has invalid child element 'oracleEBSBinding'. List of possible elements expected: 'basicHttpBinding, customBinding, ...
原因
此警告隨即出現,因為 Oracle E-Business 配接器系結 oracleEBSBinding
不是隨附于 Windows Communication Foundation (WCF) 的標準系結。
解決方法
您可以放心地忽略此警告。
如果您在同一個應用程式中使用多個通知架構,或使用相同主機上多個應用程式的通知架構,BizTalk Server會擲回例外狀況
問題
BizTalk Server擲回 XLANG 例外狀況或例外狀況,指出應用程式找不到檔規格,因為多個架構符合訊息類型。
原因
這是因為下列其中一項所發生:
您已在BizTalk Server專案中產生多個通知架構、將其部署至BizTalk Server應用程式,然後執行應用程式以接收來自 Oracle 資料庫的通知。 因為通知架構很常見,所以部署在BizTalk Server應用程式中的架構之間發生衝突。
如果是多個專案,您已為每個BizTalk Server專案產生通知架構、將每個專案部署到相同主機上的個別BizTalk Server應用程式,然後執行應用程式或應用程式以接收來自 Oracle 資料庫的通知。 由於架構和元件可在BizTalk Server的應用程式之間存取,因此在各種BizTalk Server應用程式和元件下部署的通用架構之間發生衝突。
解決方法
針對BizTalk Server應用程式使用單一通知架構檔案。 如果您需要在相同主機上的多個BizTalk Server應用程式中使用通知架構,請建立包含單一通知架構的應用程式,然後使用BizTalk Server中所有其他應用程式的通知架構。
在 Visual Studio 中流覽 Oracle E-Business Suite 成品時發生逾時例外狀況
問題
使用 [新增配接器中繼資料精靈]、[新增配接器服務參考外掛程式] 或 [取用配接器服務增益集] 流覽 Visual Studio 專案中的 Oracle E-Business Suite 成品時,您可能會遇到逾時例外狀況。
原因
如果裝載 Oracle E-Business Suite 的伺服器速度很慢、伺服器位於遠端位置,或您正在查看的架構有大量的成品,就可能發生此情況。
解決方法
您可以選擇增加 SendTimeout 系結屬性的值,或在 [ 在類別中搜尋 ] 文字方塊中提供搜尋運算式,以減少配接器擷取的成品數目。
如需指定系結屬性的詳細資訊,請參閱 設定 Oracle E-Business Suite 的系結屬性。 如需在 Oracle E-Business Suite 中搜尋成品的詳細資訊,請參閱 流覽、搜尋及取得 Oracle E-Business Suite 作業的中繼資料。
在交易輸入作業中使用配接器時,記憶體使用量和執行緒計數會增加
問題
在交易的輸入作業中,例如輪 詢,如果資料表中沒有可用的資料 ,而且配接器會繼續輪詢,在一段時間內,您遇到記憶體使用量和執行緒計數增加的一段時間。
原因
如果資料表中沒有任何資料可供輪詢,在每次接收逾時週期之後,Windows Communication Foundation (WCF) 繁衍新的執行緒以繼續輪詢作業。 因此,執行緒計數和記憶體使用量會在一段時間內增加。 不過,如果輪詢的資料表有一些資料,則相同的執行緒會繼續執行所有後續的輪詢。
解決方法
我們建議將 ReceiveTimeout 設定為可能的最大值,也就是 24.20:31:23.6470000 (24 天) ,讓新的執行緒只會每隔 24 天繁衍一次。 這可確保記憶體使用量和執行緒計數不會太快成長。
如需 ReceiveTimeout 系結屬性的詳細資訊,請參閱 閱讀 BizTalk Adapter for Oracle E-Business Suite 系結屬性。 如需指定系結屬性的指示,請參閱 設定 Oracle E-Business Suite 的系結屬性。
注意
搭配BizTalk Server使用配接器時,將逾時設定為大值並不會影響配接器的功能。