科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道DB2 数据复制概述

DB2 数据复制概述

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在本文中,我们将先定义和讨论DB2数据复制的一些基本概念。我们将详细讲解DB2实现数据复制的解决方案。最后,我们将举例子详细讲解如何搭建DB2数据复制环境。

来源:IT专家网 2008年6月6日

关键字: IBM 数据库 DB2

  • 评论
  • 分享微博
  • 分享邮件

应用限定符

应用限定符将一个应用程序和一个或多个预订集关联起来。当你定义一个预订集时,指定一个名称(区分大小写)作为应用限定符。
通过使用多个应用限定符,你可以只使用一个用户ID运行多个应用程序实例。例如:假设你想从两个源数据库复制数据到你计算机上的目标表。源表A中的数据使用“全更新拷贝”复制到目标表A,源表B中的数据使用“差别更新拷贝”复制到目标表B中。你定义了两个预订集(一个对应表A,一个对应表B),而且你使用各自的应用限定符以允许应用程序的两个实例在不同的时间拷贝数据。你也可以将两个预订集用同一个应用限定符定义,用同一个应用程序实例拷贝数据。

数据操作

也许你想只复制源表中的子集,可以使用简单的视图来重构从源表到目标表的数据,或者使用复杂的连接或联合。

源表的子集

你可以复制源表中的某些列或某些行,而不是复制整个表。

对于目标的连接和联合
你可以创建和维护包含由多张已存在的源表连接或联合成的内容的目标表。
你可以使用下面的连接类型:
-跨越一个或多个定义的复制源的简单内部连接,可能和其它的复制源的其它表或视图组合。

你可以通过下面的方法采用连接和联合来操作数据:
-从单一的DB2源服务器上连接表(通过定义一张由某些表连接成的DB2视图)
-从一个源服务器上联合的表(通过在一个预订集中使用包含相同目标表的多个预订集成员)
-从多个源服务器的联合,有时称之为多点联合(通过创建在多个预订集中的多个预订集成员)

目标表
当你定义一个预订集成员时,你必须指定你所使用目标表的类型。有下面几种表类型可以用:
-用户拷贝表
-时间点表
-聚集表
-CCD表
-副本或行副本表
-用户表

下面介绍一下这些目标表类型的特点:
用户拷贝表
这些表是复制源的只读拷贝,不带有附加的复制控制列,就像普通的源表。它们是目标表最普通的类型。

时间点表
这些表是复制源的只读拷贝,附带有一时间戳列。时间戳列初始为空。当复制更改时,该列被赋予相应值以指示更新的时间。当你想跟踪更改的时间时,可以使用这种类型的表。

聚集表
这些是只读的表,使用SQL列函数(如SUM、AVG)来计算源表全部或最近发生更改的数据的摘要。行会随时间追加到聚集表。

基础聚集表汇总一张源表的内容。用基础聚集表来定期地跟踪源表状态。例如,假设你想知道你每个月的顾客平均数。如果你的源表中一个顾客对应一行,你每月将你源表中的行数取平均,而后将平均值存储到一张基础聚集表中。

基础聚集表没有跟踪更改信息。例如,假设你一月份平均有500个顾客,二月份也有500个顾客。然而,在二月份,你失去两个现有的客户,同时新增两个新客户。基础数据表显示这两个月平均顾客数是一样的,但它没有反映出二月份的变化。如果你想跟踪变化信息,可以使用更改聚集表。

更改聚集表使用控制表中的更改数据,而不使用源表中的内容。使用更改聚集表来跟踪随时间发生的更改(UPDATE、INSERT、DELETE操作)。例如,假设你想知道每个月你增加多少新客户(INSERTS)失去多少现有客户(DELETES)。你将按月统计你源表中行所发生的更改,将统计结果存储在更改聚集表中。

CCD表
涉及非IBM数据库,本文不予讨论。

副本或行副本表
这些是唯一能被直接被我们的应用程序(此处的应用程序指用户的应用系统)更新的目标表。发生于副本或行副本的更改会被复制到相关的源表中;源表再依次复制更改至其它副本。使用副本表类型适用于任何地方的更新的复制。

用户表
你不用直接指定一张用户表作为目标表;然而,对于任何地方的更新的复制,一张用户表将自动做为与其相关的副本或行副本的目标。用户表是副本的父母,而且它的拷贝依赖于副本。副本的父母从依赖副本那里接受更新,如果没有冲突检测,它将复制更改到其它依赖副本。副本的父母是主要数据源。如果任何更新冲突被检测到,副本的父母的内容成功。典型情况下,你的应用程序访问依赖的副本表;然而,当副本不可用时,它们将连接至包含用户表的服务器上。

应用更新的调度

同步复制将连续的递送更新。当源数据发生改变,它将临时存储起来,继而转送到目标。只有更改已经复制到目标数据库,源数据库才进行提交。这种类型的复制也称之为实时复制。

异步复制将分阶段递送更新。当源数据发生改变,它将在事先设定的时间间隔内临时存储起来,而后再继续转送到目标。时间间隔可以用时间(秒、分、时)度量或用指定的事件(午夜,或一天中的其它时间)来度量。如果更改没能被应用于目标数据库(例如,目标数据库或者网络停机),它们将被存储起来稍后再被应用,应用的顺序将按照在源数据库上的发生顺序。这种复制类型提供了比同步复制更多的好处:更好的利用网络资源,更少的数据库连接,在数据到达目标数据库之前有机会提高数据。

例子

以下操作或命令主要在DB2的控制中心或命令控制台中进行(红色部分根据具体情况调整),相关命令更详细的使用参见DB2帮助文档。

建立复制环境

先创建文件夹C:\示例以存放一些脚本文件
1.创建源数据库
DB2 CREATE DB DB_S

2.将数据库日志改为归档日志Capture
DB2 UPDATE DB CFG FOR DB_S USING LOGRETAIN Capture

3.根据需要调整日志大小(如果需要的话)

4.备份数据库(改为归档日志的数据库必须先备份才能对其进行操作)
DB2 BACKUP DB DB_S

5.创建源表
DB2 CONNECT TO DB_S USER UserName USING Password
DB2 CREATE TABLE TAB_1_S (COL_1 VARCHAR(20) NOT NULL, COL_2 VARCHAR(20), PRIMARY KEY(COL_1))

6.定义复制源
在控制中心左边树型列表中数据库DB_S下选中表,右边列表列出了所有的表,用右键点击表TAB_1_S,在弹出的菜单中选中定义为复制源—>定制,接受默认选项,点击确定,弹出现在运行还是保存窗口,接受默认的保存设置,点击确定,弹出选择系统名窗口,选择数据库所在系统,点击确定,弹出文件浏览器,把当前目录定位到C:\示例,在路径中输入文件名tab_1_replscr.sql,点击确定。保存成功后可以用文本编辑器查看tab_1_replscr.sql中的内容,可以发现里边主要是生成CD表,和注册复制源(通过往表 ASN.IBMSNAP_REGISTER中插入记录)的SQL语句。

7.运行复制源
用右键点击控制中心左边树型列表中数据库DB_S下的复制源,在弹出菜单中选择运行SQL文件…,弹出选择系统名窗口,选择数据库所在系统名,确定,在弹出的文件浏览器中选择tab_1_replscr.sql后确定,如果成功,用右键进行刷新,将显示出新定义的复制源 TAB_1_S。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章