ogg112101同构部署for_oracle11gr2
TABLE:源端要初始化数据的表的名字 编辑好捕获进程EINI_1后,还需要在目标端配置REPLICAT应用进程,名字要和源端的捕获进程EINI_1里面RMTTASK REPLICAT参数配置的一样,也就是还需要在目标端配置RMTTASK REPLICAT RINI_1。? ? 2.17配置目标端初始化REPLICAT进程? --目标端:? --HANDLECOLLISIONS 配置dml ADD REPLICAT RINI_1,SPECIALRUN EDIT PARAMS RINI_1? ? REPLICAT RINI_1? SETENV (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)? ASSUMETARGETDEFS? HANDLECOLLISIONS USERID ogg,PASSWORD oracle DISCARDFILE /ogg/dirrpt/RINIaa.dsc,PURGE? MAP test.test_ogg,TARGET test.test_ogg;? MAP test.dep_ogg,TARGET test.dep_ogg;? ? --参数介绍:? REPLICAT RINI_1:说明这是REPLICAT应用进程,名字叫RINI_1? SETENV:语言变量,同捕获进程EINI_1? ASSUMETARGETDEFS:告诉OGG目标端和源端需要同步的表的结构完全一致,不需要OGG去检查表的结构,包括表名、字段名、字段类型、字段长度等,如果目标端和源端同步的表的结构不一样,需要使用SOURCEDEFS参数,详见OGG官方文档。? USERID、PASSWORD:同捕获进程EINI_1参数介绍? DISCARDFILE:错误信息存放位置及命名规则? MAP:源端捕获的表的名字? TARGET:目标端同步的表的名字,可以不在同一SCHEMA。? ? 2.18初始化数据? --启动源端的捕获进程,而目标端的应用进程RINI_1,不需要手动去启动 START EXTRACT EINI_1? VIEW REPORT EINI_1? ? --如果日志的最后部分出现ERROR,就需要去检查OGG的安装目录下的ggserr.log日志,这个日志相当于数据库的告警日志。? Output to RINI_1:? From Table SCOTT.EMP_OGG:? # inserts: 14? # updates: 0? # deletes: 0? # discards: 0? From Table SCOTT.DEPT_OGG:? # inserts: 4? # updates: 0? # deletes: 0? # discards: 0? REDO Log Statistics? Bytes parsed 0? Bytes output 3056? ? 2.19验证初始化数据? --登录目标端数据库,查看初始化是否成功。? select * from test.emp_ogg;? select * from test.dep_ogg;? ? --初始化之后,上文提到的初始化进程(EINI_1、RINI_1)自动停止,因为通常情况下初始化数据工作只会做一次。可以通过INFO命令查看进程的状态 --源端:? INFO EXTRACT EINI_1? ? --目标端:? INFO REPLICAT RINI_1? ? 2.20源端和目标端配置OGG的检查点? --此步骤不是必须的,但是为了让OGG网络中断、服务器宕机、掉电等在突发情况也能正确断点续传 --源端和目标端都需配置。? EDIT PARAMS ./GLOBALS? ? CHECKPOINTTABLE ogg.ggschkpt? ? --需要使用OGG用户登录数据库,创建检查点表ogg.ggschkpt,此时需要退出OGG,重新登录,否则可能会遇到下面的错误。? GGSCI (stream) 4> ADD CHECKPOINTTABLE? ERROR: Missing checkpoint table specification.? ? --退出OGG,重新登录,并使用OGG用户登录数据库,源端和目标端都需要执行。? exit? ./ggsci? DBLOGIN USERID ogg,PASSWORD oracle? --只需要执行ADD CHECKPOINTTABLE命令,OGG会自动在ORACLE的OGG用户下创建检查点,源端和目标端都需要执行。? ADD CHECKPOINTTABLE? --若需要删除检查点表 --delete checkpointtable ? --此时用OGG登录数据库,就可以看到OGG创建的检查点表 conn ogg/oracle? select * from tab;? ? /* --若用expdp初始化数据 su - oracle mkdir -p /home/oracle/dumpdir sqlplus / as sysdba create or replace directory dump as ‘/home/oracle/dumpdir‘; grant read,write on directory dump to public; ? --初始化数据(source) select current_scn from v$database; SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER? FROM DUAL; ? --使用exp或expdp导出数据,对于导出用户需要具备DBMS_FLASHBACK包的执行权限 GRANT EXECUTE ON DBMS_FLASHBACK TO test; ? exp system/[email?protected] file=test_SBDC_4ZBR2HA47OTD67UM.dmp log=test_SBDC_4ZBR2HA47OTD67UM.log tables=test.SBDC_4ZBR2HA47OTD67UM feedback=1000 flashback_scn=1102175 scp test_SBDC_4ZBR2HA47OTD67UM.dmp [email?protected]:/home/oracle --delete from test.SBDC_4ZBR2HA47OTD67UM; --commit; imp system/[email?protected] file=test_SBDC_4ZBR2HA47OTD67UM.dmp log=test_SBDC_4ZBR2HA47OTD67UM.log tables=test.SBDC_4ZBR2HA47OTD67UM data_only=y feedback=1000 ? --或者用expdp expdp ‘system/[email?protected]‘ directory=dump dumpfile=SBDC_4ZBR2HA47OTD67UM_1.dmp tables=test.SBDC_4ZBR2HA47OTD67UM flashback_scn=1102175 scp /home/oracle/dumpdir/SBDC_4ZBR2HA47OTD67UM_1.dmp [email?protected]:/home/oracle/dumpdir --delete from test.SBDC_4ZBR2HA47OTD67UM; --commit; impdp ‘system/[email?protected]‘ directory=dump dumpfile=SBDC_4ZBR2HA47OTD67UM_1.dmp tables=test.SBDC_4ZBR2HA47OTD67UM content=data_only */ ? 2.21源端配置捕获进程? --现在已经可以配置数据同步了,下面在源端配置捕获进程。? --参数介绍:? --以上参数基本都在上文提过,这里不在重复,说下EXTTRAIL参数,EXTTRAIL参数是TRAIL队列文件存放的路径和命名格式, --TRAIL文件可以理解为存放捕获进程捕获的日志文件。此时还需要将捕获进程EORA_1添加到OGG --keycols若不制定则默认为所有列,仍可支持无主键的表update同步 --table IJX130355.T_BESNS_INTEGRAL_RG,keycols (LOGDATE,STUDENT_ID); EDIT PARAMS EORA_1? ? EXTRACT EORA_1? SETENV (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)? USERID ogg,PASSWORD oracle? EXTTRAIL /ogg/dirdat/aa? TABLE test.test_ogg;? TABLE test.dep_ogg; ? --捕获进程从启动起开始捕获,捕获数据保存到TRAIL文件,及TRAIL文件的路径、命名格式,单个TRAIL文件最大大小。 ADD EXTRACT EORA_1,TRANLOG,BEGIN NOW? ADD EXTTRAIL /ogg/dirdat/aa,EXTRACT EORA_1,MEGABYTES 5? START EXTRACT EORA_1? INFO EXTRACT EORA_1? ? 2.22源端配置PUMP传输进程? --此步骤也是非必须的,如果不配置传输进程,OGG会通过EXTRACT进程传输TRAIL队列文件,但是和检查点队列一样,为了保证断点续传ORACLE建议配置PUMP传输进程。? EDIT PARAMS PORA_1? ? EXTRACT PORA_1? SETENV (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)? PASSTHRU? RMTHOST 192.168.92.101,MGRPORT 7809? RMTTRAIL /ogg/dirdat/pa? TABLE test.test_ogg;? TABLE test.dep_ogg;? ? --添加PUMP进程PORA_1到OGG,并指定本地的TRAIL文件。? ADD EXTRACT PORA_1,EXTTRAILSOURCE /ogg/dirdat/aa? INFO EXTRACT PORA_1? --为PUMP进程PORA_1指定将本地TRAIL文件传输到目标端后保存成目标端TRAIL文件的名字。? ADD RMTTRAIL /ogg/dirdat/pa,EXTRACT PORA_1,MEGABYTES 5? START EXTRACT PORA_1? INFO EXTRACT PORA_1? --此时在目标端/ogg/dirdat/目录下,就会看到由源端PUMP进程PORA_1传输过来的TRAIL文件。? SQL> ho ls -l /ogg/dirdat pa000000? ? DBLOGIN USERID ogg,PASSWORD oracle? VIEW REPORT EORA_1 VIEW REPORT PORA_1 ? 2.23目标端配置同步进程RORA_1。若报错表test.SYS_EXPORT_不存在,则添加 mapexclude test.SYS_EXPORT_*; --HANDLECOLLISIONS? 配置dml同步 --ADD REPLICAT RORA_1,SPECIALRUN? --add replicat rotomy,exttrail ./dirdat/rm,checkpointtable test.chkpt --不需要追加checkpointtable ogg.CHECKTABLE,默认用前面创建的checkpointtable add replicat RORA_1,exttrail /ogg/dirdat/pa EDIT PARAMS RORA_1? ? REPLICAT RORA_1? SETENV (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)? USERID ogg,PASSWORD oracle? HANDLECOLLISIONS? ASSUMETARGETDEFS? DISCARDFILE /ogg/dirrpt/RORA_aa.DSC,TARGET test.dep_ogg;? ? --目标端编辑同步进程RORA_1后,就可以启动RORA_1进程。? START REPLICAT RORA_1? --alter replicat repfull,extseqno 1,extrba 0 --alter replicat RORA_1,extrba 0 ? INFO REPLICAT RORA_1 --ERROR OGG-00446 Invalid data source -1 in checkpoint file /u01/app/ogg/dirchk/RORA_1.cpr. DBLOGIN USERID ogg,PASSWORD ogg? VIEW REPORT RORA_1 --若报错无检查表,则创建 --ERROR OGG-00446 Checkpoint table ogg.CHECKTABLE does not exist.Please create the table or recreate the RORA_1 group using the correct table. ADD CHECKPOINTTABLE ogg.CHECKTABLE ? --查询进程状态 status pora_1 --查询进程传输数据信息 stats pora_1 --source process INFO EXTRACT EORA_1? INFO EXTRACT PORA_1? VIEW REPORT EORA_1 VIEW REPORT PORA_1 ? info extract E1,showch info extract E1,detail ? --常用维护命令 alter EXTRACT EXT_TC etrollover --ETROLLOVER needed to convert 6 digit checkpoint to 9 digits as well as GG version 12.2 alter ext E1 etrollover info extract E1,detail info extract E1,showch alter ext P1,extseqno xx,extrba 0 --查询错误日志 tail -f ggserr.log ? 3. 验证OGG复制 --测试DML和DDL insert into test.test_ogg select 2,‘n1‘ from dual; commit; ? insert into test.test_ogg select 3,‘n3‘ from dual; commit; ? update test.test_ogg set name=‘n2‘ where id=2; commit; ? delete from test.test_ogg t where id=2; commit; ? select * from test.test_ogg; ? -- insert into test.dep_ogg select 2,‘d1‘ from dual; commit; ? insert into test.dep_ogg select 3,‘d3‘ from dual; commit; ? update test.dep_ogg set DEPNAME=‘d2‘ where depno=2; commit; ? delete from test.dep_ogg t where depno=2; commit; ? select * from test.dep_ogg; ? ------------------------------------------------------------------------------------------------ OGG配置文件—MANAGER 一、PORT 对于需要与远程进程要求动态服务的交互管理进程,使用PORT参数去指定一个TCP/IP端口号,常用于初始化加载复制或者采集进程。也可以使用默认的端口。请保证这些端口没有受到防火墙等设备的阻挡 port 7809 ? 二、DYNAMICPORTLIST 使用DYNAMICPORTLIST参数去指定一个可用端口列表,它可使用于以下本地OGG进程对于与远程OGG进程通信的绑定。 采集器(Collector):与远程抽取进程通信进行获取输入数据。 复制器(Replicat):与远程抽取进程通信获取数据在初始化载入任务时。 过时抽取(Passive Extract):与远程收集器通信 GGSCI:输入远程命令 指定足够端口去容纳进程数的扩张不需要停止和重启管理器去将它们添加到列表里。你可以指定一个私有的端口,范围端口或者两者都可以。 <port>一端口号可以被分配的。最大的端口条目数是5000。 #指定多个端口,使用一个,分隔,比如: dynamicportlist 7830,7833 #指定范围端口,使用-去分离第一个和最后一个端口。在-前后不要隔开它们。比如 dynamicportlist 7830-7835 #指定一范围端口加上一个独立端口,放置一个,在范围和独占端口之间,比如: dynamicportlist 7830-7835,7839 ? 三、AUTOSTART 当管理器启动时使用AUTOSTART参数去启动一些或多个抽取和复制进程。AUTOSTART确保没有进程组会被忽略并且在启动时候同步激活的。 (编辑:源码网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |