环境介绍:
源端:ORACLE 10.2.0.4
目标端1:ORACLE 11.2.0.4
目标端2:ORACLE 11.2.0.3 新增加的节点
1,新节点安装DDS软件
见:目标端安装
2,停源端,修改文件
停源端 [dds@www.htz.pw bin]$ddstop 修改tgt.cfg文件 [dds@www.htz.pw bin]$cat !$ cat $DDS_DATA/config/tgt.cfg #tgtID NextSendNo NextSaveNo Communication-Param Web-Comm-Param TcpFlow(KB/s) # 1 0 0 TCP 192.168.1.1:8204 192.168.1.1:8304 0 1 0 0 TCP 192.168.111.5:8204 2 0 0 TCP 192.168.111.5:8205
[dds@www.htz.pw config]$tail -4 map.cfg 1 1 USER RUN scott 2 1 USER RUN htz 3 1 USER RUN huang 4 2 USER STOP htz 这里需要注意上面这一行红色的部分 |
3,开始目标端2的同步
[dds@www.htz.pw data]$cat map_restarttgt2 ddsplus -c localhost:8203 -l dds/dds -b <<! > map_restarthuang.log & map start id=4 tgt resume id=2; idx resume tgtid=2; privilege tgtid=2; !
[dds@www.htz.pw data]$ddstart Copyright: Beijing Jiuqiao Software LTD. EMAIL/MSN: tb2oracle@163.com TEL: 010-82255433 FAX: 010-82255433-2003 License: need check iStream DDS–PMONS x86_64 Linux 3.2.9-1-ARCH Ver2.13.9.p17.q 2013/11/21 15:12:44 (BIT-64) With 204800 objects & 256 mappings
0804080758[5.PMONS] License valid date is 2013/03/12 — 2018/09/02 (2000 Days)
查看map的情况 [dds@www.htz.pw data]$vshms -m
Mapping Info(4 mappings, MAX 256): ID TgtID TYPE STATE 1 1 USER RUN [scott] 2 1 USER RUN [htz] 3 1 USER RUN [huang] 4 2 USER STOP [htz]
查看目标端的情况 [dds@www.htz.pw data]$vshms -t
Target Info ( count=2 MAX=4 ) ID TYPE NEXT_R_NO NEXT-W-NO COMM-PARAM WEB-PARAM FLOW(KB/s) Delay(s) 1 TCP 0 0 192.168.111.5:8204 0 0 2 TCP 0 0 192.168.111.5:8205 0 0
TGT#01 PARAM:192.168.111.5:8204 Flow(bytes), 0, 0, 0, 0, 0 TGT#02 PARAM:192.168.111.5:8205 Flow(bytes), 0, 0, 0, 0, 0
[dds@www.htz.pw data]$./map_restarttgt2
查看同步的日志 [dds@www.htz.pw data]$cat map_restarthuang.log help, quit, …
DDS> <StartMapping ID="4" Mode="F" Method="S" TruncateTarget="Y" NREADER="1" RESTART="0" /> Time: 2014-08-04 08:08:44 Successful: YES Time: 2014-08-04 08:08:46 (2 seconds) 这里可以看到同步已经成功。 DDS> <result ok="YES" cmd="Tgt" do=RESUME tgtid=2/>
DDS> <result ok="YES" cmd="IDX" do=resume tgtid=2/>
DDS> <result ok="YES" cmd="Privilege"/>
|
4,测试DML是否同步
源端新增加一个表,测试是否同步
www.htz.pw > create table htz.htz as select * from dba_objects;
Table created.
查看源端日志 0804081042[5.COM01] PCOMM: SEND /oracle/app/dds/1024/data/comm/2.945.dtf(len=1048) OK 0804081042[5.COM00] PCOMM: SEND /oracle/app/dds/1024/data/comm/1.945.dtf(len=1048) OK 0804081042[5.COM01] PCOMM: SEND /oracle/app/dds/1024/data/comm/2.946.dtf(len=3152066) OK 0804081042[5.COM00] PCOMM: SEND /oracle/app/dds/1024/data/comm/1.946.dtf(len=3152066) OK 0804081042[5.COM01] PCOMM: SEND /oracle/app/dds/1024/data/comm/2.947.dtf(len=1764459) OK 0804081042[5.COM00] PCOMM: SEND /oracle/app/dds/1024/data/comm/1.947.dtf(len=1764459) OK 这里看到源端日志正常,将日志分发到两个目标端,每个目标端使用一个comm进程来传输
查看目标端2的日志 没有任何新增加的日志
查看目标端1的日志 08/04/2014 08:10:42[5.PUT00] TRUNCATE TABLE "HTZ"."HTZ" 08/04/2014 08:10:42[5.PUT00] CY I-0 U-0 D-0 DDL-1 IGN=0 BAD-0 Time:839ms CO:1 CC:2/50 Delay(s):4(1~3~9) 08/04/2014 08:10:42[5.PUT00] Load /oracle/app/dds/1124/data/put0/0/946.dtf (LEN=3152066) 08/04/2014 08:10:44[5.PUT00] CY I-32273 U-0 D-0 DDL-0 IGN=0 BAD-0 Time:1579ms CO:1 CC:0/50 Delay(s):6(1~3~9) 08/04/2014 08:10:44[5.PUT00] Load /oracle/app/dds/1124/data/put0/0/947.dtf (LEN=1764459) 08/04/2014 08:10:45[5.PUT00] CY I-17808 U-0 D-0 DDL-0 IGN=0 BAD-0 Time:686ms CO:0 CC:0/50 Delay(s):7(1~4~9) 目标端1的日志一切正常,但是目标端2的日志没有任何的输出 |
5,处理目标端2不能正常装载情况
通过svhmt -c可以看到下面的情况 Total : IRP-0 URP-0 DRP-0 DDL-0 TXN-0 DelayTime : MIN-0 MAX-0 AVG-0 put0 : 0/948 his0 : 5/5 SRC#0 : SOURCE 192.168.111.5:8203:8303 这里代表的意思是0代表不装载数据,948代表目标端接收到最大编号的dtf文件
到put0下面查看dtf文件接收正常 [dds@www.htz.pw 0]$ls -lrt total 4820 -rw-r—– 1 dds oinstall 90 Aug 4 08:08 944.dtf -rw-r—– 1 dds oinstall 1764459 Aug 4 08:10 947.dtf -rw-r—– 1 dds oinstall 3152066 Aug 4 08:10 946.dtf -rw-r—– 1 dds oinstall 1048 Aug 4 08:10 945.dtf [dds@www.htz.pw 0]$vshow -3 945.dtf ————– 945.dtf (len=1048)
–BEGIN WORK; SCN:0xf66cf Time:2014/08/04 08:10:37 OracleVer:169870080 CREATE TABLE "HTZ"."HTZ" ( "OWNER" VARCHAR2(30) NULL , "OBJECT_NAME" VARCHAR2(128) NULL , "SUBOBJECT_NAME" VARCHAR2(30) NULL , "OBJECT_ID" NUMBER NULL , "DATA_OBJECT_ID" NUMBER NULL , "OBJECT_TYPE" VARCHAR2(19) NULL , "CREATED" DATE NULL , "LAST_DDL_TIME" DATE NULL , "TIMESTAMP" VARCHAR2(19) NULL , "STATUS" VARCHAR2(7) NULL , "TEMPORARY" VARCHAR2(1) NULL , "GENERATED" VARCHAR2(1) NULL , "SECONDARY" VARCHAR2(1) NULL ) PCTFREE 10 INITRANS 6 MAXTRANS 255 STORAGE( FREELISTS 1 FREELIST GROUPS 1 INITIAL 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 ) TABLESPACE "USERS";
COMMIT; –SCN:0xf6721 Time:2014/08/04 08:10:38 Session:142.137 这里说明 DTF文件肯定是正常的。 下面手动装载dtf文件 [dds@www.htz.pw 0]$oput 945.dtf 08/04/2014 08:36:24[5.PUT00] TGT DB VER 11 08/04/2014 08:36:24[5.PUT00] Loader-threads = 1 08/04/2014 08:36:24[5.PUT00] Load 945.dtf (len=1048) 08/04/2014 08:36:24[5.PUT00] CREATE TABLE HTZ.HTZ 08/04/2014 08:36:26[5.PUT00] CY I-0 U-0 D-0 DDL-1 IGN=0 BAD-0 Time:1175ms CO:1 CC:1/23 Delay(s):1548(1548~1548~1548) [dds@www.htz.pw 0]$oput 946.dtf 08/04/2014 08:36:43[5.PUT00] TGT DB VER 11 08/04/2014 08:36:43[5.PUT00] Loader-threads = 1 08/04/2014 08:36:43[5.PUT00] Load 946.dtf (len=3152066) 08/04/2014 08:36:46[5.PUT00] CY I-32273 U-0 D-0 DDL-0 IGN=0 BAD-0 Time:3721ms CO:1 CC:0/23 Delay(s):1568(1568~1568~1568) [dds@www.htz.pw 0]$oput 947.dtf 08/04/2014 08:36:57[5.PUT00] TGT DB VER 11 08/04/2014 08:36:57[5.PUT00] Loader-threads = 1 08/04/2014 08:36:57[5.PUT00] Load 947.dtf (len=1764459) 08/04/2014 08:36:58[5.PUT00] CY I-17808 U-0 D-0 DDL-0 IGN=0 BAD-0 Time:689ms CO:1 CC:0/23 Delay(s):1580(1580~1580~1580) [dds@www.htz.pw 0]$oput 948.dtf 08/04/2014 08:37:01[5.PUT00] TGT DB VER 11 08/04/2014 08:37:01[5.PUT00] Loader-threads = 1 08/04/2014 08:37:01[5.PUT00] Load 948.dtf (len=90) 08/04/2014 08:37:01[5.PUT00] CY I-0 U-0 D-0 DDL-0 IGN=0 BAD-0 Time:0ms CO:0 CC:0/23 Delay(s):979(979~979~979)
www.htz.pw > select count(*) from htz.htz;
COUNT(*) ———- 50081
手动装载正常
查看 putfile.fno文件内容,从putfile.fno中,我们发现了异常,这个文件正常的时候,其实只有一行内容。 左边的是下一次要装载的交易文件编号,右边的是源端已经发送到目标端的文件最大编号。 [dds@www.htz.pw put0]$cat putfile.fno 0 0 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 停DDS后,手动修改putfile.fno文件。 将第一个0更改为947,第二个文件更改为put0/0中最大的日志编号 重启dds进程后,加载正常。 这里我们需要对比一下数据,是否有异常,通宵情况下都会导致异常的,在这里,其实我们也可以通过手动修改putfile.fno文件来达到手动跳过某个dtf文件继续加载的目的。 |
DDS 增加目标端节点:等您坐沙发呢!