多站点更新(也称为分布式工作单元 (DUOW) 和两阶段落实)是一种功能, 它使应用程序能够更新多个远程数据库服务器中的数据,并保证数据的完整性。 例如,涉及将资金从一个帐户转移到其他数据库服务器中的另一个帐户的银行事务。
在这样的事务中,实现一个帐户上的借款操作的更新不会得到落实, 除非还落实了处理另一帐户的贷款所必需的更新,这一点是很重要的。 多站点更新考虑事项适用于当表示这些帐户的数据由两个不同的数据库服务器管理时的情况。
DB2 产品对多站点更新提供了全面的支持。 此支持可用于使用常规 SQL 开发的应用程序以及 使用事务监控程序(TP 监控程序 )产品(这些产品实行 X/Open XA 接口规范)的应用程序。 这样的 TP 监控程序产品的示例包括 IBM TxSeries(CICS 和 Encina)、 IBM Message 和 Queuing 系列、IBM Component Broker 系列、 IBM San Francisco Project 以及 Microsoft Transaction Server (MTS)、BEA Tuxedo 和其他几个产品。 安装需求是不同的, 这取决于是使用本机 SQL 多站点更新,还是使用 TP 监控程序多站点更新。
本机 SQL 和 TP 监控程序多站点更新程序都必须使用 CONNECT 2 SYNCPOINT TWOPHASE 选项来进行预编译。二者都可以使用 SQL Connect 语句来指示想要哪个数据库用于随后的 SQL 语句。 若没有任何 TP 监控程序告诉 DB2 它将协调事务 (如从 TP 监控程序接收 xa_open 调用以建立数据库连接的 DB2 所指示的), 则将使用 DB2 软件来协调该事务。
当使用 TP 监控程序多站点更新时,应用程序必须通过使用 TP 监控程序的 API 来请求落实或回滚,例如,CICS SYNCPOINT, Encina Abort(), MTS SetAbort()。
当使用本机 SQL 多站点更新时, 必须使用正常的 SQL COMMIT 和 ROLLBACK。
TP 监控程序多站点更新可以协调存取 DB2 和非 DB2 资源管理器(例如 Oracle、Informix 或 SQL Server)的事务。 本机 SQL 多站点更新仅适用于 DB2 服务器。
要使多站点更新事务起作用,参与分布式事务的每个数据库 都必须能够支持分布式工作单元。目前, 下列 DB2 服务器提供了 DUOW 支持,使得这些服务器能够参与分布式事务:
一个分布式事务可以更新受支持的数据库服务器的任意组合。 例如,应用程序可以更新 Windows NT 或 Windows 2000 上 的“DB2 通用数据库”中的几个表、“DB2 OS/390 版”数据库, 以及 DB2/400 数据库,这些数据库都在单个事务内。
主机和 AS/400 数据库服务器要求 DB2 Connect 参与起源于 PC、 UNIX 和 Web 应用程序的分布式事务。另外, 涉及到主机和 AS/400 数据库服务器的许多多站点更新情形都要求配置“同步点管理程序”(SPM) 部件。 当创建 DB2 实例时,将以缺省设置来自动配置 DB2 SPM。
是否需要 SPM,这取决于协议的选择(SNA 或 TCP/IP)以及 TP 监控程序的使用。
下表提供了需要使用 SPM 的方案的摘要。
该表还显示无论是从 Intel 机器还是从 UNIX 机器来存取主机或 AS/400,
都需要 DB2 Connect。另外,
对于多站点更新,若访问是通过 SNA 来进行的或使用 TP 监控程序,
则 DB2 Connect 的 SPM 部件也是必需的。
表 1. 需要 SPM 的主机和 AS/400 多站点更新方案
使用 TP 监控程序吗? | 协议 | 需要 SPM 吗? | 必需的产品(选择一个) | 支持的主机和 AS/400 数据库 | ||
---|---|---|---|---|---|---|
是 | TCP/IP | 是 |
|
| ||
是 | SNA | 是 |
|
| ||
否 | TCP/IP | 否 |
|
| ||
否 | SNA | 是 |
|
|
注意: | 一个分布式事务可以更新受支持的数据库服务器的任意组合。
例如,应用程序可以更新 Windows NT 上的 DB2 UDB 中的几个表、
“DB2 OS/390 版”数据库和 DB2/400 数据库,这些数据库都在单个事务内。
有关两阶段落实的详情, 以及对几个常见 TP 监控程序进行设置的指导,参考管理指南。 还可以在万维网 (WWW) 上存取“DB2 产品和服务技术库”:
|
尽管 DRDA 定义了数据库通信协议,但它没有定义程序设计界面或 API (程序员需要使用它们)。通常,应用程序可以使用 DRDA 来传送目标 DRDA 服务器可执行的任何请求。目前所有的 DRDA 服务器 都可执行由应用程序通过 DB2 Connect 转发的 SQL 请求。
IBM 为应用程序员提供生成对 Windows、OS/2 和几个 UNIX 平台的 SQL 请求的工具。这些工具是 DB2 应用程序开发客户机的一部分。DB2 应用程序开发客户机支持几种 API 类型:嵌入式 SQL、JDBC、 SQLJ 和 DB2 调用层接口 (DB2 CLI)。程序员可以使用这些 API 来构建各种程序设计语言的应用程序。 有关这些 API 的详情,参考应用程序构建指南。
应用程序开发人员还可以使用其他公司提供的 API。 例如,Windows 应用程序员使用 Microsoft ODBC 和 ADO 来开发数据库应用程序。 DB2 Connect 提供了 ODBC 驱动程序和 OLE DB Provider, 它们支持使用 ODBC 和 ADO API 开发的应用程序。 IBM 没有提供用来开发 ODBC 应用程序的工具; 这些工具是由 Microsoft 公司提供的。
可以使用“控制中心”来提供多站点更新。该过程很简单,在后面进行了概述。有关多站点更新配置过程的详情, 包括如何人工配置系统,参考联机的 Connectivity Supplement。
从“控制中心”,单击 [+] 号以展开树视图。 使用鼠标右键来选择希望配置的实例。一个弹出菜单打开。选择多站点更新 --> 配置菜单项。
“向导”提供了一个笔记本型界面。该向导的每一页 都将为您提示有关您的配置的某些信息。各页以您见到它们的次序显示在下面。
步骤 1. | 指定“事务处理程序”(TP) 监控程序。 此字段将显示 已启用的 TP 监控程序的缺省值。若不想使用 TP 监控程序, 则选择不要使用 TP 监控程序。 |
步骤 2. | 指定将要使用的通信协议。 |
步骤 3. | 指定“事务管理程序”数据库。 缺省情况下, 此屏面显示您连接的第一个数据库 (1ST_CONN)。可保留此缺省设置, 或选择另一编目的数据库。 |
步骤 4. | 指定更新所涉及的数据库服务器的类型,以及是否要独占使用 TCP/IP。 |
步骤 5. | 指定“同步点管理程序”设置。 仅当前一页上的设置指示需要在多站点更新情形中使用 DB2 的“同步点管理程序”时此页才出现。
|
步骤 1. | 用鼠标右按钮选择实例,并从弹出菜单中选择多站点更新 --> 测试菜单选项。 “测试多站点更新”窗口打开。 |
步骤 2. | 在可用数据库列表框中, 从可用的数据库中选择您想测试的数据库。 可以使用中间的箭头按钮将选项移至 已选择的数据库列表框或从中移出。 还可以通过在已选择的数据库列表框中直接编辑 所选择的用户 ID 和口令来更改它们。 |
步骤 3. | 当您完成选择时,单击窗口底部的确认。“多站点更新测试结果”窗口打开。 |
步骤 4. | “多站点更新测试结果”窗口显示所选择的数据库哪些更新测试成功, 哪些失败。该窗口将显示失败的数据库的 SQL 代码和错误信息。
|