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
--复制出现错误,复制进程即ABEND
HANDLECOLLISIONS
--除重处理
assumetargetdefs
--源和目标数据库类型一致,无需生成数据定义文件
map begin100.*,target begin100.*;
-要复制的表清单
实验环境
1.下载解压ogg安装包
2.添加linux环境变量
export LD_LIBRARY_PATH=$LD_LIBRRY_PATH:$ORACLE_HOME/lib
alias 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_replication
alter 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 begin
create table begin.test (id int primary key, name varchar2(50));
8.源库添加表级别trandata
cd /opt/ogg
./ggsci
dblogin userid oggadmin,password oggadmin;
add trandata begin.* ----* 代表账户下所有表,也可以指定特定表如begin.test
info trandata begin.*
9.目标数据库添加checkpoint表
./ggsci
edit param ./GLOBALS
GGSCHEMA oggadmin
CHECKPOINTTABLE oggadmin.chktbl
exit
./ggsci
dblogin userid oggadmin,password oggadmin
add checkpointtable
10.配置MGR进程(源和目标数据库)保持默认则不用修改
./ggsci
EDIT PARAM MGR
PORT 7809 #默认端口
11.配置Extract进程(源数据库)
队列
以2个字母开头,GoldenGate会自动在字母后面加上6位数字,从000000开始。每当队列的容量达到设定的值就会滚动到下一个队列,队列后面的数字会自动加1
./ggsci
edit param myext
EXTRACT myext
USERID oggadmin,PASSWORD oggadmin
EXTTRAIL /opt/ogg/dirdat/ex
TABLE begin.*;
view param myext
12.配置datapump进程(源数据库)
./ggsci
edit param mydp
EXTRACT mydp
USERID oggadmin,PASSWORD oggadmin
RMTHOST 192.168.5.112, MGRPORT 7809 --远端IP
RMTTRAIL /opt/ogg/dirdat/rt --远端路径
TABLE begin.*;
13.配置replicat进程(目标数据库)
./ggsci
edit param myrep
REPLICAT myrep
USERID oggadmin,PASSWORD oggadmin
ASSUMETARGETDEFS --假设源和目标表结构一样
DISCARDFILE /opt/ogg/discards,PURGE
MAP begin.*,TARGET begin.*;
MAP begin.test,TARGET begin.test1; 单独映射
14.注册进程
源数据库
./ggsci
add extract myext,tranlog,begin now
add exttrail /opt/ogg/dirdat/ex,extract myext
add extract mydp exttrailsource /opt/ogg/dirdat/ex
add 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.启动进程
源库
./ggsci
start manager
start extract myext
start extract mydp
目标库
start replicat myrep
16.测试数据
conn begin
insert into test values(1,'aa');
commit;
17.数据不同步注意进程状态
进程状态有问题,注意查看ggserr.log 日志文件
GGSCI (ORCL) 6> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT 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 myext
EXTRACT myext
USERID oggadmin,PASSWORD oggadmin
EXTTRAIL /opt/ogg/dirdat/ex
ddl include mapped
TABLE begin.*;
3)源端重新启动myxet进程
stop extract myext
start 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
添加测试数据
begin
for i IN 10 .. 1000 loop
insert into BEGIN.test values(i,'aaa');
end loop;
end;
select dbms_flashback.get_system_change_number from dual;查询scn
exp 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 extinit
extract extinit
userid oggadmin,password oggadmin
rmthost 192.168.5.112,mgrport 7810
rmttask replicat,group repinit
table begin.*;
2.添加extract进程
add extract extinit,sourceistable
3.目标端复制进程配置
edit params repinit
replicat repinit
userid oggadmin,password oggadmin
assumetargetdefs
map begin.*,target begin.*;
4.添加replicat进程
add replicat repinit,specialrun
5.启动之前建立的源端抽取进程
start myext
start 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>, ALLOW
ACCESSRULE, 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 dat
abase.
2020-03-02T07:07:34.786-0500 ERROR OGG-01668 Oracle GoldenGate Delivery for Oracle: PROCESS ABENDING.
initial load使用文件传输初始化
1.源端抽取进程配置
edit params extinit
sourceistable
USERID oggadmin,PASSWORD oggadmin
rmthost 192.168.5.112,mgrport 7810,compress
rmtfile /opt/ogg/dirdat/rm,maxfiles 100,MEGABYTES 2000,purge
table begin.*;
2. 执行initial load捕获进程
1)在源端启动抽取变化进程组start myext
edit param myext
EXTRACT myext
USERID oggadmin,PASSWORD oggadmin
EXTTRAIL /opt/ogg/dirdat/ex
TABLE begin.*;
add extract myext,tranlog,begin now
add exttrail /opt/ogg/dirdat/ex,extract myext
start 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 repinit
specialrun
end runtime
userid oggadmin,password oggadmin
assumetargetdefs
extfile /opt/ogg/dirdat/rm
map 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, S
PECIALRUN, GENLOADFILES.
解决办法
“userid oggadmin,password oggadmin” 不要放在第一行
3)等待replicat完成
4)启动replicat进程组start myrep
5)查看replicat进程状态,info myrep