ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Goldegate 追数问题

Goldegate 追数问题

原创 Linux操作系统 作者:gdutllf2006 时间:2010-10-15 09:51:45 0 删除 编辑

#########################################################################
问题的产生:


问题:由于源端执行了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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-07-08

  • 博文量
    133
  • 访问量
    425847