Goldengate 简单部署测试

来源:互联网 发布:东莞网站快速排名优化 编辑:程序博客网 时间:2024/05/10 10:23
操作流程:


Following are descriptions of the steps in the figure:
1.  Start the Extract. Configure and start the Extract to begin capturing database
changes. You need to start the Extract beforethe initial load, so that any SQL
data manipulation language (DML) changes made during the load process can
be captured. The Extract captures the database changes from the source
database-transaction log and writes them to the source trail file. 

开启extract进程.配置并且启动extract进程去捕获数据库的更改。
需要在initial load之前开启extract,这样dml语句在执行加载期间才能被捕获到。
extract从transaction log中捕获更改并且写到source trail 文件中。


2.  Start the data pump. Configure and start the data pump to send extracted
changes captured by the local Extract into the source trail across the network
to the target server. When on the targetserver, the changes are written to the
remote trail file. 

开启pump进程。配置并且开启data pump进程去传输抽取的更改到目标服务器中。
目标服务器上会使用collector进程去写到remote trail文件中。

3.  Perform the initial load. Load the datausing either GoldenGate or vendor
DBMS utilities. Doing so creates a synchronized copy of each database, except
for changes that were captured during the load process by the Extract. These
changes will be applied in the next step when the Replicat is started. You only
need to run an initial data load the first time you setting up replication. After
this, GoldenGate will keep the data synchronized on an ongoing basis using
the Extract and Replicat processes. 

开始initial load初始化加载。使用goldengate或者数据库的工具去加载数据。
这样来创建一个和数据库同步的copy,除了加载处理的时候捕获的那些数据库更改。
这些更改会在下一步在复制进程启动的时候应用到target 数据库上面。
所以只需要运行初始化数据加载一次即可。
这些结束后,goldengate会保证数据持续的一致性。


4.  Start the Replicat. Configure and start the Replicat to begin applying changes
from the remote trail file. Changes thatwere captured while the initial-load
process was executing have already been written to the remote trail file. It may
take a Replicat some time to catch up with the changes, depending on the data
volume and the length of time changes were captured during the load process.
Also, some of these changes may cause data conflicts, because activity was
occurring in the database at the same time the data load was running. Later,
this chapter covers some GoldenGate parameters, such as HANDLECOLLISIONS,
to automatically handle these data conflicts. When the Replicat has caught up
and applied all the changes, the databases are synchronized. 

开启replicat进程。配置兵器开启复制进程去开始应用remote trail中的更改到数据库上。
这些更改会在执行initial load的时候被捕获,并且写到remote trail 文件中。可能会消耗复制进程一些时间,
依赖于数据量和初始化加载中这些数据更改的时间长短。
同样的类似于这样的更改可能会导致数据冲突,因为数据库在初始化加载执行的时间内一直是活动的。

蓝色字体为输出内容
红色字体为注意内容
绿色字体为参数内容
灰色字体为注释内容


每个版本要下载对应的goldengate 软件

10g的需要下载10g的goldengate


11g的需要下载11g的goldengate


a simple example:

10.2.0.5
fbo_ggs_Linux_x64_ora10g_64bit.zip

11.2.0.3
fbo_ggs_Linux_x64_112100_ora11g_64bit.zip


解压文件

都在/u01/gg/目录下

配置环境变量

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

否则在使用ggsci命令的时候会报错,找不到库文件



 ip节点名称goldengate master portgoldengate 安装目录源端192.168.0.3dbserver7890/u01/gg目标端192.168.0.97gg17890/u01/gg



hosts文件保证都有对方的ip映射条目



添加附加日志


/*****参考内容

primary 数据库开启 最小附加日志

SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

支持行链接和其他的存储结构(比如cluster table)


primary 数据库开启表级附加日志


通常类似于oracle、sqlserver、db2不会记录足够的事务日志。所以需要添加额外的表级附加日志,来支持goldengate的复制操作。


GSCI (dbserver) 3> dblogin userid dexter password xiaojun
Successfully logged into database.

GGSCI (dbserver) 4> add trandata dexter.double_balls ;
ERROR: Invalid TRANDATA attribute ;: expected NOKEY or COLS.

GGSCI (dbserver) 5> add trandata dexter.double_balls

Logging of supplemental redo data enabled for table DEXTER.DOUBLE_BALLS.

其在oracle中发出的sql语句如下(会自动查找主键信息):

ALTER TABLE "DEXTER"."RED" ADD SUPPLEMENTAL LOG GROUP "GGS_RED_59438" ("RNO")
  ALWAYS  /* GOLDENGATE_DDL_REPLICATION */

ALTER TABLE dexter.double_balls
ADD SUPPLEMENTAL LOG GROUP double_balls (id) ALWAYS; 

  • If you specify ALWAYS, then during an update, the database includes in the redo all columns in the log group. This is called an unconditional log group(sometimes called an "always log group"), because Oracle Database supplementally logs all the columns in the log group when the associated row is modified. If you omit ALWAYS, then the database supplementally logs all the columns in the log group only if any column in the log group is modified. This is called a conditional log group.


如果指定了always关键字,那么在update的时候,数据库会将所有列的信息包含在日志组中。这叫做无条件日志组。因为oracle数据库会在rows进行更改的时候,
附加所有列的日志到日志组中。如果没有指定always,那么数据库只是附加更改的列的信息到日志组中。这叫做条件日志组 。


生成add trandata脚本

set echo off
set verify off
set pagesize 2000
set linesize 250
set trim on
set heading off
set feedback off
spool &&SCHEMA..add_trandata.obey
select 'add trandata &SCHEMA..'||table_name
from dba_tables where owner = '&SCHEMA' ;
spool off 

ggsci中执行add trandata脚本

GGSCI (sourceserver) 1> dblogin userid gger password userpw
Successfully logged into database.
GGSCI (sourceserver) 2> obey diroby/HR.add_trandata.obey 

查看是否增加表级附加日志成功

select owner, log_group_name, table_name from dba_log_groups where owner = 'DEXTER'; 




使用impdp+dblink导入导出数据,dmp文件不落地

[oracle@srtcreen OGG]$ impdp srt_creen/a69UiBOB1gk directory=DATA_PUMP_DIR network_link=OGG_TYKF REMAP_SCHEMA=CSCNEW:SRT_CREEN REMAP_TABLESPACE=CSC_TAB_1:SRTCREEN tables=CSCNEW.TAB_CS_USER,CSCNEW.TAB_CS_QUEUES,CSCNEW.TAB_CS_CALL_PICKUP,CSCNEW.TAB_CS_CALL_COMING,CSCNEW.TAB_CS_CALLLOG FLASHBACK_TIME=\"to_timestamp\(\'2011-12-06 13:03:00\',\'yyyy-mm-dd hh24:mi:ss\'\)\"

*/

操作:
需要拥有primary key 主键才可以对表进行复制操作

sys@ORCL> SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;

SUPPLEME
--------
YES


GSCI (dbserver) 5> add trandata dexter.double_balls
GSCI (dbserver) 5> add trandata dexter.blue
GSCI (dbserver) 5> add trandata dexter.red

sys@ORCL> select owner, log_group_name, table_name from dba_log_groups where owner = 'DEXTER';

OWNER                          LOG_GROUP_NAME                 TABLE_NAME
------------------------------ ------------------------------ ------------------------------
DEXTER                         GGS_DOUBLE_BALLS_59441         DOUBLE_BALLS
DEXTER                         GGS_BLUE_59439                 BLUE
DEXTER                         GGS_RED_59438                  RED



禁用触发器以及级联删除约束

/*************** 禁用触发器以及 级联删除约束

The reason is to prevent duplicate changes, because GoldenGate is already replicating the
resultsof the trigger and cascade-delete operations fromthe source database. If you didn’t disable the
constraints and triggers, GoldenGate would replicate those changes; then the triggers and cascadedelete constraints would also fire, causing duplicate changes on the target database.

禁用的原因是方式重复的更改,因为goldegate会复制这些因为trigger或者级联删除所带来的更改。
如果没有disable 这些约束和触发器,goldengate会复制这些更改,那么触发器和级联删除约束同样出发,导致重复的更改到目标数据库上面。


 


禁用trigger
set echo off
set verify off
set pagesize 2000
set linesize 250
set trim on
set heading off
set feedback off 


进行cascade delete约束

spool &&SCHEMA..disable_cascade_delete_constraints.sql 

select 'alter table '||owner||'.'||table_name||
' disable constraint '||constraint_name||';'
from all_constraints
where delete_rule = 'CASCADE'
and owner = '&SCHEMA'; 

spool off 


禁用触发器
spool &SCHEMA..disable_triggers.sql 

select 'alter trigger '||owner||'.'||trigger_name||
' disable ;'
from all_triggers
where owner = '&SCHEMA'; 

spool off 

开启delete 约束

spool &SCHEMA..enable_cascade_delete_constraints.sql 

select 'alter table '||owner||'.'||table_name||
' enable constraint '||constraint_name||';'
from all_constraints
where delete_rule = 'CASCADE'
and owner = '&SCHEMA';
spool off
spool &SCHEMA..enable_triggers.sql
select 'alter trigger '||owner||'.'||trigger_name||
' enable;'
from all_triggers
where owner = '&SCHEMA';

spool off 


*/



验证manager进程状态

验证mgr进程状态

GGSCI (dbserver) 2> info mgr

Manager is running (IP port dbserver.7890).


GGSCI (dbserver) 3> view params mgr

port 7890


开始配置extract进程



配置用来capture dexter schema中的上述三个表的所有dml操作

/*******参考内容

查看source database的字符集

select * from v$nls_parameters where PARAMETER in ('NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET')  ;
 

SETENV (NLS_LANG = AMERICAN_AMERICA.AL32UTF8) 



查看数据库的oracle_home以及oracle_sid

echo $ORACLE_HOME
echo $ORACLE_SID

SETENV (ORACLE_HOME="/oracle/ora11g/product")
SETENV (ORACLE_SID="ora11src") 



SETENV (NLS_LANG = AMERICAN_AMERICA.AL32UTF8)
USERID GGER@SourceDB, PASSWORD userpw
ExtTrail dirdat/l1
Table HR.*;





/*******


基础设置

sys@ORCL> select * from v$nls_parameters where PARAMETER in ('NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET')  ;

PARAMETER                                                        VALUE
---------------------------------------------------------------- ----------------------------------------------------------------
NLS_LANGUAGE                                                    AMERICAN
NLS_TERRITORY                                                   AMERICA
NLS_CHARACTERSET                                                 AL32UTF8




[oracle@dbserver udump]$ echo $ORACLE_HOME
/u01/apps/oracle/10gr2/dbhome_1

[oracle@dbserver udump]$ echo $ORACLE_SID
orcl


ggsci 

edit params ldexd1

Extract ldexd1
------------------------------
--dex schema develement env --
------------------------------
SETENV (ORACLE_HOME="/u01/apps/oracle/10gr2/dbhome_1")
SETENV (ORACLE_SID="orcl")
SETENV (NLS_LANG = AMERICAN_AMERICA.AL32UTF8)
USERID dexter, PASSWORD xiaojun
exttrail dirdat/l1
Table  dexter.DOUBLE_BALLS;
Table dexter.BLUE;
Table dexter.RED;

必须隔开写


exttrail 定义extract 写入的trail文件的位置
table 定义需要进行capture的表的名称,可以通配符,例如schema.*



/******* 参考资料

extract 
进程的命名规则

l=local extract or
e=extract or
p=pump or
r=replicat
+
schema and application module name 
+
p=product environment. or
d=development environment.
+
sequence number


sum(name)=8char (don't contains chinese charactor)

ldexd1


上面的配置中的含义
Extract ldexd1 
定义extract group名称

SETENV
设置环境变量

userid
设置gg用户在source database上面的名称以及密码

EXTTRAIL
指定trail文件的名称
上面的例子中命名为l1
goldengate 会自动的附加6个sequence number,作为最后的trail 文件名称。



可以使用FORMAT RELEASE来指定goldengate写老版本的格式的trail文件,以兼容目标端的老版本goldengate软件。

table
用来指定goldengate需要capture哪些对象的更改,写入到extract trail中。




*/


添加extract 进程

已经配置好了数据库,以及extract 进程的参数,现在可以添加extract进程来capture change了。
记得和上面的配置想匹配。

ADD EXTRACT LDEXD1, TRANLOG, BEGIN NOW
ADD EXTTRAIL dirdat/l1, EXTRACT LDEXD1, MEGABYTES 100 

START EXTRACT LHREMD1

 
验证一下是否可以正常开启

GGSCI (dbserver) 2> info ldexd1 detail

EXTRACT    LDEXD1    Last Started 2013-08-08 19:21   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:06 ago)
Log Read Checkpoint  Oracle Redo Logs
                     2013-08-08 19:27:42  Seqno 158, RBA 939008

  Target Extract Trails:

  Remote Trail Name                                Seqno        RBA     Max MB

  dirdat/l1                                            1       1000        100

  Extract Source                          Begin             End            

  /u01/apps/oracle/oradata/orcl/redo02.log  2013-08-08 19:20  2013-08-08 19:27
  /u01/apps/oracle/oradata/orcl/redo02.log  2013-08-08 18:04  2013-08-08 19:20
  Not Available                           * Initialized *   2013-08-08 18:04


Current directory    /u01/gg

Report file          /u01/gg/dirrpt/LDEXD1.rpt
Parameter file       /u01/gg/dirprm/ldexd1.prm
Checkpoint file      /u01/gg/dirchk/LDEXD1.cpe
Process file         /u01/gg/dirpcs/LDEXD1.pce
Stdout file          /u01/gg/dirout/LDEXD1.out
Error log            /u01/gg/ggserr.log



开启data pump进程

edit params pdexd1

Extract PDEXD1
PASSTHRU
RMThOST gg1,MgrPort 7890
RmtTrail dirdat/l2
--Table  dexter.DOUBLE_BALLS;
Table dexter.BLUE;
Table dexter.RED;
不要写在一起用的逗号隔开

ADD EXTRACT PDEXD1, EXTTRAILSOURCE dirdat/l1
ADD RMTTRAIL dirdat/l2, EXTRACT PDEXD1, MEGABYTES 100 


/*****

GGSCI (sourceserver) 1> edit params PHREMD1
Extract PHREMD1
-------------------------------------------------------------------
-- Data Pump extract for HR schema
-------------------------------------------------------------------
PassThru
RmtHost targetserver, MgrPort 7840
RmtTrail dirdat/l2
Table HR.* ;

上述配置中
extract

passthru

在没有数据的过滤,转换等操作的时候,使用这个参数可以提升性能。
因为在goldengate 执行pump的时候不需要考虑表的定义信息。或者数据定义文件。
这在中间层的时候是非常有用的,因为中间层没有数据库运行。



必须拥有相同的列名、数据类型、大小、语义、并且拥有相同的顺序。


rmthost
rmthost和mgrport指定远程主机名称以及端口号


rmttrail
指定远程trail文件的位置,一般trail文件的位置都位于datdir目录下面


table
指定需要pump的表的名称。多个表需要隔开定义。




*/

start pdexd1 


开启pump进程,pump进程就会从本地的源trail文件中读取数据并且于远程的collector进程通信写入到rmttrail文件中了。


验证一下:


GGSCI (dbserver) 32> info all

Program     Status      Group       Lag           Time Since Chkpt

MANAGER     RUNNING                                          
EXTRACT     RUNNING     LDEXD1      00:00:00      00:00:02   
EXTRACT     RUNNING     PDEXD1      00:00:00      00:00:08   



GGSCI (dbserver) 33> info pdexd1 detail

EXTRACT    PDEXD1    Last Started 2013-08-08 20:02   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:02 ago)
Log Read Checkpoint  File dirdat/l1000003
                     2013-08-08 20:19:34.000000  RBA 286586

  Target Extract Trails:

  Remote Trail Name                                Seqno        RBA     Max MB

  dirdat/l2                                            2     264657        100

  Extract Source                          Begin             End            

  dirdat/l1000003                         2013-08-08 20:02  2013-08-08 20:19
  dirdat/l1000003                         2013-08-08 19:21  2013-08-08 20:02
  dirdat/l1000001                         * Initialized *   2013-08-08 19:21
  dirdat/l1000000                         * Initialized *   First Record   


Current directory    /u01/gg

Report file          /u01/gg/dirrpt/PDEXD1.rpt
Parameter file       /u01/gg/dirprm/PDEXD1.prm
Checkpoint file      /u01/gg/dirchk/PDEXD1.cpe
Process file         /u01/gg/dirpcs/PDEXD1.pce
Stdout file          /u01/gg/dirout/PDEXD1.out
Error log            /u01/gg/ggserr.log


GGSCI (dbserver) 34>

 


GGSCI (dbserver) 31> stats pdexd1

Sending STATS request to EXTRACT PDEXD1 ...

Start of Statistics at 2013-08-08 20:19:25.

Output to dirdat/l2:

Extracting from DEXTER.BLUE to DEXTER.BLUE:

*** Total statistics since 2013-08-08 20:02:23 ***
        Total inserts                             1029.00
        Total updates                                0.00
        Total deletes                                0.00
        Total discards                               0.00
        Total operations                          1029.00

*** Daily statistics since 2013-08-08 20:02:23 ***
        Total inserts                             1029.00
        Total updates                                0.00
        Total deletes                                0.00
        Total discards                               0.00
        Total operations                          1029.00

*** Hourly statistics since 2013-08-08 20:02:23 ***
        Total inserts                             1029.00
        Total updates                                0.00
        Total deletes                                0.00
        Total discards                               0.00
        Total operations                          1029.00

*** Latest statistics since 2013-08-08 20:02:23 ***
        Total inserts                             1029.00
        Total updates                                0.00
        Total deletes                                0.00
        Total discards                               0.00
        Total operations                          1029.00

Extracting from DEXTER.RED to DEXTER.RED:

*** Total statistics since 2013-08-08 20:02:23 ***
        Total inserts                             1029.00
        Total updates                                0.00
        Total deletes                                0.00
        Total discards                               0.00
        Total operations                          1029.00

*** Daily statistics since 2013-08-08 20:02:23 ***
        Total inserts                             1029.00
        Total updates                                0.00
        Total deletes                                0.00
        Total discards                               0.00
        Total operations                          1029.00

*** Hourly statistics since 2013-08-08 20:02:23 ***
        Total inserts                             1029.00
        Total updates                                0.00
        Total deletes                                0.00
        Total discards                               0.00
        Total operations                          1029.00

*** Latest statistics since 2013-08-08 20:02:23 ***
        Total inserts                             1029.00
        Total updates                                0.00
        Total deletes                                0.00
        Total discards                               0.00
        Total operations                          1029.00

End of Statistics.




使用goldengate进行初始化加载



goldengate direct load (没有文件落地)

一再强调必须禁止trigger并且disable 级联删除



配置初始化加载extract 进程 SOURCE:
GGSCI (dbserver) 36> edit params IDEXD1 

Extract IDEXD1 
SETENV (NLS_LANG = AMERICAN_AMERICA.AL32UTF8)
USERID dexter, PASSWORD xiaojun 
RmtHost gg1, mgrport 7890
RmtTask Replicat, Group DDEXD1

--Table  dexter.DOUBLE_BALLS;
Table dexter.BLUE;
Table dexter.RED;

ADD EXTRACT IDEXD1, SOURCEISTABLE



target端创建与source端相同表结构的表
创建dblink
create table as  wher 1=2 ;

alter table modify primary key  ;
only table named r has primary key ;





配置初始化加载replicat 进程 TARGET:



GGSCI (gg1) 1> edit PARAMS DDEXD1



Replicat DDEXD1
SETENV (NLS_LANG = AMERICAN_AMERICA.AL32UTF8)
USERID dexter, PASSWORD xiaojun
AssumeTargetDefs
--Map dexter.double_balls, Target dexter.double ;
Map dexter.red, Target dexter.r ;
Map dexter.blue, Target dexter.b ;




 ADD REPLICAT DDEXD1, SPECIALRUN 



这个时候在两边都无法看到初始化加载进程的存在


源端:

START EXTRACT IDEXD1

非常之慢,建议使用对应数据库软件的工具去进行初始化操作。


10g以上使用expdp/impdp,10g一下使用exp/imp


/**************

SOURCEISTABLE

sourceistable会通知goldengate这是一个初始化加载进程


RmtTask
远程进程名称



AssumeTargetDefs
当source和target端的表的定义相同的时候可以使用这个参数。如果不相同,需要生成data-definition 文件。




SPECIALRUN
使用这个command通知goldengate这是一个初始化加载进程。只用来进行初始化加载。




只需要开启source端的extract进程即可,它会自动的通知target端开启replicat进程



*/



开启复制进程


EDIT PARAMS RDEXD1

Replicat RDEXD1 
SETENV (NLS_LANG = AMERICAN_AMERICA.AL32UTF8)
USERID DEXTER, PASSWORD xiaojun
HandleCollisions
AssumeTargetDefs

Map dexter.red, Target dexter.r ;
Map dexter.blue, Target dexter.b ;

/****************

HANDLECOLLISIONS

使用
HANDLECOLLISIONSand NOHANDLECOLLISIONS
参数去控制复制进程是否尝试解决重复行和丢失行应用到目标服务器的问题。
这些错误通常发生在goldengate direct load,当目标主机执行完direct load并且
复制从source服务器capture的change的时候。

可以使用两个参数以下面的集中方式:
1. 可以在在root level声明。会对所有的map语句生效。
2. 可以使用HANDLECOLLISIONS 或者NOHANDLECOLLISIONS作为开关。
3. 可以使用这些参数在一个map语句中,开启或关闭对应的表。

map语句中声明会覆盖其他设置的声明。


HANDLECOLLISIONS如何工作:

当replicat遇到更新某一个column的时候,goldengate使用下面的key
1. 如果行的old key没有在target上找到,那么记录会被转化为insert
2. 如果行的新key在target存在,那么replicat删除原来的key值的行。
然后修改原拥有新键值的行,覆盖为trail文件中定义的值。

这个逻辑需要记录表中所有列的日志到transaction log中。比如说在使用add trandata的时候使用cols选项。


当replicat遇到一个重复记录错误的时候,通过initial加载的数据会被覆盖。这是一个非常安全的方式。对于忽略掉
重复记录的方式。

          当复制进程在执行update 或者delete操作的时候遇到丢失行的错误,这个改变记录会被抛弃。这些错误发生在一个改变条目在source服务器上,并且
          在执行initial-load之前这个record已经被删除了。
          如下面的例子:
               1. 应用更新了record A 在source 端 table 1
               2. extract 抽取到了这个change record
               3. 应用删除了这个record 在 source端 table1
               4. extract 抽取了delete
               5. goldengate 执行了initial load ,这时候没有record A
               6. replicat尝试应用update 到record A
               7. 数据库返回 record missing的错误
               8. replicat 尝试去delete record A
               9. 数据库返回 record missing 错误


应该在source端和target端的表同步之后关闭,禁用自动处理这些错误。     
因为这些错误在两端的表进行同步后出现是不正常的,应该去解决这样的问题,而不是用程序自动的忽略或者处理。
比如说,missing record 错误,表示source端的记录在target被删除掉了。
     
可以使用下面的方法禁用掉:
1. 关闭rep进程,在参数文件中移除handlecollisions。或者修改table的属性,在map语句里面追加NOHANDLECOLLISIONS禁用掉错误自动处理
2. 当rep运行的时候,可以使用ggsci的send replicat+NOHANDLECOLLISIONS去禁用掉自动处理错误的特性。不过要记得在参数我文件中也修改
为command执行的内容。          

最好使用与业务无关的主键(sequence)


ASSUMETARGETDEFS+passthru
当target和source端的column拥有相同的结构,可以使用这个参数。
比如在一个热备的站点。
它会使goldengate不去检查source端的source0definition文件
如果拥有不同的结构,那么使用sourcedefs参数去代替ASSUMETARGETDEFS


SOURCEDEFS
使用这个参数去指定包括source table或文件的定义信息文件位置。
source定义信息在复制数据在异构的数据库的时候是必须。
使用这个参数在一个或者多个进程上,依赖于goldengate的配置:
1. target 系统上的replicat进程
2. source端或者中间层的data pump进程。

使用defgen工具去生成source -definition文件。

在启动datapump或者replicat进程前 传输这些文件到中间层或者target端

在有多个source-definitions文件的时候可以在parameter文件中使用多个sourcedefs子句。

Example 1 SOURCEDEFS dirdef\tcust.def
Example 2 SOURCEDEFS /ggs/dirdef/source_defs


*/


添加replicat进程




GGSCI (gg1) 12> ADD REPLICAT RDEXD1, EXTTRAIL dirdat/l2,checkpointtable dexter.cktptab
REPLICAT added.


创建上面指定checkpoint table

GGSCI (gg1) 14> dblogin userid dexter , password xiaojun
Successfully logged into database.

GGSCI (gg1) 15> add checkpointtable dexter.cktptab

Successfully created checkpoint table dexter.cktptab.



dexter@GG1> desc cktptab;
Name                                                                                          Null?    Type
--------------------------------------------------------------------------------------------- -------- ---------------------------------------------------------------
GROUP_NAME                                                                                    NOT NULL VARCHAR2(8)
GROUP_KEY                                                                                     NOT NULL NUMBER(19)
SEQNO                                                                                                  NUMBER(10)
RBA                                                                                           NOT NULL NUMBER(19)
AUDIT_TS                                                                                               VARCHAR2(29)
CREATE_TS                                                                                     NOT NULL DATE
LAST_UPDATE_TS                                                                                NOT NULL DATE
CURRENT_DIR                                                                                   NOT NULL VARCHAR2(255)
LOG_CSN                                                                                                VARCHAR2(129)
LOG_XID                                                                                                VARCHAR2(129)
LOG_CMPLT_CSN                                                                                          VARCHAR2(129)
LOG_CMPLT_XIDS                                                                                         VARCHAR2(2000)
VERSION                                                                                                NUMBER(3)

dexter@GG1> select * from cktptab ;



开启replicat进程


GGSCI (gg1) 16> START REPLICAT RDEXD1

Sending START request to MANAGER ...
REPLICAT RDEXD1 starting



GGSCI (gg1) 17> INFO ALL

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                          
REPLICAT    RUNNING     RDEXD1      13:40:35      00:00:00   


 
因为上面创建表的时候没有指定target b表的主键,所以这里重复的添加了记录


可以删除重复记录
然后设置primary key 


然后初始化加载后禁用掉这一特性

send replicat RDEXD1 NOHANDLECOLLISIONS dexter.r


send replicat RDEXD1 NOHANDLECOLLISIONS dexter.b


view report idexd1


stats idexd1




/************************


两端都定义好mgr的参数(至少定义好端口号)

ggsci

edit params mgr

port 8901

记得事先使用netstat -an 看一下端口是否已经被占用了




EXTRACT ext1
SETENV (ORACLE_HOME="/oracle/ora11g/product")
SETENV (ORACLE_SID="ora11src")
USERID ggs, PASSWORD ggs
RMTHOST sdtarget
RMTTRAIL /d1/oracle/ggs/dirdat/rt
TABLE scott.emp;






源端
添加提取进程:
GGSCI> add extract ext1,sourceistable  --没有 tranlog,意味着不是通过日志方式;没有 begin XXX,表示还未启动;使用sourceistable参数不会使用检查点机制
配置文件如下:
/***
extract ext1
userid ddw,password ddw
rmthost 192.168.0.44, mgrport 7401
rmttask replicat, group rept1  
table ddw.test;               
***/
不需要为该进程添加远端队列( rmttrail)。

目标端
添加复制应用进程:
add replicat rept1,specialrun   --表示一次性加载

/***
replicat rept1
assumetargetdefs       
userid ddw,password ddw
reperror default, discard                      
discardfile D:\reptmy.dsc,append,megabytes 100  
INSERTAPPEND                             --使用直接路径加载,提高加载速度
HANDLECOLLISIONS                         --当目标端已有数据时,略过重复数据错误
MAP ddw.test, TARGET ddw.test1;
***/

注意,这里的 extractreplicat 进程添加完后在 info all中看不到这个进程,但是 view report可以跟踪到。

要开始加载,在源端执行:
GGSCI> start exttmy
目标端的 replicat进程不需要去启动,会自动进行数据应用。
 

初始化加载


需要先有表结构



 add extract ext1,sourceistable

extract ext1 
userid gg,password gg
rmthost gg1,mgrport 8901
rmttask replicat,group rept1
table iotplatform.*;

add replicat rept1,specialrun

replicat rept1
assumetargetdefs
userid gg,password gg
reperror default,discard
insertappend
handlecollisions
map iotplatform.*,target gg.*;

inser





*/
*/
*/

另有一个用xmind做的Goldengate思维导图,有兴趣的可以下载。





以下为下载地址:
http://download.csdn.net/detail/renfengjun/9459274


0 0
原创粉丝点击