经过本教程学习使用Replication Center,Capture和Apply程序。html
按照本教程的步骤来设置你的SQL Replication环境,将SQL Replication源的更改复制到DB2®for Windows Enterprise Server Edition(ESE)或Workgroup Server Edition(WSE)上的数据库中的目标表,并监视 Capture和Apply程序的活动。sql
在开始教程前,须要安装你的环境。数据库
经过如下步骤完成环境的安装:服务器
教程使用SAMPLE数据的DEPARTMENT表。全名是schema.DEPARTMENT;schema是你建立SAMPLE数据库的用户ID。app
对于剩下的教程,确保你使用的用户ID是你建立SAMPLE和COPYDB数据的用户。这个用户ID有权限(DBADM或SYSADM)来使用replication task。ide
你想复制哪些数据,你须要设置哪些选项学习
假设你的组使用程序来产生报告。这个程序须要SAMPLE数据库DEPARTMENT表种的数据。相对于从数据源表直接获取数据, 你更但愿程序能够复制数据源表的修改到目标表, 而这些目标表只有报告产生程序能够读取。为了便于管理, 你能够把目标表和数据源表放到同一台机器上。测试
您须要简单的数据分发配置,包括将更改从一个复制源复制到单个只读副本。 下一个主题描述在执行任何复制任务以前须要考虑的设计和规划问题。ui
您能够选择复制选项,例如,肯定change-data(CD)表,目标表和控制表的存储位置,复制发生的频率以及哪些记录(根据您指定的条件)您 想要在每一个复制周期后从IBMSNAP_APPLYTRAIL表中删除。加密
为了本教程学习的目的,请将CD表,目标表和控制表存储在各自的默认表空间中,如表1所示。尽管SAMPLE和COPYDB数据库存在于同一台计算机中,但它们的表空间在不一样的容器中。
表1. 表和表空间
| Database | Tables | Table spaces | Contents | | - | - | - | - | | SAMPLE | schema.DEPARTMENT | USERSPACE1 | Source table | || schema.CDDEPARTMENT | TSCDDEPARTMENT | The CD table for the DEPARTMENT table | || Capture control tables | TSASNCA and TSASNUOW | The control tables for the Capture program | | COPYDB | schema.TGDEPTCOPY | TSTGDEPTCOPY | Target table | || Apply control tables | TSASNAA | The control tables for the Apply program | || Monitor control tables | REPLMONTS1, REPLMONTS2, and REPLMONTS3 | The control tables for the Replication Alert Monitor |
一般,您能够在与表空间(USERSPACE1)分离的表空间中建立CD表,以减小表空间级的潜在竞争。 为此,请接受复制控制表的表空间的默认值(或在复制中心内定义配置文件)。 在生产环境中,请确保在单独的设备上建立每一个表空间,以减小潜在的争用。
对于本教程,计划SQL Replication以每分钟检查源表中的任何更改,而后将更改复制到目标表。 虽然报表生成应用程序不须要这次检查频率,但对于本教程,您但愿可以测试复制环境并验证全部操做是否正常。
此外,您决定在每一个复制周期以后,要删除IBMSNAP_APPLYTRAIL表中超过一周(七天)的记录。 这种设置防止表增加太大。
复制源是数据库中你须要复制到目标源的表。 在设置环境以前,您必须肯定须要从表中复制哪些内容。
此场景和教程的复制源是SAMPLE数据库中的schema.DEPARTMENT表。 您决定register和subscribe全部列。
复制目标源是要从复制源复制数据到目标数据库的表。 您能够在目标数据库中建立一个新表,或者使用现有的目标表。 对于本教程,您将建立一个新表。
复制目标源将是您建立的新数据库COPYDB中的表。 目前,该数据库中没有目标表,您能够根据您的实际需求决定是否建立目标表。 自动生成目标表的方式是首选,由于它能够确保对复制源的正确映射。 您可使用现有的目标表,但本教程假定目标表不存在。
假设你想要的COPYDB的目标表的列如表1所是:
表1. COPYDB表的列
Column | Description
由于目标表中的列只是反映源表中的数据,而且由于源表中每行在目标表中只有一行,您可使用user copy类型的目标表。
在完成复制计划以后,下一步就须要完成复制环境的设置
如下全部的步骤须要使用Replication Center, 经过下面步骤运行:开始菜单 > 全部程序 > IBM DB2 > DB2_copy > General Administration Tools > Replication Center. 或在DB2命令行使用db2rc启动
配置复制环境第一步,建立Capture程序须要的control表
Capture程序读取control表的注册信息,而后将其状态存储在这些表中。 任何充当Capture控制服务器的数据库都必须包含Capture control表。
建立Capture control表:
下一步是启用源数据库进行复制。 Capture程序读取DB2®日志,以记录反映registered表更改的记录。 日志必须是archive log类型(而不是circular log类型),以免日志在Capture程序能够读取以前被DB2覆盖。
对于Linux,Unix和Windows环境,DB2默认使用circular日志。使用如下步骤修改日志类型为archive日志
启用源数据库进行复制:
在备份完数据库后,你能够启动Capture程序。对于本教程还不须要启动。
在建立Capture control表和启用复制数据库以后,你须要注册你的数据库的表做为复制源。
使用如下步骤将SAMPLE数据库中的DEPARTMENT表注册为复制源。 注册表时,将自动建立名为CDDEPARTMENT的change-data(CD)表,以从注册的源表接收更改。 而后Apply程序从CD表中获取更改
注册一个表做为复制源:
图1.Register Tables窗口
图2. DEPARTMENT表在注册表列表中
DEPARTMENT表如今被定义为复制源了。以前运行SQL脚本时,Replication Center已经为这个复制源建立了CD表和CD表索引,以及更新Capture control表。
在为Capture建立完control表后,你须要为Apply程序也建立control表。
Apply程序为subscription-set信息,读取和保存状态到这些control表。任何做为Apply control server的数据库都须要有Apply control表。
建立Apply contrl表:
在你注册完数据源表后,你须要建立subscription set和subscription-set member来定义源数据库到目标数据库的关系已经复制源表和多个目标表的关系。
一个subscription set定义了复制源数据库(SAMPLE)和目标数据库(COPYDB)的关系。 一个subscription-set member定义了复制源表(DEPARTMENT)和多个目标表(DEPTCOPY)的关系。
建立subscription set和subscription-set member
展开SQL Replication目录
展开Definitions目录
展开Apply Control Servers目录
展开COPYDB数据库
右击Subscription Sets目录选择Create
你也能够经过选择SAMPLE数据库的Registered Tables目录来建立subscription set。
在Create Subscription Set窗口设置如下信息:
在Create Subscription Set窗口的Source-to-Target Mapping标签输入如下信息:
联邦数据提示:
若是你的公司的复制配置映射一个数据源表到一个存在的目标表且至少有一个表是来自非DB2数据库,能够查看Federated Systems Guide获取更多信息,怎么映射数据源列到存在的目标表的列。
Member Properties 窗口的一个例子如图2.
图2. Member Properties 窗口
在Member Properties窗口的Target-Table Index标签:
在Member Properties窗口的Row Filter标签,在WHERE statement框输入:
DEPTNO >='E00'
这个where显示哪些你想复制知足条件的行,只有哪些department number大于等于E00的行。选在目标表将保护8行而不是14行记录
在Member Properties窗口的Target-Table Table Space标签,为新的TSTGDEPTCOPY表空间指定如下信息:
点击OK关闭Member Properties窗口。本教材你还不须要对Target load options标签作任何设置
在Create Subscription Set窗口的Schedule标签,修改minutes为1,Apply程序将每分钟处理这个subscription set。保留Start date, Start time, Time-based, 和 Use relative timing为默认值
在Create Subscription Set窗口的Statements标签,点击Add来打开Add SQL Statement or Procedure Call窗口。使用这个窗口来定义处理subscription set时运行的SQL。在Add SQL Statement or Procedure Call窗口输入如下信息:
在SQL Statement框输入:
DELETE FROM ASN.IBMSNAP_APPLYTRAIL WHERE LASTRUN < (CURRENT TIMESTAMP - 7 DAYS)
这个语句将删除IBMSNAP_APPLYTRAIL表超过7天的数据
Apply程序在处理subscription set以后执行您在目标服务器上添加的SQL语句。 因为Apply control server 和target server位于同一位置,而且IBMSNAP_APPLYTRAIL表位于Apply control server上,因此SQL语句必须在目标服务器上运行。
Tip Apply程序运行在每一个subscription周期中添加到subscription set的SQL语句或过程。 这个例子是无效的,由于Apply程序每分钟都会执行这个语句,尽管这个语句只能从IBMSNAP_APPLYTRAIL表中删除数据,最多每隔24小时删除一次。 2. 设置SQLSTATE值为02000点击Add。这个SQL state标示”行找不到“错误,Apply程序会忽略这些错误。 Tip 你的Apply程序能够为subscription set设置10个SQL state 3. 点击OK来关掉Add SQL Statement or Procedure Call窗口
点击OK关闭Create Subscription Set窗口
在Messages and SQL Scripts窗口点击Close。窗口将显示更新Apply control tables 和 create the target table的SQL脚本。若是有错误也会在这个窗口显示。
在Run Now or Save SQL窗口点击OK来当即处理SQL脚本。或者,将SQL脚本保存到文件以备未来使用,如今也能够运行它:
你会收到成功失败的消息
点击Close
展开COPYDB数据库的Apply Control Servers目录,点击Subscription Sets目录。Subscription Sets目录的内容面板会显示DEPTSUB subscription set。 如图3
图3. COPYDB数据库列出DEPTSUB subscription set
由于Apply程序须要链接Capture control server,Apply control server和 the target server,你必须建立一个password file来为用户受权。由于password file的内容是加密的,尽管你能够修改这个文件,但只有Apply程序能够读取这个文件。
建立Apply password file:
asnpwd init using "path"
path是你建立password file指定的完整目录和文件名。你会看到信息ASN1981I,确保命令行成功运行。
例如,若是你想保存password file到c:\sqllib\repl目录,文件名为asnpwd.aut,输入如下命令:
asnpwd init using "c:\sqllib\repl\asnpwd.aut"
c:\sqllib\repl\asnpwd.aut是password file的完整路径和文件名
Tip
在您启动Apply程序的目录中建立密码文件。 当您启动Apply程序时,您能够指定password file的文件名(使用PWDFILE关键字)以及Apply程序将存储其日志和工做文件(使用APPLY_PATH关键字)的目录的值。 password file是Apply程序的工做文件之一。 3. 输入如下命令为每一个Apply程序须要链接的数据库添加用户ID和密码信息:
asnpwd add alias SAMPLE id userid password password using "path"
userid须要拥有权限来更新Capture和Apply control表,password是这个用户的密码,path是你建立的password file的完整路径。当你看到ASN1981I标示命令执行成功。