DB2:数据同步方面的经验

发表于:2007-07-13来源:作者:点击数: 标签:
规划方案: 假定您将使用一个生成报告的应用程序。此应用程序需要存在于SAMPLE 数据库 的DEPARTMENT表中的数据。您不想使用直接来自源表的数据,而想将更改复制到只能由生成报告的应用程序读取的目标表中。为了便于管理,您要将目标表与源表保存在同一机器上
规划方案: 
  假定您将使用一个生成报告的应用程序。此应用程序需要存在于 SAMPLE 数据库的 DEPARTMENT 表中的数据。您不想使用直接来自源表的数据,而想将更改复制到只能由生成报告的应用程序读取的目标表中。为了便于管理,您要将目标表与源表保存在同一机器上。也可以是已编目导本地机器的网络上的其它数据库。
  数据复制方案实施步骤:
   开始之前
  1. 首先确定在将要实施复制计划的机器上已经安装db2,已经建立实例。
  2. 确定您将要用户复制的源数据库和目标数据库,可以在同一台机器上,也可以是在网络上的数据库,需要编目到本地。
  3. 确定您对源数据库和目标数据库有存取权限。假定源数据库是sample库,目标数据库是copydb库。
  4. 在您的机器上建立copydb库。
   规划此方案
  1. 复制源
  您已经知道了复制源就是 sample数据库中的 schema .DEPARTMENT 表。在设置您的环境之前,必须决定想从该表中复制哪些内容;您决定注册所有列并预订所有列。
  2. 复制目标
  您决定想要复制目标是 copydb数据库,该数据库是在开始之前中创建的。目前,该数据库中没有任何目标表;您想让复制中心根据您的规范来创建目标表。这种自动生成目标表的方法是优先可取的,原因是它可以确保正确映射至复制源。还可以使用现有的目标表,但是,本方案假定目标表不存在。
  3. 复制选项
  出于本方案的目的,您决定将 CD 表、目标表和复制控制表分别存储在它们的缺省表空间中。尽管 SAMPLE 和 COPYDB 数据库存在于同一机器上,但是,它们的表空间却位于不同容器中。

 
  为此方案规划设置环境
  步骤1:为Capture程序创建控制表
  Capture 程序从复制控制表中读取当前的注册信息,并将它的状态存储在这些表中。将充当 Capture 控制服务器的任何数据库都必须包含 Capture 控制表。
  1. 打开复制中心,展开 SQL 复制 文件夹。
  2. 展开 定义 文件夹。
  3. 右键单击 Capture 控制服务器 文件夹并选择 创建 Capture 控制表 -> 快速 。或者,可通过选择 创建 Capture 控制表 -> 定制 来定制 Capture 控制表。
  4. 在“选择服务器”窗口中,选择 SAMPLE 数据库。此数据库将作为 Capture 控制服务器。单击 确定 。
  5. 在“创建控制表 - 快速 - 服务器信息”窗口中,选择 主管用于复制和捕获对那些源的更改的源 。然后,单击 下一步 。
  6. 在“创建控制表 - 快速 - 复制详细信息”窗口中,单击 下一步 。不需要更改此窗口中的任何信息。
  7. 在“创建控制表 - 快速 - 表空间”窗口中,输入 TSASNCA 表空间的表空间规范。例如,将缓冲池设置为 IBMDEFAULTBP。对于本方案,接受缺省 Capture 模式 - ASN。
  8. 在“创建控制表 - 快速 - 表空间”窗口中,输入 TSASNUOW 表空间的表空间规范。
  9. 在“创建控制表 - 快速 - 表空间”窗口中输入了这两个表空间的信息之后,单击 确定 。
  10. 单击“消息对话框”窗口上的 关闭 。此窗口显示生成将创建 Capture 控制表的 SQL 脚本的结果。如果产生了任何错误,这些错误就会显示在此窗口中。
  11. 在“立即运行或保存 SQL”窗口中输入有效的用户标识和密码,并单击 确定 以立即运行 SQL 脚本。
  12. 在“DB2 消息”窗口中应当看到一条消息指出已成功运行脚本。单击 关闭 。
  13. 展开 Capture 控制服务器 文件夹。SAMPLE 数据库应当显示在该文件夹中。
  步骤2:为复制启用数据库
  Capture 程序读取 DB2 日志,以获取包括对注册的表的更改的日志记录。日志必须是归档日志,以便在 Capture 程序可以读取日志之前,DB2 将不会再使用日志文件。对于 UNIX(R) 和 Windows 环境,DB2 缺省值是循环日志记录,因此,必须将此设置更改为归档日志记录。
  步骤3:注册复制源
  在创建了 Capture 控制表并为复制启用了数据库之后,将 DEPARTMENT 表注册为复制源。

注册步骤: 
  1.展开 SQL 复制 文件夹。
  2.展开 定义 文件夹。
  3.展开 Capture 控制服务器 文件夹。
  4.展开 SAMPLE 数据库。
  5.展开 Capture 模式 文件夹。
  6.展开 ASN 模式。
  7.右键单击 注册的表 文件夹并选择 注册表 。
  8.在“添加可注册的表”窗口中,单击 全部检索 以列示 SAMPLE 数据库中您可以注册为复制源的所有表。选择 DEPARTMENT 表并单击 确定 。
  9.在“注册表”窗口中,单击 CD 表 笔记本选项卡。指定有关 CD 表空间的下列信息:
  o 在 表空间的规范 区域中,单击 容器名 字段以指定 TSCDDEPARTMENT 表空间的容器名。
  o 在 表空间的规范 区域中,将 大小 字段更改为 1。
  o 在 表空间的规范 区域中,将 单位 字段更改为 MB。
  o 指定此新表空间的其它信息;例如,将缓冲池设置为 IBMDEFAULTBP。
  在输入了表空间信息之后,单击 确定 。
  10.单击“消息对话框”窗口上的 关闭 。 | 此窗口显示生成将注册源表的 SQL 脚本的结果 。如果产生了任何错误,这些错误就会显示在此窗口中。
  11.单击“立即运行或保存 SQL”窗口上的 确定 以立即运行 SQL 脚本。
  12.在“DB2 消息”窗口中应当看到一条消息指出已成功运行脚本。单击 关闭 。
  13.SAMPLE 数据库文件夹的内容窗格中现在应当将 DEPARTMENT 表显示为注册的表。
  步骤3:为Apply程序创建控制表
  Apply 程序从复制控制表中读取当前的预订集信息,并将它的状态存储在这些表中。将充当 Apply 控制服务器的任何数据库都必须包含 Apply 控制表。
  1.展开 SQL 复制 文件夹。
  2.展开 定义 文件夹。
  3.右键单击 Apply 控制服务器 文件夹并选择 创建 Apply 控制表 -> 快速 。或者,可通过选择 创建 Apply 控制表 -> 定制 来定制 Apply 控制表。
  4.在“选择服务器”窗口中,选择 COPYDB 数据库。此数据库将作为 Apply 控制服务器。单击 确定 。
  5.在“创建控制表 - 快速 - 服务器信息”窗口中,选择 应用已捕获的对目标表的更改 。然后,单击 下一步 。
  6在“创建控制表 - 快速 - 复制详细信息”窗口中,单击 下一步 。不需要更改此窗口中的任何信息。
  7.在“创建控制表 - 快速 - 表空间”窗口中,输入 TSASNAA 表空间的表空间规范。例如,将缓冲池设置为 IBMDEFAULTBP。单击 确定 。
  8.单击“消息对话框”窗口上的 关闭 。此窗口显示生成将创建 Apply 控制表的 SQL 脚本的结果。如果产生了任何错误,这些错误就会显示在此窗口中。
  8.在“立即运行或保存 SQL”窗口中输入有效的用户标识和密码,并单击 确定 以立即运行 SQL 脚本。
  9.在“DB2 消息”窗口中应当看到一条消息指出已成功运行脚本。单击 关闭 。
  10.展开 Apply 控制服务器 文件夹。COPYDB 数据库应当显示在该文件夹中。
  步骤5:创建预订集和预订集成员
  在注册源表之后,需要创建预订集。预订集将定义复制源数据库(在本方案中为 SAMPLE)与目标数据库(在本方案中为 COPYDB)之间的关系。预订集成员定义复制源表(在本方案中为 DEPARTMENT)与一个或多个目标表(本方案中只有一个目标表,它将称为 DEPTCOPY)之间的关系。
  制定预订集和预订集成员步骤:
  1.展开 SQL 复制 文件夹。
  2.展开 定义 文件夹。
  3.展开 Apply 控制服务器 文件夹。
  4.展开 COPYDB 数据库。
  A.右键单击 预订集 文件夹并选择 创建 。
  还可以通过选择 SAMPLE 数据库的 注册的表 文件夹,右键单击内容窗格中的 DEPARTMENT 表并选择 创建预订集 来创建预订集。
  B.在“创建预订集”窗口的“集信息”页中输入以下信息:
  a. 在 预订集名称 字段中输入 DEPTSUB。此字符串标识预订集,并且,对于特定的 Apply 限定符,此字符串必须是唯一的。
  b. 在 Apply 限定符 字段中输入 DEPTQUAL。此字符串标识对于将运行此预订集的 Apply 程序的实例来说是唯一的复制定义。

技巧: 
  Apply 限定符是区分大小写的。如果想要 Apply 限定符采用小写字符,则当您输入该限定符时必须对它进行定界;例如,"deptqual"。缺省情况下,如果您只是输入 deptqual,则复制中心将把该值转换为大写字符。
  c. 对 Capture 控制服务器别名 字段单击浏览按钮。在“选择 Capture 控制服务器”窗口中,选择 SAMPLE 数据库,并单击 确定 。
  d. 对 目标服务器别名 字段单击浏览按钮。在“选择目标服务器”窗口中,选择 COPYDB 数据库并单击 确定 。COPYDB 数据库既是目标服务器又是 Apply 控制服务器。
  e. 选择 激活预订集 复选框。
  7.在“创建预订集”窗口的“源到目标映射”页中输入以下信息:
  a.单击 添加 以将已注册的源添加至预订集成员。
  b.在“添加已注册的源”窗口中,单击 全部检索 以显示 SAMPLE 数据库中的所有已注册的源。
  c.在“添加已注册的源”窗口中,选择 DEPARTMENT 表,并单击 确定 。
  d.在“创建预订集”窗口的“源到目标映射”页中,将目标表的名称从 TGDEPARTMENT 更改为 TGDEPTCOPY:在预订集成员表的 目标名 列中选择 TGDEPARTMENT,并输入TGDEPARTCOPY以覆盖缺省名称。
  e.单击 更改 以打开“成员属性”窗口。从此窗口中,可以定义预订集成员的属性。
  8.在“成员属性”窗口的“目标表索引”页中:
  a. 从 目标中的可用列 列表中选择 DEPTNO 列。
  b. 单击移动按钮( > )来将 DEPTNO 列移至 在索引中使用的列 列表。
  c. 选择 使用选择的列来创建主键 来将 DEPTNO 列用作目标表的主键。
  9.在“成员属性”窗口的“行过滤”页中,在 WHERE 语句 字段中输入以下子句:
  DEPTNO >=’E00’
  此 WHERE 子句指示您只想复制满足某些条件的那些行;在本例中,就是只复制部门号大于或等于“E00”的那些行。此 WHERE 子句将导致目标表只包含三行,而不是包含所有九行.
     
  10.在“成员属性”窗口的“目标表表空间”页中,指定有关新的 TSTGDEPTCOPY 表空间的以下信息:
  o 在 表空间的规范 区域中,单击 容器名 字段以指定 TSTGDEPTCOPY 表空间的容器名。
  o 在 表空间的规范 区域中,将 大小 字段更改为 1。
  o 在 表空间的规范 区域中,将 单位 字段更改为 MB。
  o 指定此新表空间的其它信息;例如,将缓冲池设置为 IBMDEFAULTBP。
  还可以指定此新表空间的其它信息;例如,将缓冲池设置为 IBMDEFAULTBP。
  11.单击 确定 以关闭“成员属性”窗口。对于此方案,不需要对 目标装入选项 选项卡执行任何操作。
  12.在“创建预订集”窗口的“调度”页中,将分钟数更改为 1,以便 Apply 程序每隔一分钟就要处理此预订集一次。使用 复制频率 区域中的 分钟数 字段上的旋钮来选择 1 分钟的时间间隔(或者在该字段中输入 1)。
  保留 起始日期 、 起始时间 、 基于时间 和 使用相对定时 的缺省值。
  13.在“创建预订集”窗口的“语句”页中,单击 添加 以打开“添加 SQL 语句或过程调用”窗口。使用此窗口来定义将在运行预订集时处理的 SQL 语句。在“添加 SQL 语句或过程调用”窗口中输入以下信息:
  a.在 SQL 语句 字段中输入:
  DELETE FROM ASN.IBMSNAP_APPLYTRAIL WHERE LASTRUN
  < (CURRENT TIMESTAMP - 7 DAYS)
  此语句将删除 Apply 跟踪表中 7 天之前的任何记录。
  Apply 程序将执行在处理预订集之后在目标服务器中添加的 SQL 语句。SQL 语句必须在目标服务器中运行,这是因为 Apply 控制服务器与目标服务器是驻留在同一位置的,并且 Apply 跟踪表在 Apply 控制服务器中。
  技巧:
  Apply 程序运行您在每个预订周期中添加至预订集的 SQL 语句或过程。此示例效率比较低,这是因为 Apply 程序每一分钟都将执行此语句,尽管该语句每 24 个小时最多只删除 APPLYTRAIL 表中的数据一次。
  b.在 SQLSTATE 字段中,输入 02000,并单击 添加 。此 SQL 状态指示“找不到行”错误是可以接受的,并且 Apply 程序应当忽略这些错误。
  技巧:
  对于此预订集,最多可以定义想要 Apply 程序忽略的十种 SQL 状态。
  c.单击“确定”以关闭“添加 SQL 语句或过程调用”窗口。
  14单击 确定 以关闭“创建预订集”窗口。
  15.单击“消息对话框”窗口上的 关闭 。此窗口显示生成将更新 Apply 控制表并创建目标表的 SQL 脚本的结果。如果产生了任何错误,这些错误就会显示在此窗口中。
  16.单击“立即运行或保存 SQL”窗口上的 确定 以立即运行 SQL 脚本。
  可以将 SQL 脚本保存到一个文件中以供将来使用,也可以立即运行它:
  a. 选择 保存至文件 。
  b. 在 保存规范 区域中填充一些信息,例如,文件名。
  c. 单击“应用”以保存该文件。如果脚本具有多个部分,而您未选择 将多个脚本保存到一个文件中 复选框,则将使用您指定的名称加上一个数字来将每一部分保存到一个独立的文件中。“立即运行或保存 SQL”窗口将保持打开状态。
  d. 选择 立即运行 。
  e. 单击 确定 以运行脚本,并关闭“立即运行或保存 SQL”窗口。
  还可以将 SQL 脚本保存到一个文件中,以后再运行它,也可以保存 SQL 脚本并运行它。
  17.在“DB2 消息”窗口中应当看到一条消息指出,同时在 SAMPLE 和 COPYDB 服务器上成功运行了脚本。单击 关闭 。
  18.展开 Apply 控制服务器 文件夹和 COPYDB 数据库 ,然后单击 预订集 文件夹。 预订集 文件夹的内容窗格现在应当显示 DEPTSUB 预订集。
  步骤6:创建Apply程序密码文件
  因为 Apply 程序需要连接至 Capture 控制服务器、Apply 控制服务器和目标服务器,所以,必须创建一个密码文件以进行用户认证。因为密码文件的内容已加密,所以,只有 Apply 程序可以读取该文件,尽管您可以修改该文件。
  创建密码文件步骤:
  1.打开操作系统的命令行窗口,然后进入db2的sqllib\bin目录中,执行:
  Asnpwd init using “path:/sqllib/repl/asnpwd.aut”
  2. 输入以下命令来为 Apply 程序必须连接至的每个数据库添加用户标识和密码信息:asnpwd add alias sample id userid password password using “path”
  步骤7:启动capture和apply程序
  打开系统命令行窗口,执行:
  Asncap asncap_server=sample capture_schema=ASN startmode=cold
  Asnapply CONTROL_SERVER=copydb apply_qual=deptqual

  

原文转自:http://www.ltesting.net