ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 数据库 >> DB2 >> DB2搭建SQL复制环境

DB2搭建SQL复制环境(1/2)

来源:网络整理     时间:2015-12-09     关键词:表空间

本篇文章主要介绍了"DB2搭建SQL复制环境",主要涉及到表空间方面的内容,对于DB2感兴趣的同学可以参考一下: 摘要: 本文在同一个数据下,搭建了一个SQL复制的环境,并做了相关的测试~[背景知识]在搭建环境之前,您需要了解SQL复制中基本的概念,比如capture, a...

摘要: 本文在同一个数据下,搭建了一个SQL复制的环境,并做了相关的测试~

[背景知识]

在搭建环境之前,您需要了解SQL复制中基本的概念,比如capture, apply, control table, CD表, registration, subscription set, member.如不了解,请先行参考下面的链接
http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.swg.im.iis.db.repl.intro.doc/topics/iiyrcintrssql.html?lang=en

[测试环境]

DB2 9.7.0.6
AIX 6.1
Source Table: EMPLOYEE(ID, FAMILYNAME, GIVENNAME)
Target Table: TRGEMPLOYEE,只复制源表的第1和第3列;不需要预先定义,会自动生成
数据库名:sample,且源库和目标库是同一数据库

[具体过程]

Step1: 确保SAMPLE数据库采用的是归档日志,create employee表并插入两行数据

$ db2 create db sample
$ db2 update db cfg for sample using LOGARCHMETH1 LOGRETAIN
$ db2 backup db sample
$ db2 connect to sample
$ db2 get db cfg | grep -i LOGARCHMETH1
 First log archive method                 (LOGARCHMETH1) = LOGRETAIN
 Options for logarchmeth1                  (LOGARCHOPT1) =
$ db2 "create table employee(id int NOT NULL, FAMILYNAME char(20), GIVENNAME char(20), PRIMARY KEY (ID) )"

$ db2 "insert into employee values(1,'a','aa'),(2,'b','bb')"

Step2: 连到数据库,并运行以下脚本:

oasnclp -f sqlrep.asnclp
其中,sqlrep.asnclp内容如下,命令包括:设置 server、创建control表、创建REGISTRATION、创建预定集、创建预定集成员
# identify databases involved.  
# ('Control' and 'Target' are usually the same)
SET SERVER CAPTURE TO DB SAMPLE ID e97q6c PASSWORD "pswd";
SET SERVER CONTROL TO DB SAMPLE ID e97q6c PASSWORD "pswd";
SET SERVER TARGET  TO DB SAMPLE ID e97q6c PASSWORD "pswd";
SET RUN SCRIPT NOW STOP ON SQL ERROR ON;
# Add meta data tables to hold information about
# your source and target tables.
CREATE CONTROL TABLES FOR CAPTURE SERVER;
CREATE CONTROL TABLES FOR APPLY CONTROL SERVER;
# Identify source table(s).
# Changed data will be 'staged' (stored) in a 'CD' table
CREATE REGISTRATION (E97Q6C.EMPLOYEE) DIFFERENTIAL REFRESH STAGE CDEMPLOYEE COLS (id, GIVENNAME);
# A subscription maps a source table to a target table.
# Subscriptions are grouped in sets.
# Every subscription must be in a set, so we make a set here:
CREATE SUBSCRIPTION SET SETNAME SET00 APPLYQUAL MYQUAL1 ACTIVATE YES TIMING INTERVAL 1 START DATE "2008-01-01" TIME "01:00:00.000000";
# Each subscription is a member of a set.
# If needed, you can create the target table as we do here:
SET PROFILE TBSPROFILE FOR OBJECT TARGET TABLESPACE OPTIONS UW USING FILE "/home/db2users/e97q6c/sqllib/TSTRG.TS" SIZE 700 PAGES;
CREATE MEMBER IN SETNAME SET00 APPLYQUAL MYQUAL1 ACTIVATE YES SOURCE EMPLOYEE TARGET NAME TRGEMPLOYEE DEFINITION IN TSTRG00 CREATE USING PROFILE TBSPROFILE TYPE USERCOPY COLS ALL REGISTERED;
# Now, run the file through the asnclp command
# and you are ready to replicate data.
QUIT;

Step3: 启动capture和apply

SESSION1:
$  asncap capture_server=sample
2015-12-06-13.37.30.324008 ASN0600I  "Capture" : "" : "Initial" : Program "capture 9.7.6" is starting.
2015-12-06-13.37.31.094227 ASN0561W  "Capture" : "ASN" : "Initial" : The program's application code page "819" is not the same as the code page "1208" of database "SAMPLE".
2015-12-06-13.37.33.322770 ASN0100I  CAPTURE "ASN" : "WorkerThread" : The Capture version "9.7.6" program initialized successfully.
2015-12-06-13.37.33.323242 ASN0109I  CAPTURE "ASN" : "WorkerThread". The Capture program has successfully initialized and is capturing data changes for "0" registrations. "0" registrations are in a stopped state. "1" registrations are in an inactive state.
Session2:
$ asnapply c apply_qual=MYQUAL1
2015-12-06-13.37.50.461285 ASN0600I  "Apply" : "" : "Initial" : Program "apply 9.7.6" is starting.
2015-12-06-13.37.52.857361 ASN1045I  APPLY "MYQUAL1" : "Initial" : The Apply version "9.7.6" program was started using database "SAMPLE".

Step4: 新开一窗口,观察结果:

Session3:
$ db2 connect to sample
$ db2 list tables
Table/View                      Schema          Type  Creation time             
------------------------------- --------------- ----- --------------------------
CDEMPLOYEE                      E97Q6C          T     2015-12-06-13.36.57.185199
EMPLOYEE                        E97Q6C          T     2015-12-06-13.35.16.448487
TRGEMPLOYEE                     E97Q6C          T     2015-12-06-13.36.58.301661  <---自动生成目标表TRGEMPLOYEE

  3 record(s) selected.


$ db2 list tablespaces | more
 Tablespace ID                        = 3
 Name                                 = TSTRG00   <--自动生成目标表空间TSTRG00
 Type                                 = Database managed space
 Contents                             = All permanent data. Large table space.
 State                                = 0x0000
   Detailed explanation:
     Normal  
  
$ db2 "select APPLY_QUAL, SET_NAME,SOURCE_SERVER,TARGET_SERVER, STATUS from ASN.IBMSNAP_SUBS_SET"
APPLY_QUAL         SET_NAME           SOURCE_SERVER      TARGET_SERVER      STATUS
------------------ ------------------ ------------------ ------------------ ------
MYQUAL1            SET00              SAMPLE             SAMPLE                  0
  1 record(s) selected.
$ db2 "select APPLY_QUAL, SET_NAME, substr(SOURCE_TABLE, 1,20) as SOURCE_TABLE, substr(TARGET_TABLE, 1,20) as TARGET_TABLE, MEMBER_STATE from  ASN.IBMSNAP_SUBS_MEMBR" 
APPLY_QUAL         SET_NAME           SOURCE_TABLE         TARGET_TABLE         MEMBER_STATE
------------------ ------------------ -------------------- -------------------- ------------
MYQUAL1            SET00              EMPLOYEE             TRGEMPLOYEE          L           
  1 record(s) selected.
$ db2 "select * from TRGEMPLOYEE"
ID          GIVENNAME           
----------- --------------------
          1 aa                  
          2 bb                  
  2 record(s) selected.
$ db2 "insert into EMPLOYEE values(3,'c','cc')"
DB20000I  The SQL command completed successfully.
//Wait 1 minutes

$ db2 "select * from TRGEMPLOYEE" 

ID          GIVENNAME           
----------- --------------------
          1 aa                  
          2 bb                  
          3 cc        <-- 一分钟后查看,已经被复制过来了
  3 record(s) selected.
  

Step5:停止capture和apply

Session3:
$ asnccmd capture_server=sample stop
2015-12-06-14.14.59.465632 ASN0600I  "AsnCcmd" : "" : "Initial" : Program "capcmd 9.7.6" is starting.
2015-12-06-14.15.01.487184 ASN0522I  "AsnCcmd" : "ASN" : "Initial" : The program received the "STOP" command.
$ asnacmd apply_qual=MYQUAL1 c stop
2015-12-06-14.15.07.164747 ASN0600I  "AsnAcmd" : "" : "Initial" : Program "applycmd 9.7.6" is starting.
2015-12-06-14.15.09.185527 ASN0522I  "AsnAcmd" : "MYQUAL1" : "Initial" : The program received the "STOP" command.

[错误及解决]

相关图片

相关文章