OGG配置

  1. 云栖社区>
  2. 袋鼠云技术团队>
  3. 博客>
  4. 正文

OGG配置

持续高温 2018-03-25 23:21:57 浏览1670

ogg实现方式

①源端日志抽取进程抽取日志

②源端推送进程pump

③目的端复制文件到目标库


一、配置

平台 linux x86_64

oracle 11.2.0.4

二、配置OGG

1、配置网络互通

2、安装ogg

  ①创建目录/u01/app/ogg

  ②解压缩软件

     tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar -C /u01/app/ogg

3、修改环境变量:

      vi .bash_profile

      export LD_LIBRARY_PATH=$ORACLE_HOME/lib

     否则,运行ggsci时报如下错误:

     ./ggsci: error while loading shared libraries: libnnz11.so: cannot open shared object file: No such file or directory

4、创建子目录:

    oracle:

       cd /u01/app/ogg

       ./ggsci

       GGSCI>create subdirs

       7d3a2a0dff1278539cd948c59e2aa8fbae2eda75


5、创建用户ogg并授权,收回unlimited tablespace权限

   create user ogg identified by ogg;

   grant resource,connect to ogg;

   grant select any dictionary to ogg;

   (grant all on scott.emp1 to ogg;  //在scott创建了表之后赋予权限

    grant all on scott.dept1 to ogg;)

   revoke unlimited tablespace from ogg;

   alter user ogg quota unlimited on users;  //让用户ogg在users表空间上有权限

   

6、scott用户创建emp1和dept1表,加上约束(目标库上只要结构,没有数据)

源端:

create table emp1 as select * from emp;

create table dept1 as select * from dept;

alter table emp1 add constraints empno_pk primary key(empno);

alter table dept1 add constraints deptno_pk primary key(deptno);

alter table emp1 add constraints deptno_fk foreign key(deptno) references dept1(deptno);

目标端:

create table emp1 as select * from emp where 1=2;

create table dept1 as select * from dept where 1=2;

alter table emp1 add constraints empno_pk primary key(empno);

alter table dept1 add constraints deptno_pk primary key(deptno);

alter table emp1 add constraints deptno_fk foreign key(deptno) references dept1(deptno);

7、启用补充日志并切换日志

     alter database add supplemental log data;

     alter system switch logfile;(alter system archive log current)

8、源库启用强制日志,若单向复制,目的库可不启用强制日志。

   使用gg的add trandata启用表的补充日志。这种情况是强制记录了表的主键日志:

     GGSCI(source)>dblogin userid ogg password ogg

     GGSCI(source)>add trandata scott.emp1

     GGSCI(source)>add trandata scott.dept1

   

   82a90d902b947ae6f189eb77c497c94cd1572b88

   上述过程,也可以使用sql命令完成:

       SQL>alter table scott.emp1 add supplemental log group  ggs_emp1_12345(empno) always;

    查看可通过dba_log_groups视图。

    但使用sql命令的方式,gg配置中缺失: GGSCI>info trandata scott.*

9、配置manager进程(源端和目标端都要做)

    ggsci

    edit params mgr

     port 7809

     PURGEOLDEXTRACTS /u01/ogg/dirdat,USECHECKPOINTS  //该行表明,使用检查点为检查手段,删除不再使用的trail文件。

    启动管理进程:

     start mgr

    使用info命令查看管理进程的启动状态:

     info mgr (detail)   //detail是查看详细信息

    使用view report查看管理进程报告:

     view report mgr

    28c1af9437e06cc4a955c59c4247d244f9471df3

    d02c196cb3c27e5597d2f54a790f33cec22fbdf9

    d549ba1bca3e0a76f4a7a23b9b45b14167ecdbe1



********************************配置源端日志抽取进程********************************

10、源端配置日志抽取进程:

①配置日志抽取配置文件:

    edit params eora_1

     extract eora_1

     userid ogg,password ogg

     exttrail /u01/app/ogg/dirdat/aa   (本地trail文件,aa是前缀,只能是2个字符)

     table scott.dept1;

     table scott.emp1;

    保存退出。上述命令,配置的抽取进程组名为eora_1,taril文件的前缀为aa,GG自动加上6位数字,从000000开始,到

   999999,之后再循环。table参数表示只处理定义的表,具体到本示例,只处理scott.emp1和scott.dept1,注意:分号

   的使用

②增加抽取的进程组

      add extract eora_1,tranlog,begin now

③定义本地trail文件

      add exttrail ./dirdat/aa,extract eora_1,megabytes 10   //exttrail文件缺省大小就是10M

④启动抽取进程:

      start extract eora_1

⑤使用info命令查看抽取进程是否工作正常,可以加detail参数查看详细信息:

      info extract eora_1 (detail)   //extract写不写都可以,名字唯一就可以不写extract

      日志在dirrpt目录下

      操作系统下,查看aa000000文件已产生。

      cd /u01/app/ogg/dirdat

         ls -l

     5b5366caaf2700e8c71d742f2ed84589b984766e

     50d66546a43ea92a44511e206bebb59a5faace9b

     

⑥使用view report查看产生的报告:

         GGSCI(source)>view report eora_1


-------------------------------------配置源端推送进程pump-----------------------------

11、配置源端推送进程pump

①源端配置pump配置文件:

  GGSCI(source)>edit params pora_1

     extract pora_1

     passthru

     rmthost ogg2,mgrport 7809          

     rmttrail /u01/app/ogg/dirdat/pa

     table scott.dept1;

     table scott.emp1;


     存盘退出。pump是另一种类的抽取进程,该进程中不能定义SETENV NLS_LANG。passthru表示不在源和目的之间做任何的筛选或字段匹配。源和目的的数据结构完全相同。

②增加pump进程组:

 GGSCI(source)>add extract pora_1,exttrailsource /u01/app/ogg/dirdat/aa

   增加远程trail文件

 GGSCI(source)>add rmttrail /u01/app/ogg/dirdat/pa,extract pora_1,megabytes 10

③启动传输进程

 GGSCI(source)>start extract pora_1

④使用info命令查看传输进程是否工作正常,可以加detail参数查看详细信息:

 GGSCI(source)>info extract pora_1[,detail]

   其中的status应是RUNNING才对

   日志在dirrpt目录下。

   操作系统下,查看目的库,pa000000文件已产生。

   cd /u01/app/ogg/dirdat

    ls -l

   5d59fbb1615b3bce21bd32dfa4a0b7119a799be7

   

⑤使用view report查看产生的报告:

  GGSCI(source)>view report pora_1


**************************************配置初始同步装载**************************************

12、配置初始装载数据:

   初始装载不需要pump,直接载入目的数据库。注意:初始装载要在日志抽取之后做,目的是为了在装载的过程中,数据的变化也被记录下来。

---------------------------------------配置源端----------------------------------------------

①配置初始装载配置文件:

 GGSCI(source)>edit params eini_1

    extract  eini_1

    userid ogg,password ogg

    rmthost wangrb,mgrport 7809          

    rmttask  replicat,group rini_1

    table scott.dept1;       //按顺序写表时看清主外键约束,避免初始不成功

    table scott.emp1;

   存盘退出。

②增加装载的组:

 GGSCI(source)>add extract eini_1,sourceistable

③使用info命令和view report命令查看装载配置,注意:装载尚未启用

   info eini_1

   view report eini_1

---------------------------------------配置目的端--------------------------------------------------------

④配置初始复制配置文件:

 GGSCI(target)>edit params rini_1     // 注意:和源端配置中的指定组名匹配

    replicat  rini_1                 //目的端不是抽取(extract),而是复制(replicat)

    assumetargetdefs                 //使用它时,目的端和源端的数据结构相同                                   

    userid ogg,password ogg 

    discardfile /u01/app/ogg/dirrpt/Riniaa.dsc,purge         

    map scott.*,target scott.*;

       存盘退出。

⑤增加复制的组:

  GGSCI(target)>add replicat rini_1,specialrun          specialrun表明是初始复制

⑥使用info命令和view report命令查看复制配置,注意:复制尚未启用,事实上,目的端不需要启动

---------------------------------------开始装载-----------------------------------------------------

⑦在源端启动初始装载:

 GGSCI(source)>start extract eini_1

⑧使用info及view report查看结果状态。

   注意:由于emp1表和dept1表之间存在主外键约束,会报错, 找不到父项关键字。可以修改源端的配置文件,将dept1表放在前,也可以使用sql命令先禁用此约束。事实上ogg也可使约束无效。

⑨到目标端查看emp1表和dept1表,这时可以看到有数据存在

89642ff088b92badfa071e0171849df2da323f7c

e2d34ce024fdbb67e2deedd4854242a2ed21b89f

****************************************目的端配置复制**************************************************

13、在目的端增加检查点表:

①配置文件,名字必须为GLOBAL,内容可以只有一行:

  GGSCI(target)>edit params /u01/app/ogg/GLOBALS

    checkpointtable ogg.ggschkpt

  这就在ogg的安装目录下,创建了GLOBALS文件。GLOBALS文件是全局文件,对所有的组都有效

②连接数据库,建立检查点表:

    exit(退出去重新登陆)

  GGSCI(target)>dblogin userid ogg,password ogg

    GGSCI(target)>add checkpointtable

14、启用目的端的复制:

①配置复制配置文件:

  GGSCI(target)>edit params rora_1                       

    replicat rora_1                                                   

    assumetargetdefs

    handlecollisions               //表示自动处理冲突的情况                                                                         

    userid ogg,password ogg 

    discardfile /u01/app/ogg/dirrpt/Riniaa.dsc,purge         

    map scott.dept1,target scott.dept1;

    map scott.emp1,target scott.emp1;

   存盘退出。

②增加复制组:

 GGSCI(target)>add replicat rora_1,exttrail u01/app/ogg/dirdat/pa

③启动复制:

  GGSCI(target)>start replicat rora_1

④使用info命令和view report命令检查

61443b7981df7318e0c97fd777100bfa7744b595