首页 > Linux操作系统 > Linux操作系统 > Goldegate 追数问题
#########################################################################
问题的产生:
问题:由于源端执行了ddl操作而目标端没有执行而造成数据冲突无法进行复制。所以现在要跳过报数据冲突的表,不让这些表进行复制。等到其他表的数据全部都复制
完成了以后,在通过exp和imp的方法单独同步这几张表
#########################################################################
大概流程
0
停止,两边的应用
1
(广州-北京)
广州 exp进程增加tableexclude ORIUSR.T_ORI_ARCHINFO
dpe进程增加tableexclude ORIUSR.T_ORI_ARCHINFO
北京
rep进程增加mapexclude ORIUSR.T_ORI_ARCHINFO;
(添加参数后,要重启ext和dpe进程)
注意:添加的参数要加到最上边
如:
mapexclude ORIUSR.T_ORI_CERT_MONITOR;
map ORISTAT.* , target ORISTAT.*;
map ORIUSR.* , target ORIUSR.*;
map UNICHARGE.* , target UNICHARGE.*;
map UNICHGSTATE.* , target UNICHGSTATE.*;
map goldengate.test2 , target goldengate.test2;
map ORIQUERY.* , target ORIQUERY.*;
map OCRUSR.* , target OCRUSR.*;
~
广州 extcdz2.prm
tableexclude ORIUSR.T_ORI_CERT_MONITOR;
table ORISTAT.*;
table ORIUSR.*;
table UNICHARGE.*;
table UNICHGSTATE.*;
table goldengate.test2;
table ORIQUERY.*;
table OCRUSR.*;
广州 dpecdz2.prm
tableexclude ORIUSR.T_ORI_CERT_MONITOR;
table ORISTAT.*;
table ORIUSR.*;
table UNICHARGE.*;
table UNICHGSTATE.*;
table ORIQUERY.*;
table goldengate.test2;
table OCRUSR.*;
1.1
停止广州ext和dpe进程后再启动ext和dpe进程,使修改的参数生效(确保没有交易以后才能停掉这些进程)
2
(广州
dblogin userid goldengate, password goldengate
delete trandata ORIUSR.T_ORI_CERT_MONITOR
add trandata ORIUSR.T_ORI_CERT_MONITOR
广州-
观察exp和dpe进程的rba号是否还继续增长,如果没有增长了并与北京rba一致。停止ext和dpe进程
3
(广州
广州将ORIUSR.T_ORI_CERT_MONITOR表导出
广州去除刚刚添加的参数后,广州启动ext和dpe进程
将导出的dmp文件传输给北京
北京导入dmp文件后,检查附件日志是否有问题
select table_name from all_tables where owner in ('ORIUSR') and table_name not in (select distinct table_name
from dba_log_group_columns
where owner in ('ORIUSR'));
4
北京)
去除刚刚添加的参数后,启动rep进程
如果有问题可以在rep中添加map ORIUSR.T_ORI_CERT_MONITOR , target ORIUSR.T_ORI_CERT_MONITOR,handlecollisions;跳过这个表错误,应用可以应用的部分
等应用完队列日志后,快速关闭rep进程。
从参数里去除map ORIUSR.T_ORI_CERT_MONITOR , target ORIUSR.T_ORI_CERT_MONITOR,handlecollisions;
再启动rep进程
7
启动应用
#########################################################################
操作过程:
1 先停止数据库监听,保证没有新连接进来
lsnrctl stop
注意,因为是RAC环境,此操作要在两台主机上都做.
2 由于应用的问题,数据库中还存在很多挂起的连接,手动Kill
select username, 'alter system kill session '||chr(39)||SID||','||SERIAL#||chr(39)||';'
from v$session where username in ('ORIUSR', 'ORISTAT', 'UNICHARGE','UNICHGSTATE','ORIQUERY','OCRUSR') order by username;
select 'alter system kill session '||chr(39)||SID||','||SERIAL#||chr(39)||';'
from v$session where status='ACTIVE' and username in ('ORIUSR', 'ORISTAT', 'UNICHARGE','UNICHGSTATE','ORIQUERY','OCRUSR') order by username;
注意:
1) 添加用户条件来确保,不会影响数据库的正常运行.
2) 因为是RAC环境,此操作要在两台主机上都做.
3 再加参数:
exp进程增加tableexclude ORIUSR.T_ORI_CERT_MONITOR
dpe进程增加tableexclude ORIUSR.T_ORI_CERT_MONITOR
4 停止GG进程
info extcdz2,detail
info extcdz2,showch
确定没事务
停止extcdz2,dpecdz2
再启动,使新的参数文件生效.
dblogin userid goldengate, password ggs10_cdzhp
delete trandata oriusr.T_ORI_CERT_MONITOR
add trandata oriusr.T_ORI_CERT_MONITOR
广州--
观察exp和dpe进程的rba号是否还继续增长,如果没有增长了。停止ext和dpe进程
5
广州--
将ORIUSR.T_ORI_CERT_MONITOR表导出
exp oriusr/c_29g0uu tables=T_ORI_CERT_MONITOR file=/home/oracle/T_ORI_CERT_MONITOR.dmp file=/home/oracle/T_ORI_CERT_MONITOR.log
6
广州去除刚刚添加的参数后,广州启动ext和dpe进程
将导出的dmp文件传输给北京
7 北京)
导入dmp文件
去除刚刚添加的参数后,启动rep进程
8 两边检查数据复制情况,保证同步
select * from ORIUSR.T_ORI_CERT_MONITOR
MINUS
select * from ORIUSR.T_ORI_CERT_MONITOR@another;
和
select * from ORIUSR.T_ORI_CERT_MONITOR@another
MINUS
select * from ORIUSR.T_ORI_CERT_MONITOR;
9 启动监听,恢复应用的连接.
10 完成数据的同步,恢复.
问题: 即使关掉了所有的应用连接,只是保证应用数据没有变化,但并不是保证没有redo log再产生. 这是完全不关事的.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10248702/viewspace-675987/ ,如需转载,请注明出处,否则将追究法律责任。