GoldenGate主要包含Manager进程、Extract进程、Pump进程、Replicat进程 Manager进程是GoldenGate的控制进程,它主要作用有以下几个方面:启动、监控、重启GoldenGate的其他进程,报告错误及时间,分配数据存储空间,发布阀值报告等。 Extract进程运行在数据库源端,负责从源端数据表或日志中捕获数据。Extract进程利用其内在的checkpoint机制,周期性地检查并记录其读写的位置,通常是写入到本地的trail文件。这种机制是为了保证如果Extract进程终止或者操作系统宕机,我们重启Extract进程后,GoldenGate能够恢复到以前的状态,从上一个断点处继续往下运行,而不会有任何数据损失。 Pump进程运行在数据库源端,其作用非常简单。如果源端使用了本地trail文件,那么Pump进程就会把Trail文件以数据块的形式通过TCP/IP协议发送到目标端,我们下面的配置都是这种方式。Pump进程本质是Extract进程的一种特殊形式,如果不使用Trail文件,那么Extract进程在抽取完数据后,直接投递到目标端。 与Pump进程相对应的叫Server Collector进程,这个进程不需要引起我们关注,因为在实际操作过程中无需对其进行任何配置,它运行在目标端,任务就是把Extract/Pump进程投递过来的数据块重新组装成Trail文件。 Replicat进程运行在目标端,是数据投递的最后一站,负责读取目标端Trail文件中的内容,并将解析其解析为DML或DDL语句,然后应用到目标数据库中。
1、
添加环境变量 export LIBPATH=$GGATE_HOME:$ORACLE_HOME/lib ---AIX 注意:添加后需使参数文件生效 HP及LINUX平台下用LD_LIBRARY_PATH替换LIBPATH GGSCI (localhost.localdomain) 4> create subdirs alter database force logging; --官方文档不是强制 http://t.askmaclean.com/thread-121-1-4.html Alter databaseadd supplemental log data; SQL> select NAME,LOG_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database; NAME LOG_MODE FOR SUPPLEME --------- ------------ --- -------- MKTDB4 ARCHIVELOG NO YES SQL> show parameter recy (oracle10g ogg需要禁用,oracle11g ogg不要求) alter system set recyclebin=off scope=spfile; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ buffer_pool_recycle string db_recycle_cache_size big integer 0 recyclebin string OFF CREATE USER GOLDENGATE IDENTIFIED BY VALUES '3F482E4566B47269' DEFAULT TABLESPACE NEWHC TEMPORARY TABLESPACE TEMP PROFILE DEFAULT ACCOUNT UNLOCK; -- 4 Roles for GOLDENGATE GRANT CONNECT TO GOLDENGATE; GRANT DBA TO GOLDENGATE; GRANT GGS_GGSUSER_ROLE TO GOLDENGATE; GRANT RESOURCE TO GOLDENGATE; ALTER USER GOLDENGATE DEFAULT ROLE ALL; -- 4 System Privileges for GOLDENGATE GRANT ALTER SESSION TO GOLDENGATE; GRANT CREATE ANY DIRECTORY TO GOLDENGATE; GRANT DROP ANY DIRECTORY TO GOLDENGATE; GRANT UNLIMITED TABLESPACE TO GOLDENGATE; -- 49 Object Privileges for GOLDENGATE GRANT SELECT ON SCOTT.EMP TO GOLDENGATE; GRANT EXECUTE ON SYS.DBMS_SESSION TO GOLDENGATE; GRANT SELECT ON SYS.ENC$ TO GOLDENGATE; GRANT READ, WRITE ON DIRECTORY GGS_DDL_TRACE TO GOLDENGATE WITH GRANT OPTION; GRANT EXECUTE ON SYS.UTL_FILE TO GOLDENGATE;2、
添加表级transdata GGSCI (localhost.localdomain) 4>dblogin userid ogg,password oracle Successfully logged intodatabase. GGSCI (localhost.localdomain) 4> add trandata XXX Logging of supplemental redo dataenabled for table XXX3、
配置源端进程组 GGSCI (localhost.localdomain) 8> view params mgr port 7809 DYNAMICPORTLIST 7840-7914 purgeoldextracts ./dirdat/*, usecheckpoints, minkeepdays 7 userid goldengate, password Ipwg63fgR purgeddlhistory minkeepdays 3, maxkeepdays 3 purgemarkerhistory minkeepdays 3, maxkeepdays 3 PORT:指定服务监听端口;默认端口为7809 DYNAMICPORTLIST:动态端口:可以制定最大256个可用端口的动态列表,当指定的端口不可用时,管理进程将会从列表中选择一个可用的端口,源端和目标段的Collector、Replicat、GGSCI进程通信也会使用这些端口; COMMENT:注释行,也可以用--来代替; AUTOSTART:指定在管理进程启动时自动启动哪些进程; --AUTOSTART ER * AUTORESTART:自动重启参数设置:本处设置表示每3分钟尝试重新启动所有EXTRACT进程,共尝试5次;--AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3 PURGEOLDEXTRACTS:定期清理trail文件设置:本处设置表示对于超过7天的trail文件进行删除。 LAGREPORT、LAGINFO、LAGCRITICAL: LAGREPORTHOURS 1 LAGINFOMINUTES 30 LAGCRITICALMINUTES 45 定义数据延迟的预警机制:本处设置表示MGR进程每隔1小时检查EXTRACT的延迟情况,如果超过了30分钟就把延迟作为信息记录到错误日志中,如果延迟超过了45分钟,则把它作为警告写到错误日志中。 start mgr info all4、
配置抽取进程: GGSCI(NDSCDB1) 12> add extract EXTNEW,tranlog,begin now EXTRACTadded. GGSCI(NDSCDB1) 14> add exttrail ./dirdat/ne,extract EXTNEW,megabytes 100 EXTTRAILadded. Megabytes:指定队列大小,本处设置表示100M。 GGSCI (localhost.localdomain) 10> view params EXTNEW extract extnew setenv ( NLS_LANG = AMERICAN_AMERICA.ZHS16GBK ) SETENV(ORACLE_HOME = "/u01/oracle/oracle/product/10.2.0/db_1") setenv (ORACLE_SID = "mktdb4") userid goldengate, password Ipwg63fgR REPORT AT 01:59 reportrollover at 02:00 TRANLOGOPTIONS CONVERTUCS2CLOBS --传输CLOB必须参数 discardfile ./dirrpt/extnew.dsc,append,megabytes 10 warnlongtrans 2h, checkinterval 3m ---ddl ddl include mapped OPTYPE alter OBJTYPE 'table' exclude mapped instr 'move TABLESPACE' include mapped optype truncate objtype 'table' include mapped OPTYPE alter OBJTYPE 'index' ddloptions addtrandata,nocrossrename,REPORT DBOPTIONS ALLOWUNUSEDCOLUMN exttrail ./dirdat/ne numfiles 8000 dynamicresolution --table TABLE NEWHC.CHAMPION_BUSINITEM_PUSH; TABLE NEWHC.CHAMPION_KEYWORD_PUSH; 配置DDL双向复制需要 TRANLOGOPTIONS EXCLUDEUSER goldengate IGNOREREPLICATES 添加传输进程,配置参数 GGSCI(NDSCDB1) 2> add extract DPENEW,exttrailsource ./dirdat/ne EXTRACTadded. GGSCI(NDSCDB1) 3> add rmttrail /oracle/gg/dirdat/ne, EXTRACT DPENEW RMTTRAILadded. GGSCI (localhost.localdomain) 12> view params DPENEW extract dpenew setenv ( NLS_LANG = AMERICAN_AMERICA.ZHS16GBK ) setenv (ORACLR_SID = "mktdb4") passthru REPORT AT 01:59 reportrollover at 02:00 rmthost 192.168.44.131, mgrport 7809, compress rmttrail /oracle/gg/dirdat/ne dynamicresolution numfiles 8000 --ddl table GOLDENGATE.GGS_MARKER; --table TABLE NEWHC.CHAMPION_BUSINITEM_PUSH; TABLE NEWHC.CHAMPION_KEYWORD_PUSH; 抽取进程和传输进程其实都是EXTRACT进程,也可以配置在一个进程完成这两个功能,但是当网络传输有问题时,这样抽取也就不能继续运行了,所以推荐分开配置为两个进程; EXTRACT进程参数配置说明: SETENV:配置系统环境变量 USERID/ PASSWORD:指定OGG连接数据库的用户名和密码 TABLE:定义需复制的表,后面需以;结尾 TABLEEXCLUDE:定义需要排除的表,如果在TABLE参数中使用了通配符,可以使用该参数指定排除掉得表。 GETUPDATEAFTERS|IGNOREUPDATEAFTERS: 是否在队列中写入后影像,缺省复制 GETUPDATEBEFORES| IGNOREUPDATEBEFORES: 是否在队列中写入前影像,缺省不复制 GETUPDATES|IGNOREUPDATES: 是否复制UPDATE操作,缺省复制 GETDELETES|IGNOREDELETES: 是否复制DELETE操作,缺省复制 GETINSERTS|IGNOREINSERTS: 是否复制INSERT操作,缺省复制 GETTRUNCATES|IGNORETRUNDATES: 是否复制TRUNCATE操作,缺省不复制; RMTHOST:指定目标系统及其GoldengateManager进程的端口号,还用于定义是否使用压缩进行传输,本例中的compress为压缩传输; RMTTRAIL:指定写入到目标断的哪个队列; EXTTRAIL:指定写入到本地的哪个队列; SQLEXEC:在extract进程运行时首先运行一个SQL语句; PASSTHRU:禁止extract进程与数据库交互,适用于Data Pump传输进程; REPORT:定义自动定时报告; STATOPTIONS:定义每次使用stat时统计数字是否需要重置; REPORTCOUNT:报告已经处理的记录条数统计数字; TLTRACE:打开对于数据库日志的跟踪日志; DISCARDFILE:定义discardfile文件位置,如果处理中油记录出错会写入到此文件中; DBOPTIONS:指定对于某种特定数据库所需要的特殊参数; TRANLOGOPTIONS:指定在解析数据库日志时所需要的特殊参数,例如:对于裸设备,可能需要加入以下参数 rawdeviceoggset 0 WARNLONGTRANS:指定对于超过一定时间的长交易可以在gsserr.log里面写入警告信息,本处配置为每隔3分钟检查一次场交易,对于超过2小时的进行警告;5、
配置目标数据库 create user ogg identified by oracle default tablespace DATA_OL; grant connect,resource,unlimited tablespace to ogg; grant execute on utl_file to ogg; grant select any dictionary,select any table to ogg; grant alter any table to ogg; grant flashback any table to ogg; grant execute on DBMS_FLASHBACK to ogg; grant insert any table to ogg; grant delete any table to ogg; grant update any table to ogg; 添加checkpoint表 EDIT PARAMS ./GLOBALS GGSCHEMA ogg CHECKPOINTTABLE ogg.checkpoint 退出 ll ll GLOBALS DBLOGIN USERID ogg, PASSWORD Welcome1 ADD CHECKPOINTTABLE add checkpointtable ogg.checkpoint6、
配置目标端进程组 配置复制进程 add replicat repl exttrail ./dirdat/ne,begin now,checkpointtable ogg.chkpoint GGSCI (trade3) 2> view params REPNEW replicat repnew setenv ( NLS_LANG = AMERICAN_AMERICA.ZHS16GBK ) setenv (ORACLE_SID = "mktdb4") userid goldengate, password Ipwg63fgR sqlexec "Alter session set constraints=deferred" REPORT AT 01:59 reportrollover at 02:00 discardrollover on friday reperror default,discard --ddl Ddl include mapped ddloptions report DDLERROR DEFAULT abend discardfile ./dirrpt/repnew.dsc,append, megabytes 10 assumetargetdefs allownoopupdates dynamicresolution numfiles 3000 insertappend batchsql HANDLECOLLISIONS maxtransops 5000 --grouptrans 5000 map NEWHC.CHAMPION_BUSINITEM_PUSH, target cxk.CHAMPION_BUSINITEM_PUSH; map NEWHC.CHAMPION_KEYWORD_PUSH, target cxk.CHAMPION_KEYWORD_PUSH; map NEWHC.SEND_ADDRESS, target cxk.SEND_ADDRESS; map NEWHC.BUSIN_ASSIGN_PROVIDER, target cxk.BUSIN_ASSIGN_PROVIDER; REPLICAT进程参数配置说明: ASSUMETARGETDEFS:假定两端数据结构一致使用此参数; SOURCEDEFS:假定两端数据结构不一致,使用此参数指定源端的数据结构定义文件,该文件需要由GlodenGate工具产生。 MAP:用于指定源端与目标端表的映射关系; MAPEXCLUDE:用于使用在MAP中使用*匹配时排除掉指定的表; REPERROR:定义出错以后进程的响应,一般可以定义为两种: ABEND,即一旦出现错误即停止复制,此为缺省配置; DISCARD,出现错误后继续复制,只是把错误的数据放到discard文件中。 DISCARDFILE:定义discardfile文件位置,如果处理中油记录出错会写入到此文件中; SQLEXEC:在进程运行时首先运行一个SQL语句; GROUPTRANSOPS:将小交易合并成一个大的交易进行提交,减少提交次数,降低系统IO消耗。 MAXTRANSOPS:将大交易拆分,每XX条记录提交一次。 start EXTNEW start DPENEW start REPNEW