本節提供多位置更新功能的概觀, 此功能適用於與主電腦和 AS/400 資料庫伺服器有關的實務範例。 它說明執行 PC、UNIX 和 Web 應用程式所需的產品和元件, 這些應用程式在相同異動中更新多重 DB2 資料庫。
多位置更新,亦稱為分散式工作單元 (DUOW) 和兩次處理保證, 這種功能可讓應用程式更新多重遠端資料庫伺服器中的資料,同時保證資料完整性。 銀行業務異動是一個很好的範例, 因為它從一個帳戶將金錢傳送到不同資料庫伺服器上的另一個帳戶,
在這種異動中,對某帳戶執行借款作業的更新不能被確定, 除非處理貸款給其它帳戶的更新也確定之後才能確定,這點很重要。 當代表這些帳戶的資料由兩個不同的資料庫伺服器管理時,適用多位置更新。
DB2 產品提供多位置更新的廣泛支援。 此支援可用於使用一般 SQL 發展的應用程式, 也可用於利用異動監督程式 (TP 監督程式) 產品來執行 X/Open XA 介面規格的應用程式。 這類 TP 監督程式產品的範例包括 IBM TxSeries (CICS 及 Encina)、 IBM Message and Queuing Series、IBM Component Broker Series、 IBM San Francisco Project,以及 Microsoft Transaction Server (MTS)、BEA Tuxedo 及其他等等。 其設定需求各異,根據使用原生 SQL 多位置更新或 TP 監督程式多位置更新而定。
原生 SQL 和 TP 監督程式多位置更新程式,兩者都必須經過使用 CONNECT 2 SYNCPOINT TWOPHASE 選項來前置編譯。兩者均可使用 SQL Connect 陳述式,指出要用於後面 SQL陳述式的是哪一個資料庫。 如果沒有 TP 監督程式告訴 DB2 要協調異動 (一如 DB2 所指示, 從 TP 監督程式接收 xa_open 呼叫來建立資料庫連接), 則將使用 DB2 軟體來協調異動。
使用 TP 監督程式多位置更新時,應用程式必須使用 TP 監督程式的 API, 例如,CICS SYNCPOINT、Encina Abort()、MTS SetAbort(), 來要求確定或回捲。
使用原生 SQL 多位置更新時, 必須使用一般的 SQL COMMIT 和 ROLLBACK。
TP 監督程式多位置更新可協調存取 DB2 和非 DB2 資源管理程式 (如 Oracle、Informix、SQLServer...等) 的異動。 原生 SQL 多位置更新僅能與 DB2 伺服器一起使用。
要使多位置更新異動能夠運作,每一個參與分散式異動的資料庫, 都必須能夠支援分散式工作單元。目前,下列 DB2 伺服器提供 DUOW 支援,使它們能夠參與分散式異動:
分散式異動可更新任何支援的資料庫伺服器組合。 例如,應用程式可在單一異動中,於 Windows NT 或 Windows 2000 上的 DB2 Universal Database、 DB2 for OS/390 資料庫和 DB2/400 資料庫中更新數個表格。