共用方式為


使用 Oracle 資料庫配接器接收資料庫變更通知的考慮

本主題提供在使用 Oracle 資料庫配接器從 Oracle 資料庫接收資料庫通知時必須記住的一些考慮和最佳做法。

使用配接器接收通知時的考慮

使用 Oracle 資料庫配接器來接收查詢通知時,您必須考慮下列事項。

  • Oracle Database 配接器只會將它從 Oracle 資料庫接收的通知傳遞給配接器用戶端。 配接器不會區分不同作業的通知,亦即配接器沒有任何資訊,不論特定通知是針對插入作業還是更新作業。

  • 作業的通知訊息不會受到該作業所影響的記錄數目所影響。 例如,不論插入 Oracle 資料庫資料表中的記錄數目為何,配接器用戶端只會收到一則通知訊息。

  • 我們建議配接器用戶端應用程式包含邏輯,以解譯從 Oracle 資料庫收到的通知種類。 配接器用戶端應用程式可以藉由擷取所接收通知訊息之Info > 元素中 <的資訊來進行。 以下是針對插入作業收到的通知訊息範例。

    <?xml version="1.0" encoding="utf-8" ?>   
    <Notification xmlns="http://Microsoft.LobServices.OracleDB/2007/03/Notification/">  
      <Details>  
        <NotificationDetails>  
          <ResourceName>SCOTT.ACCOUNTACTIVITY</ResourceName>   
          <Info>1</Info>   
          <QueryId>0</QueryId>   
        </NotificationDetails>  
      </Details>  
      <Info>Insert</Info>   
      <ResourceNames>  
        <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">SCOTT.ACCOUNTACTIVITY</string>   
      </ResourceNames>  
      <Source>Data</Source>   
      <Type>Change</Type>   
    </Notification>  
    
    

    請注意Info > 元素中的 <值。 此值提供收到通知訊息之作業的相關資訊。 您的應用程式應該具有在Info > 元素內 <擷取值,然後根據值執行後續工作的功能。 處理通知訊息以完成 Oracle 資料庫中特定工作的主題有如何擷取Info > 元素內 <值的指示。

  • 在理想情況下,在用戶端應用程式收到通知之後,它應該更新已收到通知的記錄,讓後續的通知不會用於相同的記錄。 例如,請考慮具有已處理資料行的ACCOUNTACTIVITY資料表。 對於插入 ACCOUNTACTIVITY 資料表的所有新記錄, [已處理 ] 資料行中的值一律為 'n'。 例如,在插入作業之後, ACCOUNTACTIVITY 資料表中的記錄看起來會如下所示:

    帳戶交易識別碼 已處理
    10001 n

    若要取得新插入記錄的通知,配接器用戶端會將 NotificationStatement 系結屬性設定為:

    SELECT * FROM SCOTT.ACCOUNTACTIVITY WHERE PROCESSED = ‘n’  
    

    在收到通知之後,用戶端應用程式必須將 [已處理 ] 資料行的值設定為 'y',讓通知語句不會在已經收到通知的記錄上運作。 因此,若要達到此目的,用戶端應用程式必須在 ACCOUNTACTIVITY 資料表上執行更新作業。 更新作業之後, ACCOUNTACTIVITY 資料表中的相同記錄看起來會像下面這樣:

    帳戶交易識別碼 已處理
    10001 y

    有趣的是,更新作業會再次傳送通知給配接器用戶端,而整個程式將會再次重複。 因此,用戶端應用程式必須具有必要的邏輯,才能捨棄這類垃圾通知。

  • 如果 NotifyOnListenerStart 系結屬性為 true,配接器會在每次接收位置啟動時傳送通知給配接器用戶端。 如需如何使用系結屬性和解譯通知訊息的詳細資訊,請參閱 在接收位置分解之後接收 Oracle 資料庫變更通知

接收通知的典型協調流程

本節概述使用 Oracle 資料庫配接器接收通知的典型協調流程流程。

  1. 協調流程必須執行的第一件事是檢查收到的通知種類。 要檢查的專案如下:

    • 是否收到接收位置重新開機的通知。

    • 是否收到資料庫資料表上作業的通知,例如 Insert、Update 或 Delete。

      協調流程必須包含 運算式 圖形,而且在該 xpath 查詢中,才能決定收到何種訊息。

  2. 通知類型可用之後,協調流程必須包含決策區塊,才能根據收到的通知類型來執行特定動作。 若要達成此目的,協調流程必須包含 決定 圖形。 決定圖形是由規則區塊和Else區塊所組成。 在 規則 區塊中,您必須指定條件,然後包含協調流程圖形,以在符合條件時執行特定作業。 在 Else 區塊內,您必須包含協調流程圖形,才能在 不符合 條件時執行特定作業。

    上述建議詳述于處理通知訊息,以使用 BizTalk Server 完成 Oracle 資料庫中的特定工作

另請參閱

使用 BizTalk Server 接收 Oracle 資料庫變更通知