24. Loading data using trail files to the Replicat process method

简单说明:

本实验模拟源库100万条记录的EMP表到目标库的复制
验证OGG初始化数据同步方法为:Trail to the Replicat method
复制过程中源表会有事务执行,也就是模拟生产不停机的环境

环境准备:

依据《11. Setting up a simple GoldenGate replication confguration between two single node databases》
和《23. Performing an initial load using an extract file to the GoldenGate’s replicat method》
部署实验环境,在源库和目标库重新初始化EMP表,源表灌入数据,打开附加日志,赋权
也就是部署完成上篇博文的环境准备部分,目标端应用进程依然处于关闭状态

如果是上篇博文的实验环境,则可以依据以下操作完成准备:

# 目标端:
su - oracle
cd /ggs
echo 'STOP REPLICAT RGGTEST1'|./ggsci
echo 'truncate table emp;'|sqlplus scott/tiger
# 源端:
su - oracle
sqlplus scott/tiger
truncate table emp;
BEGIN
  FOR I IN 1..250000 LOOP
    INSERT INTO EMP VALUES 
      (0+I,'TOM'||I,'WORKER',7369,TO_DATE('07-11-2012','DD-MM-YYYY'),10000+I,I,10,'LONDON');
    INSERT INTO EMP VALUES
      (250000+I,'BOB'||I,'DBA',7499,TO_DATE('07-11-2012','DD-MM-YYYY'),260000+I,I,10,'PARIS');
    INSERT INTO EMP VALUES
      (500000+I,'ALEX'||I,'DEVELOPER',7521,TO_DATE('07-11-2012','DD-MM-YYYY'),500000+I,I,10,'TOKYO');
    INSERT INTO EMP VALUES
      (750000+I,'SAM'||I,'SALESMAN',7934,TO_DATE('07-11-2012','DD-MM-YYYY'),750000+I,I,10,'BOSTON');
  END LOOP;
  COMMIT;
END;
/
conn / as sysdba
select to_char(current_scn) from v$database;
-- 317821
exit
# 目标端启动 RGGTEST1 语句为:
# START REPLICAT RGGTEST1, AFTERCSN 317821

实验步骤:

1° 目标端应用进程配置文件改写(该进程已经在环境准备时关闭):

su - oracle
cd /ggs/dirprm
cat >RGGTEST1.prm<<EOF
REPLICAT RGGTEST1
USERID ggs, PASSWORD ggs
DISCARDFILE /ggs/dirrpt/RGGTEST1.dsc, append, MEGABYTES 500
ASSUMETARGETDEFS
-- 源表和目标表结构一致
HANDLECOLLISIONS
-- 解决冲突的参数,初始化同步后需要关闭
MAP SCOTT.emp, TARGET SCOTT.emp;
EOF

2° 源端配置OGG初始化数据同步抽取进程:

# 编辑配置
su - oracle
cd /ggs/dirprm
cat>EXTINIT.prm<<EOF
EXTRACT EXTINIT
SOURCEISTABLE
-- 抽取库中的表,而非redo和归档
USERID ggs, PASSWORD ggs
RMTHOST 192.168.77.11, MGRPORT 8809
RMTFILE /ggs/dirdat/ri, maxfiles 1000, megabytes 10
-- 目标端trail文件的全路径,并设置最大文件数量和每个文件的容量
-- 这里是区别于上一个实验的地方
TABLE SCOTT.EMP;
EOF
# 添加进程
cd /ggs
./ggsci
ADD EXTRACT EXTINIT, SOURCEISTABLE
exit

3° 目标端配置OGG初始化数据同步应用进程:

# 编辑配置
su - oracle
cd /ggs/dirprm
cat>RPTINIT.prm<<EOF
REPLICAT RPTINIT
USERID ggs, PASSWORD ggs
DISCARDFILE ./dirrpt/rptinit.dsc, PURGE
ASSUMETARGETDEFS
-- 源表和目标表结构一致
MAP SCOTT.EMP, TARGET SCOTT.EMP;
EOF
# 以上配置可以看出,就是一个普通的应用进程配置
# 添加进程
cd /ggs
./ggsci
ADD REPLICAT RPTINIT, EXTTRAIL ./dirdat/ri, nodbcheckpoint
exit
# 该应用进程不使用检查点表

4° 源端抽取进程启动:

su - oracle
cd /ggs
echo 'START EXTRACT EXTINIT'|./ggsci
echo 'STATUS EXTRACT EXTINIT'|./ggsci
# 监控抽取进程的状态
echo 'INFO EXTRACT *, TASKS'|./ggsci

5° 目标端应用进程启动:

su - oracle
cd /ggs
echo 'START REPLICAT RPTINIT'|./ggsci
echo 'STATUS REPLICAT RPTINIT'|./ggsci

6° 源端模拟业务操作:

su - oracle
sqlplus scott/tiger
DELETE EMP WHERE EMPNO>650000 and CITY='TOKYO';
UPDATE EMP SET CITY='SHANGHAI' where CITY='TOKYO';
COMMIT;
exit

7° 初始化同步完成的验证:
源端初始化抽取进程停止后,目标端初始化应用进程状态不在改变时
查询目标库状态,确定初始化同步完成

# 源端监控初始化抽取进程是否停止
su - oracle
cd /ggs
echo 'INFO EXTRACT *, TASKS'|./ggsci
# 目标端监控初始化应用状态是否不在改变
# 通过观察 Log Read Checkpoint 信息确定
su - oracle
cd /ggs
echo 'INFO REPLICAT RPTINIT'|./ggsci
sleep 10
echo 'INFO REPLICAT RPTINIT'|./ggsci
# 目标库表数据验证
sqlplus scott/tiger
SELECT CITY,COUNT(*) FROM EMP GROUP BY CITY;
exit
# 查看表数据,发现数据和初始化同步之时的状态相同

8° 目标端原应用进程启动,数据验证:

su - oracle
cd /ggs
./ggsci
START REPLICAT RGGTEST1, AFTERCSN 317821
-- 依然要注意原应用进程的启动位置
-- 依据EMP表初始化数据灌入后的源库SCN启动
exit
sqlplus scott/tiger
SELECT CITY,COUNT(*) FROM EMP GROUP BY CITY;
exit

9° 初始化同步相关部署删除回滚:
源端:

su - oracle
cd /ggs
./ggsci
dblogin userid ggs,password ggs
DELETE EXTRACT EXTINIT
exit
rm -rf /ggs/dirprm/EXTINIT.prm

目标端:

su - oracle
cd /ggs
./ggsci
dblogin userid ggs,password ggs
STOP REPLICAT RPTINIT
DELETE REPLICAT RPTINIT
STOP REPLICAT RGGTEST1
EDIT PARAMS RGGTEST1
-- 删除配置文件中的 HANDLECOLLISIONS 参数
-- 保存退出
START REPLICAT RGGTEST1
exit
rm -rf /ggs/dirprm/RPTINIT.prm

实验总结:

本次实验和上篇实验大体相似,不同之处:
  源端初始化抽取进程中配置了trail文件的数量和容量
  目标端是一个普通的应用进程
也就是说本次实验实际上是在源端配置初始化抽取进程
源源不断的抽取源库的表数据到目标端,完成后自动停止
目标端配置普通的应用进程不断应用抽取进程发送来的trail文件
当trail文件应用完成后应用进程依然保持运行状态,不会自动停止

该实验应用应当比上一篇实验较广,没有数据容量限制
可以实现源较为广泛的OGG数据初始化同步:
  1,目标端为新库新OGG环境,配置启动MGR
  2,源库配置普通抽取进程,无需停业务
  3,源库配置发送进程,发送到目标库
  4,源库配置初始化抽取进程,发送到目标端
  5,目标库装入被复制的表结构,不包含数据
  5,目标端配置初始化应用进程,启动
  6,目标端配置普通的应用进程,使用HANDLECOLLISIONS参数
  7,初始化抽取进程停止后,启动普通的应用进程
  8,验证数据状态
依然存在问题,但凡使用HANDLECOLLISIONS参数解决冲突的部署情景
源端和目标端的数据一致性都要受到怀疑
依然不如数据泵或RMAN备份恢复使用SCN为基点的初始化同步数据一致性逻辑清晰
后续 Loading data with ... method 三个关于基于OGG初始化同步的方法不在实验验证
应用场景并不广泛,或者数据一致性关系较为复杂,不建议采用

[TOC]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值