首页 » OGG » 如何增加新表到Goldengate已存在的同步链路?

如何增加新表到Goldengate已存在的同步链路?

在日常Goldengate日常运维中最常见的是在现有的同步进程中增加新的同步表, 这里记录简单的使用class mode典型模式时,增加新表的过程。

源库

1, 增加附加日志

GGSCI> dblogin UserIdAlias OGGADMIN
GGSCI> ADD TRANDATA SOURCE.DASANI

如果抽取是从standby,连接主库使用SQL
SQL> ALTER TABLE SOURCE.XX   ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

2, 停挂抽取进程

GGSCI > stop ext extxxxx
GGSCI > stop ext dpxxx

3, 修改抽取配置文件

GGSCI > edit params extxx
-- add blew
Table SOUCE.XXX;

GGSCI > edit params dp xx
-- add new table if have filter
Table SOUCE.XXX;

4, 启动并抽取检查状态

GGSCI> start extxxx
GGSCI> start dpxxx

GGSCI> info all

5, 获取SCN

SQL> select current_scn from v$database;

6, 导出数据

expdp \'/ as sysdba\' directory=data_pump_dir dumpfile=source_xxxi.dmp logfile=source_xxx.log tables=source.xxx flashback_scn=xxxxxxxxxxxxxx

7, 传到导出表文件目标库

scp 
-- or 
ftp

目标库

8, 导入数据

impdp \'/ as sysdba\' directory=data_pump_dir dumpfile=source_xxxi.dmp logfile=source_xxx_imp.log remap_schema=source:target transform=segment_attributes:n transform=oid:n

9, 修改replicat进程

GGSCI> edit params repxxx
-- add below
Map SOURCE.xxx, target TARGET.xxx, FILTER ( @GETENV('TRANSACTION', 'CSN') > xxxxxxxxxxxxxxx);

--如果有新表数据已同步过来,可能会导致rep进程已ABENDING。

10, 启动应用进程

GGSCI> start repxxxx

11, 检查同步完成后,去掉rep CSN filter

GGSCI> dblogin UserIdAlias OGGADMIN
GGSCI> lag rraj
At EOF, no more records to process ------- no more records to process(i.e lag is zero)

GGSCI> edit params repxxx -- From Map SOURCE.xxx, target TARGET.xxx, FILTER ( @GETENV('TRANSACTION', 'CSN') > xxxxxxxxxxxxxxxxx); -- To Map SOURCE.xxx, target TARGET.xxx;

12, 重启应用

GGSCI> stop repxxx
GGSCI> start repxxx

13, 验证状态

GGSCI> info all
GGSCI> stats repxxx

注意#6 在导出时使用了flashback, 有些大表或数据库不允许使用falshback,因为浪费过多的undo, 可以在导出时不指定expdp,而是在replicat时对表做容错处理,如

GGSCI>edit params repxxx
MAP  source.xxx,TARGET xxx.xxxx, HANDLECOLLISIONS;

等同步完成后取消表级同步的HANDLECOLLISIONS 参数。

打赏

,

对不起,这篇文章暂时关闭评论。