ogg介绍

目录

  1. dirprm
  2. 用于存放GG的参数文件,这些参数文件可以通过系统文本编辑器直接编辑,也可以通过在ggsci命令行下edit params来编辑,达到的效果是一样的。
  3. dirrpt
  4. 用于存放各个进程的报告文件,内容为extractreplicatmanager进程运行相关的统计报告信息。
  5. dirpcs
  6. 用于存放各个进程的状态信息,当相关进程运行的时候,这些进程的相关信息,比如程序名称,进程名称,进程监听端口,进程ID等等都将被写入各自状态信息文件。
  7. dirdef
  8. 用于存放由DEFGEN组件创建的定义文件,包含在异构环境同步中的源或者目标端的数据定义。
  9. dirdat
  10. 用于存放GG跟踪文件和由extract进程创建的抽取文件
  11. dirchk
  12. 用于存放由extract抽取进程和replicat复制进程创建的checkpoint文件
  13. dirtmp
  14. 临时文件目录,不要编辑里面的任何文件和内容

参数分类

  1. 1.GLOBALS参数
  2. 2.Manager参数
  3. 3.Extract参数
  4. 4.Replicat参数
  5. 5.ExtractReplicat共同参数
  6. 6.DEFGEN参数

GLOBALS配置文件

  1. GGSCHEMA
  2. --goldengate用户
  3. CHECKPOINTTABLE
  4. --checkpoint
  5. MGR配置文件
  6. port 7839
  7. --Manager使用的端口
  8. DYNAMICPORTLIST 7840-7849
  9. --ExtractData PumpReplicat使用的动态端口范围
  10. AUTOSTART ER *
  11. --MGR启动时自动启动所有进程
  12. AUTOSTART EXTRACT *
  13. --自动启动所有的Extract进程
  14. AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 7
  15. --自动重启所有的Extract进程,每隔7分钟重试,重试次数5
  16. purgeoldextracts /u01/app/ogg/dirdat/*,usecheckpoints,minkeepdays 3
  17. --定期清除队列文件,保留期限为3天

mgr配置文件

  1. MGR配置文件
  2. port 7839
  3. --Manager使用的端口
  4. DYNAMICPORTLIST 7840-7849
  5. --ExtractData PumpReplicat使用的动态端口范围
  6. AUTOSTART ER *
  7. --MGR启动时自动启动所有进程
  8. AUTOSTART EXTRACT *
  9. --自动启动所有的Extract进程
  10. AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 7
  11. --自动重启所有的Extract进程,每隔7分钟重试,重试次数5
  12. purgeoldextracts /u01/app/ogg/dirdat/*,usecheckpoints,minkeepdays 3
  13. --定期清除队列文件,保留期限为3天

抽取进程配置文件

  1. EXTRACT extma
  2. --Extract进程名
  3. setenv (NLS_LANG = 'CHINESE_CHINA.AL32UTF8')
  4. setenv (ORACLE_SID=ortest)
  5. --设置环境变量
  6. userid goldengate, password goldengate
  7. --GoldenGate用户名、密码
  8. REPORTCOUNT EVERY 1 MINUTES, RATE
  9. --每隔1分钟生成统计信息,用于STATS查看报告使用
  10. DISCARDFILE ./dirrpt/extma.dsc, APPEND, MEGABYTES 1000
  11. --Discard文件,采用append方式,最大1000M

投递进程配置文件

  1. EXTRACT dpema
  2. --Data Pump进程名称
  3. setenv (NLS_LANG = 'CHINESE_CHINA.AL32UTF8')
  4. setenv (ORACLE_SID=iasinfr)
  5. --设置环境变量
  6. PASSTHRU
  7. --采用pass-through模式处理表
  8. 该参数控制Extract process的模式,当为PASSTHRU时,不检查表的定义,仅当source target 对象的结构一样,并没有map或者filter 时使用,不检查表定义,可以加快处理的速度。
  9. RMTHOST 192.168.230.101,MGRPORT 7809,compress
  10. --目标机器IP和端口
  11. RMTTRAIL /u01/app/ogg/dirdat/ra
  12. --队列文件在目标端的存放位置
  13. DYNAMICRESOLUTION
  14. --动态解析表名
  15. --要复制的表清单
  16. table begin100.*;

复制进程配置文件

  1. REPLICAT repma
  2. --Replicat进程名称
  3. REPERROR DEFAULT, ABEND
  4. --复制出现错误,复制进程即ABEND
  5. HANDLECOLLISIONS
  6. --除重处理
  7. assumetargetdefs
  8. --源和目标数据库类型一致,无需生成数据定义文件
  9. map begin100.*,target begin100.*;
  10. -要复制的表清单

实验环境

1.下载解压ogg安装包

2.添加linux环境变量

  1. export LD_LIBRARY_PATH=$LD_LIBRRY_PATH:$ORACLE_HOME/lib
  2. alias ggsci='rlwrap /opt/ogg/ggsci'

3.创建安装目录

  1. mkdir /U01/OGG

4.图形化界面安装

  1. /setup/fbo_ggs_Linux_x64_shiphome/Disk1/runInstaller

5.设置源数据库

  1. 打开归档
  2. shutdown immediate;
  3. startup mount;
  4. archive log list;
  5. alter database archivelog;
  6. --------------------------------
  7. 强制归档,设置补充日志
  8. select force_logging from v$database;
  9. alter database force logging;
  10. select supplemental_log_data_min from v$database;
  11. alter database add supplemental log data;
  12. alter system switch logfile;
  13. ---------------------------------

6.设置enable_goldengate_replication 源和目标库

  1. 设置enable_goldengate_replication
  2. alter system set enable_goldengate_replication=TRUE scope=both;

6.源库和目标库设置用户和表空间

  1. create tablespace oggadmin datafile '/opt/oracle/oradata/orcl/ogg1.dbf' size 100m autoextend on;
  2. create user oggadmin identified by "oggadmin" default tablespace oggadmin ;
  3. grant dba,connect,resource to oggadmin;

7.创建测试用户和表 源库和备库

  1. create user begin identified by "begin" default tablespace USERS;
  2. grant connect,resource to begin;
  3. alter user begin quota unlimited on USERS ;
  4. conn begin
  5. create table begin.test (id int primary key, name varchar2(50));

8.源库添加表级别trandata

  1. cd /opt/ogg
  2. ./ggsci
  3. dblogin userid oggadmin,password oggadmin;
  4. add trandata begin.* ----* 代表账户下所有表,也可以指定特定表如begin.test
  5. info trandata begin.*

9.目标数据库添加checkpoint表

  1. ./ggsci
  2. edit param ./GLOBALS
  3. GGSCHEMA oggadmin
  4. CHECKPOINTTABLE oggadmin.chktbl
  5. exit
  6. ./ggsci
  7. dblogin userid oggadmin,password oggadmin
  8. add checkpointtable

10.配置MGR进程(源和目标数据库)保持默认则不用修改

  1. ./ggsci
  2. EDIT PARAM MGR
  3. PORT 7809 #默认端口

11.配置Extract进程(源数据库)

队列
以2个字母开头,GoldenGate会自动在字母后面加上6位数字,从000000开始。每当队列的容量达到设定的值就会滚动到下一个队列,队列后面的数字会自动加1

  1. ./ggsci
  2. edit param myext
  3. EXTRACT myext
  4. USERID oggadmin,PASSWORD oggadmin
  5. EXTTRAIL /opt/ogg/dirdat/ex
  6. TABLE begin.*;
  7. view param myext

12.配置datapump进程(源数据库)

  1. ./ggsci
  2. edit param mydp
  3. EXTRACT mydp
  4. USERID oggadmin,PASSWORD oggadmin
  5. RMTHOST 192.168.5.112, MGRPORT 7809 --远端IP
  6. RMTTRAIL /opt/ogg/dirdat/rt --远端路径
  7. TABLE begin.*;

13.配置replicat进程(目标数据库)

  1. ./ggsci
  2. edit param myrep
  3. REPLICAT myrep
  4. USERID oggadmin,PASSWORD oggadmin
  5. ASSUMETARGETDEFS --假设源和目标表结构一样
  6. DISCARDFILE /opt/ogg/discards,PURGE
  7. MAP begin.*,TARGET begin.*;
  8. MAP begin.test,TARGET begin.test1; 单独映射

14.注册进程

  1. 源数据库
  2. ./ggsci
  3. add extract myext,tranlog,begin now
  4. add exttrail /opt/ogg/dirdat/ex,extract myext
  5. add extract mydp exttrailsource /opt/ogg/dirdat/ex
  6. add rmttrail /opt/ogg/dirdat/rt,extract mydp
  7. 目标数据库
  8. add replicat myrep,exttrail /opt/ogg/dirdat/rt,checkpointtable oggadmin.chktbl

15.删除进程

  1. dblogin userid oggadmin,password oggadmin;
  2. delete extract mydp

15.启动进程

  1. 源库
  2. ./ggsci
  3. start manager
  4. start extract myext
  5. start extract mydp
  6. 目标库
  7. start replicat myrep

16.测试数据

  1. conn begin
  2. insert into test values(1,'aa');
  3. commit;

17.数据不同步注意进程状态

进程状态有问题,注意查看ggserr.log 日志文件

  1. GGSCI (ORCL) 6> info all
  2. Program Status Group Lag at Chkpt Time Since Chkpt
  3. MANAGER RUNNING
  4. REPLICAT RUNNING MYREP 00:00:00 00:00:00

18.添加dml语句同步
dml基于全库的中间表触发器
1)源库添加

  1. GRANT EXECUTE ON utl_file TO oggadmin; #dba账户自带utl_file 权限
  2. cd /opt/ogg/
  3. sqlplus / as sysdba
  4. @marker_setup.sql
  5. @ddl_setup.sql
  6. @role_setup.sql #追加GRANT GGS_GGSUSER_ROLE TO oggadmin
  7. @ddl_enable.sql
  8. @?/rdbms/admin/dbmspool.sql
  9. @ddl_pin.sql oggadmin
  1. 2)源端抽取进程添加ddl include mapped
  1. edit param myext
  2. EXTRACT myext
  3. USERID oggadmin,PASSWORD oggadmin
  4. EXTTRAIL /opt/ogg/dirdat/ex
  5. ddl include mapped
  6. TABLE begin.*;

3)源端重新启动myxet进程

  1. stop extract myext
  2. start extract myext

4)测试ddl

  1. create table test1(id int primary key,uname varchar2(20));

数据初始化同步

imp/exp

1).停机迁移 (不做介绍)
2).scn不停机迁移
停止删除所有ogg进程

1.数据导出/导入

  1. grant execute on dbms_flashback to begin; ##启用表scn
  2. 添加测试数据
  3. begin
  4. for i IN 10 .. 1000 loop
  5. insert into BEGIN.test values(i,'aaa');
  6. end loop;
  7. end;
  8. select dbms_flashback.get_system_change_number from dual;查询scn
  9. exp begin/begin file=begin.dmp flashback_scn=2149789;##导出数据
  10. scp /opt/backup/begin.dmp oracle@192.168.5.112:/opt/
  11. imp begin/begin file=begin.dmp;

2.注册启动进程

略(查看上面教程)
replicat 进程最后启动
注意如果之前有extract进程运行,注意删除之前产生的trial文件,并删除进程重新新注册启动

3.启动目标端replicat进程

  1. start myrep,aftercsn 2149789;


initial load直接传输初始化

注意在同步之前需要建立表结构

1.源端抽取进程配置

  1. edit params extinit
  2. extract extinit
  3. userid oggadmin,password oggadmin
  4. rmthost 192.168.5.112,mgrport 7810
  5. rmttask replicat,group repinit
  6. table begin.*;

2.添加extract进程

  1. add extract extinit,sourceistable

3.目标端复制进程配置

  1. edit params repinit
  2. replicat repinit
  3. userid oggadmin,password oggadmin
  4. assumetargetdefs
  5. map begin.*,target begin.*;

4.添加replicat进程

  1. add replicat repinit,specialrun

5.启动之前建立的源端抽取进程

  1. start myext
  2. start mydp

6.启动extinit进程

不需要启动目标端的repinit进程,MGR会自动启动它,等同步结束会自动关闭
view report extinit查看处理过程

  1. start extinit

7.目标端启动myrep进程

  1. start myrep

8.异常处理

OGG-01201 Error reported by MGR : Access denied.
查看目标端manager进程日志如下,目标端主动拒绝访问

  1. 020-03-01T07:32:04.875-0500 INFO OGG-00963 Oracle GoldenGate Manager for Oracle, mgr.prm: Command received from EXTRACT on host
  2. [192.168.5.144]:42992 (VERSION).
  3. 2020-03-01T07:32:04.875-0500 INFO OGG-00960 Oracle GoldenGate Manager for Oracle, mgr.prm: Access granted (rule #1).

处理办法
添加以下目标端MGR参数

  1. ACCESSRULE, PROG *, IPADDR <ip address>, ALLOW
  2. ACCESSRULE, PROG *, IPADDR 192.168.5.144, ALLOW

ERROR OGG-00199 Oracle GoldenGate Delivery for Oracle
同步之前需要建立表结构

  1. 2020-03-02T07:07:29.759-0500 ERROR OGG-00199 Oracle GoldenGate Delivery for Oracle: Table begin.TEST does not exist in target dat
  2. abase.
  3. 2020-03-02T07:07:34.786-0500 ERROR OGG-01668 Oracle GoldenGate Delivery for Oracle: PROCESS ABENDING.

initial load使用文件传输初始化

删除所有进程和之前dirdat下面的文件

1.源端抽取进程配置

  1. edit params extinit
  2. sourceistable
  3. USERID oggadmin,PASSWORD oggadmin
  4. rmthost 192.168.5.112,mgrport 7810,compress
  5. rmtfile /opt/ogg/dirdat/rm,maxfiles 100,MEGABYTES 2000,purge
  6. table begin.*;

2. 执行initial load捕获进程

1)在源端启动抽取变化进程组start myext

  1. edit param myext
  2. EXTRACT myext
  3. USERID oggadmin,PASSWORD oggadmin
  4. EXTTRAIL /opt/ogg/dirdat/ex
  5. TABLE begin.*;
  6. add extract myext,tranlog,begin now
  7. add exttrail /opt/ogg/dirdat/ex,extract myext
  8. start myext

2)启动initial进程

  1. /opt/ogg/extract paramfile /opt/ogg/dirprm/extinit.prm reportfile /opt/ogg/dirrpt/extinit.rpt

3. 配置initial load replicat进程组

1)编进repinit进程

  1. edit param repinit
  2. specialrun
  3. end runtime
  4. userid oggadmin,password oggadmin
  5. assumetargetdefs
  6. extfile /opt/ogg/dirdat/rm
  7. map begin.*,target begin.*;

2在目标端启动initial load replicat进程

  1. /opt/ogg/replicat paramfile /opt/ogg/dirprm/repinit.prm reportfile /opt/ogg/dirrpt/repinit.rpt

异常处理

  1. 2020-03-04 08:40:37 ERROR OGG-14502 (repinit.prm) line 1: Unexpected value "'userid'", first parameter must be one of: REPLICAT, S
  2. PECIALRUN, GENLOADFILES.

解决办法
“userid oggadmin,password oggadmin” 不要放在第一行
3)等待replicat完成
4)启动replicat进程组start myrep
5)查看replicat进程状态,info myrep