ogg介绍
目录
dirprm用于存放GG的参数文件,这些参数文件可以通过系统文本编辑器直接编辑,也可以通过在ggsci命令行下edit params来编辑,达到的效果是一样的。dirrpt用于存放各个进程的报告文件,内容为extract、replicat和manager进程运行相关的统计报告信息。dirpcs用于存放各个进程的状态信息,当相关进程运行的时候,这些进程的相关信息,比如程序名称,进程名称,进程监听端口,进程ID等等都将被写入各自状态信息文件。dirdef用于存放由DEFGEN组件创建的定义文件,包含在异构环境同步中的源或者目标端的数据定义。dirdat用于存放GG跟踪文件和由extract进程创建的抽取文件dirchk用于存放由extract抽取进程和replicat复制进程创建的checkpoint文件dirtmp临时文件目录,不要编辑里面的任何文件和内容
参数分类
1.GLOBALS参数2.Manager参数3.Extract参数4.Replicat参数5.Extract和Replicat共同参数6.DEFGEN参数
GLOBALS配置文件
GGSCHEMA--goldengate用户CHECKPOINTTABLE--checkpoint表MGR配置文件port 7839--Manager使用的端口DYNAMICPORTLIST 7840-7849--Extract、Data Pump、Replicat使用的动态端口范围AUTOSTART ER *--MGR启动时自动启动所有进程AUTOSTART EXTRACT *--自动启动所有的Extract进程AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 7--自动重启所有的Extract进程,每隔7分钟重试,重试次数5次purgeoldextracts /u01/app/ogg/dirdat/*,usecheckpoints,minkeepdays 3--定期清除队列文件,保留期限为3天
mgr配置文件
MGR配置文件port 7839--Manager使用的端口DYNAMICPORTLIST 7840-7849--Extract、Data Pump、Replicat使用的动态端口范围AUTOSTART ER *--MGR启动时自动启动所有进程AUTOSTART EXTRACT *--自动启动所有的Extract进程AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 7--自动重启所有的Extract进程,每隔7分钟重试,重试次数5次purgeoldextracts /u01/app/ogg/dirdat/*,usecheckpoints,minkeepdays 3--定期清除队列文件,保留期限为3天
抽取进程配置文件
EXTRACT extma--Extract进程名setenv (NLS_LANG = 'CHINESE_CHINA.AL32UTF8')setenv (ORACLE_SID=ortest)--设置环境变量userid goldengate, password goldengate--GoldenGate用户名、密码REPORTCOUNT EVERY 1 MINUTES, RATE--每隔1分钟生成统计信息,用于STATS查看报告使用DISCARDFILE ./dirrpt/extma.dsc, APPEND, MEGABYTES 1000--Discard文件,采用append方式,最大1000M
投递进程配置文件
EXTRACT dpema--Data Pump进程名称setenv (NLS_LANG = 'CHINESE_CHINA.AL32UTF8')setenv (ORACLE_SID=iasinfr)--设置环境变量PASSTHRU--采用pass-through模式处理表该参数控制Extract process的模式,当为PASSTHRU时,不检查表的定义,仅当source 和target 对象的结构一样,并没有map或者filter 时使用,不检查表定义,可以加快处理的速度。RMTHOST 192.168.230.101,MGRPORT 7809,compress--目标机器IP和端口RMTTRAIL /u01/app/ogg/dirdat/ra--队列文件在目标端的存放位置DYNAMICRESOLUTION--动态解析表名--要复制的表清单table begin100.*;
复制进程配置文件
REPLICAT repma--Replicat进程名称REPERROR DEFAULT, ABEND--复制出现错误,复制进程即ABENDHANDLECOLLISIONS--除重处理assumetargetdefs--源和目标数据库类型一致,无需生成数据定义文件map begin100.*,target begin100.*;-要复制的表清单
实验环境
1.下载解压ogg安装包
2.添加linux环境变量
export LD_LIBRARY_PATH=$LD_LIBRRY_PATH:$ORACLE_HOME/libalias ggsci='rlwrap /opt/ogg/ggsci'
3.创建安装目录
mkdir /U01/OGG
4.图形化界面安装
/setup/fbo_ggs_Linux_x64_shiphome/Disk1/runInstaller
5.设置源数据库
打开归档shutdown immediate;startup mount;archive log list;alter database archivelog;--------------------------------强制归档,设置补充日志select force_logging from v$database;alter database force logging;select supplemental_log_data_min from v$database;alter database add supplemental log data;alter system switch logfile;---------------------------------
6.设置enable_goldengate_replication 源和目标库
设置enable_goldengate_replicationalter system set enable_goldengate_replication=TRUE scope=both;
6.源库和目标库设置用户和表空间
create tablespace oggadmin datafile '/opt/oracle/oradata/orcl/ogg1.dbf' size 100m autoextend on;create user oggadmin identified by "oggadmin" default tablespace oggadmin ;grant dba,connect,resource to oggadmin;
7.创建测试用户和表 源库和备库
create user begin identified by "begin" default tablespace USERS;grant connect,resource to begin;alter user begin quota unlimited on USERS ;conn begincreate table begin.test (id int primary key, name varchar2(50));
8.源库添加表级别trandata
cd /opt/ogg./ggscidblogin userid oggadmin,password oggadmin;add trandata begin.* ----* 代表账户下所有表,也可以指定特定表如begin.testinfo trandata begin.*
9.目标数据库添加checkpoint表
./ggsciedit param ./GLOBALSGGSCHEMA oggadminCHECKPOINTTABLE oggadmin.chktblexit./ggscidblogin userid oggadmin,password oggadminadd checkpointtable
10.配置MGR进程(源和目标数据库)保持默认则不用修改
./ggsciEDIT PARAM MGRPORT 7809 #默认端口
11.配置Extract进程(源数据库)
队列
以2个字母开头,GoldenGate会自动在字母后面加上6位数字,从000000开始。每当队列的容量达到设定的值就会滚动到下一个队列,队列后面的数字会自动加1
./ggsciedit param myextEXTRACT myextUSERID oggadmin,PASSWORD oggadminEXTTRAIL /opt/ogg/dirdat/exTABLE begin.*;view param myext
12.配置datapump进程(源数据库)
./ggsciedit param mydpEXTRACT mydpUSERID oggadmin,PASSWORD oggadminRMTHOST 192.168.5.112, MGRPORT 7809 --远端IPRMTTRAIL /opt/ogg/dirdat/rt --远端路径TABLE begin.*;
13.配置replicat进程(目标数据库)
./ggsciedit param myrepREPLICAT myrepUSERID oggadmin,PASSWORD oggadminASSUMETARGETDEFS --假设源和目标表结构一样DISCARDFILE /opt/ogg/discards,PURGEMAP begin.*,TARGET begin.*;MAP begin.test,TARGET begin.test1; 单独映射
14.注册进程
源数据库./ggsciadd extract myext,tranlog,begin nowadd exttrail /opt/ogg/dirdat/ex,extract myextadd extract mydp exttrailsource /opt/ogg/dirdat/exadd rmttrail /opt/ogg/dirdat/rt,extract mydp目标数据库add replicat myrep,exttrail /opt/ogg/dirdat/rt,checkpointtable oggadmin.chktbl
15.删除进程
dblogin userid oggadmin,password oggadmin;delete extract mydp
15.启动进程
源库./ggscistart managerstart extract myextstart extract mydp目标库start replicat myrep
16.测试数据
conn begininsert into test values(1,'aa');commit;
17.数据不同步注意进程状态
进程状态有问题,注意查看ggserr.log 日志文件
GGSCI (ORCL) 6> info allProgram Status Group Lag at Chkpt Time Since ChkptMANAGER RUNNINGREPLICAT RUNNING MYREP 00:00:00 00:00:00
18.添加dml语句同步
dml基于全库的中间表触发器
1)源库添加
GRANT EXECUTE ON utl_file TO oggadmin; #dba账户自带utl_file 权限cd /opt/ogg/sqlplus / as sysdba@marker_setup.sql@ddl_setup.sql@role_setup.sql #追加GRANT GGS_GGSUSER_ROLE TO oggadmin@ddl_enable.sql@?/rdbms/admin/dbmspool.sql@ddl_pin.sql oggadmin
2)源端抽取进程添加ddl include mapped
edit param myextEXTRACT myextUSERID oggadmin,PASSWORD oggadminEXTTRAIL /opt/ogg/dirdat/exddl include mappedTABLE begin.*;
3)源端重新启动myxet进程
stop extract myextstart extract myext
4)测试ddl
create table test1(id int primary key,uname varchar2(20));
数据初始化同步
imp/exp
1).停机迁移 (不做介绍)
2).scn不停机迁移
停止删除所有ogg进程
1.数据导出/导入
grant execute on dbms_flashback to begin; ##启用表scn添加测试数据beginfor i IN 10 .. 1000 loopinsert into BEGIN.test values(i,'aaa');end loop;end;select dbms_flashback.get_system_change_number from dual;查询scnexp begin/begin file=begin.dmp flashback_scn=2149789;##导出数据scp /opt/backup/begin.dmp oracle@192.168.5.112:/opt/imp begin/begin file=begin.dmp;
2.注册启动进程
略(查看上面教程)
replicat 进程最后启动
注意如果之前有extract进程运行,注意删除之前产生的trial文件,并删除进程重新新注册启动
3.启动目标端replicat进程
start myrep,aftercsn 2149789;
initial load直接传输初始化
注意在同步之前需要建立表结构
1.源端抽取进程配置
edit params extinitextract extinituserid oggadmin,password oggadminrmthost 192.168.5.112,mgrport 7810rmttask replicat,group repinittable begin.*;
2.添加extract进程
add extract extinit,sourceistable
3.目标端复制进程配置
edit params repinitreplicat repinituserid oggadmin,password oggadminassumetargetdefsmap begin.*,target begin.*;
4.添加replicat进程
add replicat repinit,specialrun
5.启动之前建立的源端抽取进程
start myextstart mydp
6.启动extinit进程
不需要启动目标端的repinit进程,MGR会自动启动它,等同步结束会自动关闭
view report extinit查看处理过程
start extinit
7.目标端启动myrep进程
start myrep
8.异常处理
OGG-01201 Error reported by MGR : Access denied.
查看目标端manager进程日志如下,目标端主动拒绝访问
020-03-01T07:32:04.875-0500 INFO OGG-00963 Oracle GoldenGate Manager for Oracle, mgr.prm: Command received from EXTRACT on host[192.168.5.144]:42992 (VERSION).2020-03-01T07:32:04.875-0500 INFO OGG-00960 Oracle GoldenGate Manager for Oracle, mgr.prm: Access granted (rule #1).
处理办法
添加以下目标端MGR参数
ACCESSRULE, PROG *, IPADDR <ip address>, ALLOWACCESSRULE, PROG *, IPADDR 192.168.5.144, ALLOW
ERROR OGG-00199 Oracle GoldenGate Delivery for Oracle
同步之前需要建立表结构
2020-03-02T07:07:29.759-0500 ERROR OGG-00199 Oracle GoldenGate Delivery for Oracle: Table begin.TEST does not exist in target database.2020-03-02T07:07:34.786-0500 ERROR OGG-01668 Oracle GoldenGate Delivery for Oracle: PROCESS ABENDING.
initial load使用文件传输初始化
1.源端抽取进程配置
edit params extinitsourceistableUSERID oggadmin,PASSWORD oggadminrmthost 192.168.5.112,mgrport 7810,compressrmtfile /opt/ogg/dirdat/rm,maxfiles 100,MEGABYTES 2000,purgetable begin.*;
2. 执行initial load捕获进程
1)在源端启动抽取变化进程组start myext
edit param myextEXTRACT myextUSERID oggadmin,PASSWORD oggadminEXTTRAIL /opt/ogg/dirdat/exTABLE begin.*;add extract myext,tranlog,begin nowadd exttrail /opt/ogg/dirdat/ex,extract myextstart myext
2)启动initial进程
/opt/ogg/extract paramfile /opt/ogg/dirprm/extinit.prm reportfile /opt/ogg/dirrpt/extinit.rpt
3. 配置initial load replicat进程组
1)编进repinit进程
edit param repinitspecialrunend runtimeuserid oggadmin,password oggadminassumetargetdefsextfile /opt/ogg/dirdat/rmmap begin.*,target begin.*;
2在目标端启动initial load replicat进程
/opt/ogg/replicat paramfile /opt/ogg/dirprm/repinit.prm reportfile /opt/ogg/dirrpt/repinit.rpt
异常处理
2020-03-04 08:40:37 ERROR OGG-14502 (repinit.prm) line 1: Unexpected value "'userid'", first parameter must be one of: REPLICAT, SPECIALRUN, GENLOADFILES.
解决办法
“userid oggadmin,password oggadmin” 不要放在第一行
3)等待replicat完成
4)启动replicat进程组start myrep
5)查看replicat进程状态,info myrep
