GoldenGate配置从ADG抽取数据脚本示例

【安装过程】
在源端和目标端进行安装:
vi .bash_profile 添加
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export GGATE=/oracle/gg


解压到指定的目录下
cd /oracle/gg
./ggsci
GGSCI (fk-db1) 1> create subdirs


对源数据库设置补充日志,并开启归档模式和强制归档
SQL> alter database add supplemental log data;
SQL> alter system switch logfile;
SQL> alter database force logging;
SQL> select supplemental_log_data_min,log_mode,force_logging from v$database;


SUPPLEME LOG_MODE     FOR
-------- ------------ ---
YES      ARCHIVELOG   YES


一般为了在使用OGG同步数据时可以顺利进行,需要给予用户以下权限:
Onsource database (extract):
GRANT CREATE SESSION, ALTER SESSION,RESOURCE, CONNECT,SELECT ANY dictionary TO ogg;
GRANT flashback ANY TABLE, SELECT ANY TABLE TO ogg;
GRANT EXECUTE ON dbms_flashback TO ogg;


Ontarget (Replicat) database:
GRANT CREATE SESSION, ALTER SESSION,RESOURCE, CONNECT,SELECT ANY dictionary TO ogg;
GRANT SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE TO ogg;
GRANT CREATE TABLE, ALTER ANY TABLE,LOCK ANY TABLE TO ogg;
GRANT ALTER ANY TABLE TO ogg;


进行tnsnames.ora配置
LOCALDG =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localdg)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = newsdorc)
    )
  )


NEWSDORC =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = newsddb2-vip)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = newsddb1-vip)(PORT = 1521))
    (LOAD_BALANCE = no)
    (FAILOVER = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = newsdorc)
    )
  )






【配置过程】
在源端配置mgr
GGSCI (localdg) 2> edit params mgr
PORT 7809


GGSCI (localdg) 3> start mgr
GGSCI (localdg) 4> info mgr


Manager is running (IP port localdg.7809).


在目标端配置mgr
GGSCI (fk-db1) 2> edit params mgr
PORT 7809


GGSCI (fk-db1) 3> start mgr
GGSCI (fk-db1) 4> info mgr


Manager is running (IP port fk-db1.7809).






【初始化数据抽取】
可通过其他方式进行初始数据装载,这里用OGG推荐的方法(即INITIAL EXTRACT)一次性抽取,初始化源库到目标库的数据
GGSCI (localdg) 1> dblogin userid ogg@NEWSDORC,password ogg
Successfully logged into database.


GGSCI (localdg) 2> add trandata newsduser.a_rank


2015-12-07 16:50:20  WARNING OGG-00869  No unique key is defined for table 'A_RANK'. All viable columns will be used to represent the key, but may not guarantee uniqueness.  KEYCOLS may be used to define the key.


Logging of supplemental redo data enabled for table NEWSDUSER.A_RANK.




GGSCI (localdg) 4> info trandata newsduser.A_RANK
Logging of supplemental redo log data is enabled for table NEWSDUSER.A_RANK.


Columns supplementally logged for table NEWSDUSER.A_RANK: RANK, CLUB, QUOLIFIED.




源数据库增加extract进程组einit并配置参数
GGSCI (localdg) 5> add extract einit,sourceistable
EXTRACT added.


GGSCI (localdg) 6> edit params einit
extract eora
userid ogg@LOCALDG,password ogg
discardfile ./dirrpt/eora.dsc,purge,megabytes 200
warnlongtrans 2h,checkinterval 3m
exttrail ./dirdat/lt
PURGEOLDEXTRACTS ./dirdat/lt*, USECHECKPOINTS, MINKEEPDAYS 5
tranlogoptions minefromactivedg
TRANLOGOPTIONS DBLOGREADER
TRANLOGOPTIONS ASMUSER system@LOCALDG,ASMPASSWORD ORAcle_123
numfiles 3000
allocfiles 200
table newsduser.a_rank;


GGSCI (localdg) 7> info extract *,tasks


EXTRACT    EINIT     Initialized   2015-12-07 16:57   Status STOPPED
Checkpoint Lag       Not Available
Log Read Checkpoint  Not Available
                     First Record         Record 0
Task                 SOURCEISTABLE
看到Task SOURCEISTABLE




目标库增加replicat组rinit并配置参数
GGSCI (fk-db1) 1> add replicat rinit,specialrun
REPLICAT added.


GGSCI (fk-db1) 2> edit params rinit
replicat rora
userid ogg,password ogg
reperror default,discard
discardfile ./dirrpt/rora.dsc,append,megabytes 500
PURGEOLDEXTRACTS ./dirdat/rt*,usecheckpoints, minkeepdays 5
assumetargetdefs
allownoopupdates
numfiles 3000
map newsduser.*,target bbuser.*;


GGSCI (fk-db1) 3> info replicat *,task       


REPLICAT   RINIT     Initialized   2015-12-07 17:00   Status STOPPED
Checkpoint Lag       00:00:00 (updated 00:02:49 ago)
Log Read Checkpoint  Not Available
Task                 SPECIALRUN
看到Task SPECIALRUN


INITIALEXTRACT是通过配置rmttask参数来指定的,SOURCEISTABLE表示初始化整个表,SPECIALRUN表示只抽取一次,这个是OGG初始化抽取必须配置的几个参数,注意,此处不用配置EXTTRAIL/RMTTRAIL参数






启动源库extract并查看源库extract报告
GGSCI (localdg) 10> start extract einit


Sending START request to MANAGER ...
EXTRACT EINIT starting


GGSCI (localdg) 11> view report einit


查看目标库replicat报告
GGSCI (fk-db1) 6> view report rinit
       
注意:用INITIAL EXTRACT进行一次性抽取初始化数据时,目标库的replicat进程不用手动启动,只要源库的extract进程start以后,自动会同步到目标库,而且此时用info all是看不到extract和replicat进程的,只能看见mgr进程


通过replicat的report信息中已经知道,数据应该已经从源库同步到目标库了,现在通过查看目标库的测试表,发现数据确实已经同步过来了


至此,初始化数据装载结束。




【配置PUMP EXTRACT进程的增量数据同步】
GGSCI (localdg) 1> dblogin userid ogg@NEWSDORC,password ogg
GGSCI (localdg as ogg@newsdorc2) 2> add trandata newsduser.stluninf 


Logging of supplemental redo data enabled for table NEWSDUSER.STLUNINF.
TRANDATA for scheduling columns has been added on table 'NEWSDUSER.STLUNINF'.
GGSCI (localdg as ogg@newsdorc2) 78> add trandata newsduser.stluninf_his




先修改原extract配置文件eora:
GGSCI (localdg) 1> edit params eora
extract  eora
userid ogg,password ogg
--rmthost 192.168.40.96,mgrport 7809 --注释掉
--rmttrail ./dirdat/rt --注释掉
exttrail ./dirdat/lg --添加此行,用于pump方式
table wxuser.t_test;


新增pump进程并修改参数
GGSCI (localdg) 3> add extract pora,exttrailsource ./dirdat/lt  ----添加本地trail(ltxxxxxx) 
EXTRACT added.
注意:这里其实是指定在extract eora中配置的本地路径,所以用了exttrailsource,如果之前没有用add extract eora,exttrail./dirdat/lt创建过本地trail的话,那么该条命令就新建一个;有的话,就指定一下。注意2个extract用的参数是不同的




GGSCI (localdg) 4> edit params pora
extract pora
rmthost 192.168.40.96,mgrport 7809
rmttrail ./dirdat/rt
passthru --直接传递,不检测
table wxuser.t_test;
相当于原来配置在eora抽取进程中备注释掉的2行参数挪动到了这里,因为现在是通过PUMP进程pora与远端进行通信


GGSCI (localdg) 5> add rmttrail ./dirdat/rt,extract pora  --添加远端trail(rtxxxxxx)
RMTTRAIL added.


配置完pump进程pora后,启动该进程
GGSCI (localdg) 6> start pora
如目标端无法同步,可试着重启对应的replicat服务


此时,PUMP EXTRACT进程的同步结束。




【补充说明】
OGG主要进程作用说明:
Manager:是GoldenGate的控制进程,运行在源端和目标端上。它主要作用有以下几个方面:启动、监控、重启Goldengate的其他进程,报告错误及事件,分配数据存储空间,发布阀值报告等。在目标端和源端有且只有一个manager进程.


Extract:运行在数据库源端,负责从源端数据表或者日志中捕获数据。
初始时间装载阶段:在初始数据装载阶段,Extract进程直接从源端的数据表中抽取数据
同步变化捕获阶段:初始数据同步完成以后,Extract进程负责捕获源端数据的变化(DML和DDL)


Pump(可选):运行在数据库源端,其作用是将源端产生的本地trail文件,把trail以数据块的形式通过TCP/IP 协议发送到目标端,这通常也是推荐的方式。pump进程本质是extract进程的一种特殊形式,如果不使用trail文件,那么extract进程在抽取完数据以后,直接投递到目标端,生成远程trail文件。如果要使用pump,必须配置本地trail,否则不用。


Collector:与 Pump进程对应 的叫Server Collector进程,这个进程不需要引起我的关注,因为在实际操作过程中,无需我们对其进行任何配置,所以对我们来说它是透明的。它运行在目标端,其任务就是把Extract/Pump投递过来的数据重新组装成远程trail文件。


Replicat:通常我们也把它叫做应用进程。运行在目标端,是数据传递的最后一站,负责读取目标端trail文件中的内容,并将其解析为DML或DDL语句,然后应用到目标数据库中。














在应用OGG的时候只有commit后,事务处理造成变化的数据才会被同步到目标库,当问题出现时,如某个extract进程不能START,一直是ABENDED状态等,最简单的方法就是直接查看某个进程的报告,里面有详细的消息日志信息,会提示你可能是什么原因造成的错误,以及如何解决等信息,除了report,其实还可以在info中加入detail参数,如下:
GGSCI(localdg) 11> info eora,detail


所有的错误在GGHOME下相应的目录中都是有记录的,常用的是ggserr.log,查看这个log文件就可以分析并解决错误了
另外,借助OGG自带的工具logdump,可以通过查看trail文件具体的内容,一定程度上也可以帮你辅助分析OGG在同步过程中发生了什么,帮助你加深理解OGG的同步流程。
具体如何使用可以查阅OGG官方文档e27273.pdf,以下是链接:
http://docs.oracle.com/cd/E28323_01/doc.1121/e27273.pdf












GGSCI (fk-db1) 71>   alter replicat rora extseqno 0,extrba 0
REPLICAT altered.




GGSCI (fk-db1) 72> start rora


Sending START request to MANAGER ...
REPLICAT RORA starting




GGSCI (fk-db1) 73> info all


Program     Status      Group       Lag at Chkpt  Time Since Chkpt


MANAGER     RUNNING                                           
REPLICAT    RUNNING     RORA        00:00:00      00:00:00    




GGSCI (fk-db1) 74> info all


Program     Status      Group       Lag at Chkpt  Time Since Chkpt


MANAGER     RUNNING                                           
REPLICAT    RUNNING     RORA        00:00:00      00:00:02    




GGSCI (fk-db1) 75> info all


Program     Status      Group       Lag at Chkpt  Time Since Chkpt


MANAGER     RUNNING                                           
REPLICAT    RUNNING     RORA        00:00:00      00:00:02    




GGSCI (fk-db1) 76> stats rora


Sending STATS request to REPLICAT RORA ...


Start of Statistics at 2016-01-12 15:19:57.


Replicating from NEWSDUSER.A_RANK to BBUSER.A_RANK:


*** Total statistics since 2016-01-12 15:18:50 ***
        Total inserts                                      1.00
        Total updates                                      0.00
        Total deletes                                      2.00
        Total discards                                     0.00
        Total operations                                   3.00


*** Daily statistics since 2016-01-12 15:18:50 ***
        Total inserts                                      1.00
        Total updates                                      0.00
        Total deletes                                      2.00
        Total discards                                     0.00
        Total operations                                   3.00


*** Hourly statistics since 2016-01-12 15:18:50 ***
        Total inserts                                      1.00
        Total updates                                      0.00
        Total deletes                                      2.00
        Total discards                                     0.00
        Total operations                                   3.00


*** Latest statistics since 2016-01-12 15:18:50 ***
        Total inserts                                      1.00
        Total updates                                      0.00
        Total deletes                                      2.00
        Total discards                                     0.00
        Total operations                                   3.00


End of Statistics.




      RANK CLUB                             QUOLIFIED
---------- -------------------------------- --------------------------------
         1 Chelsea                          Champions League
         2 Manchester City                  Champions League
         3 Manchester United                Champions League
         4 Arsenal FC                       Champions League
         5 Lechester City                   Europa League 
         






【参数文件示例】
GGSCI (localdg) 4> view params eora_b


extract eora_b
userid ogg@LOCALDG,password ogg
discardfile ./dirrpt/eora_b.dsc,purge,megabytes 200
warnlongtrans 2h,checkinterval 3m
exttrail ./dirdat/lb
PURGEOLDEXTRACTS ./dirdat/lb*, USECHECKPOINTS, MINKEEPDAYS 5
tranlogoptions minefromactivedg
TRANLOGOPTIONS DBLOGREADER
TRANLOGOPTIONS ASMUSER system@LOCALDG,ASMPASSWORD ORAcle_123
numfiles 3000
allocfiles 200
GETUPDATES
GETINSERTS
IGNOREDELETES
table newsduser.postxnjnlhis;




GGSCI (localdg) 5> view params pora_b


extract pora_b
rmthost 192.168.40.94,mgrport 7809
passthru
rmttrail ./dirdat/rb
numfiles 3000
table newsduser.postxnjnlhis;


远端
GGSCI (fk-db1) 23> view params rora_b


replicat rora_b
userid ogg,password ogg
reperror default,discard
discardfile ./dirrpt/rorab.dsc,append,megabytes 500
PURGEOLDEXTRACTS ./dirdat/rb*,usecheckpoints, minkeepdays 5
assumetargetdefs
allownoopupdates
numfiles 3000
map newsduser.*,target bbuser.*;




【在原有基础上新增表】
配置完成后要添加表,只需进行以下步骤         
GGSCI (localdg) 75> dblogin userid ogg@NEWSDORC,password ogg
Successfully logged into database.


GGSCI (localdg as ogg@newsdorc2) 76> add trandata newsduser.stluninf;
ERROR: No viable tables matched specification.


GGSCI (localdg as ogg@newsdorc2) 77> add trandata newsduser.stluninf 


Logging of supplemental redo data enabled for table NEWSDUSER.STLUNINF.
TRANDATA for scheduling columns has been added on table 'NEWSDUSER.STLUNINF'.
GGSCI (localdg as ogg@newsdorc2) 78> add trandata newsduser.stluninf_his


Logging of supplemental redo data enabled for table NEWSDUSER.STLUNINF_HIS.
TRANDATA for scheduling columns has been added on table 'NEWSDUSER.STLUNINF_HIS'.


修改params,添加表。
重启服务。




【问题】
stop relicat rora_b
alter replicat rora_b extseqno 443, extrba 0
start replicat rora_b

你可能感兴趣的:(GoldenGate配置从ADG抽取数据脚本示例)