oracle golden gate原理和安装配置

oracle golden gate使用配置

我们采用oracle 11g数据库对应的golden gate传统模式配置:
在这里插入图片描述oracle golden gate的逻辑架构:
在这里插入图片描述

oracle golden gate实现live standby database架构图:
在这里插入图片描述

系统版本

rh linux6.3
oracle database 11.2.0.4.0
oracle golden gate for oracle 11g

Golden Gate源目标端DDL和DML复制配置详细过程

环境信息

主机ip数据库名用户信息ogg软件安装目录
源端192.168.10.1DOGogg/ogg/ogg/product
目标端192.168.10.2OGGSBYoggsby/oggsby/ogg/product

源数据库配置

关闭回收站:


alter system set recyclebin=off deferred; 
shutdown immediate;
startup 
show parameter recyclebin

配置用户和表空间:

create tablespace oggtbs datafile '/app/oracle/oradata/DOG/oggtbs01.dbf' size 100M ;
create user ogg identidied by ogg default tablespace oggtbs;
grant connect to ogg;
grant dba to ogg;  
# 因为我们是测试环境 ,所以为了测试方面,我们直接授权dba权限,而在实际的生产环境中,需要使用最小化权限管理 
# 根据ogg用户需要的权限进行相应的配置

注:ogg用户可能需要的权限配置:

create user ogg identified by ogg;
grant connect,resource to ogg;

alter user ogg default tablesp	ace oggtbs;
grant unlimited tablespace to ogg;
grant connect, resource, dba to ogg;
grant create session, alter session to ogg;
grant alter system to ogg;
grant select any dictionary to ogg;
grant flashback any table to ogg;
grant select any table, insert any table, update any table, delete any table, drop any table to ogg;
grant create table, create sequence to ogg;
grant select on dba_clusters to ogg;
grant select on v_$database to ogg;
grant select on sys.logmnr_buildlog to ogg;
grant select any transaction to ogg;
grant lock any table to ogg;
grant execute on dbms_flashback to ogg;
grant execute on dbms_logmnr_d to ogg;
grant execute on dbms_capture_adm to ogg;
grant execute on dbms_streams to ogg;
grant execute on utl_file to ogg;
exec dbms_streams_auth.grant_admin_privilege('ogg');

源库开户附加日志和force logging:

alter database force logging;
alter database add supplemental log data;

目标端数据库配置

目标端数据库配置:

alter system set recyclebin=off deferred; 
shutdown immediate;
startup 
show parameter recyclebin

用户和表空间:

create tablespace oggtbs datafile '/app/oracle/OGGSBY/oradata/oggtbs1.dbf' size 100M;
create user oggsby identified by oggsby default tablespace oggtbs;
grant connct,resource to oggsby;
grant dba to oggsby;
alter user oggsby quota unlimited on oggtbs;

源和目标端开启DDL复制配置

开启DDL复制配置,当源端执行DDL语句 ,如create table ,alter table等操作时,配置extract进程和replicat进程的配置,就可以实现源库和目标库的DDL复制了

#源库配置DDL复制所执行的SQL脚本 :
grant create table ,create sequence to ogg;
grant ggs_ggsuser_role to ogg;
@marker_setup.sql
@ddl_setup.sql
@role_setup.sql
@ddl_enable.sql   
@?/rdbms/admin/dbmspool.sql
@ddl_pin.sql ogg #指定对应的用户

目标端开启DDL:

grant create table ,create sequence to oggsby;
grant ggs_ggsuser_role to oggsby;
@marker_setup.sql
@ddl_setup.sql
@role_setup.sql
grant ggs_ggsuser_role to oggsby;
@ddl_enable.sql   
@?/rdbms/admin/dbmspool.sql
@ddl_pin.sql oggsby#指定对应的用户  这个目标端的承载用户

源端配置mgr、extract抽取、extract datapump进程

配置mgr进程
ggsci 
info mgr
edit params mgr --编辑mgr进程参数
--具体内容:

PORT 7809
DYNAMICPORTLIST  7840-7939  --mgr进程使用7809,当7809不可用时,可使用7840至7939浮动端口
AUTOSTART EXTRACT *   --自动启动所有的extract进程
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 2  --extract进程出问题,则每2min尝试重启,尝试次数5次
PURGEOLDEXTRACTS /ogg/product/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 5  --定期清理dirdat目录下的trail文件,最少保留时间5天
LAGREPORTHOURS 1  --每隔一小时检查各进程延时情况,并记录到goldengate report文件。
LAGINFOMINUTES 30  --进程复制延时超过30分钟,向日志文件记录一条错误日志
LAGCRITICALMINUTES 45 --传输延时超过45分钟将写入警告日志

配置extract ext1抽取进程
ggsci 
dblogin userid ogg,password ogg --使用此用户,登录到源数据为操作。 进行数据的extract
add extract ext1,tranlog,begin now  --增加进程 
add exttrail ./dirdat/sr,extract ext1 --为ext1进程增加trail文件,存放到$OGG_HOME/dirdat/sr文件中。 1、第一步,添加队列文件(进程文件)
edit params ext1   --2、第二步,编辑队列文件,也就是进得文件
--具体的参数内容 
extract ext1
SETENV(ORACLE_SID="DOG")
SETENV(NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
userid ogg, password ogg  
REPORTCOUNT EVERY 30 MINUTES, RATE --每隔30min报告一次从程序开始到现在的抽取进程或者复制进程的事物记录数,并汇报进程的统计信息
DISCARDFILE /ogg/product/dirrpt/extsr.desc, APPEND, MEGABYTES 1024  --执行失败记录保存在discardfile中,文件大小设置最大为1024M.使用APPEND追加模式写文件
DISCARDROLLOVER AT 3:00  --没3:00做一次文件清理
EXTTRAIL /ogg/product/dirdat/sr     --此处使用绝对路径存放。 和add exttrail命令对应的文件需要相同。 trail文件的存放路径
DYNAMICRESOLUTION --有时候开启OGG进程的时候较慢,可能是因为需要同步的表太多,OGG在开启进程之前会将需要同步的表建立一个记录并且存入到磁盘中,这样就需要耗费大量的时间。使用该参数来解决此问题。
DBOPTIONS  ALLOWUNUSEDCOLUMN --用于阻止抽取进程抽取数据时由于表含有unused列而导致进程异常终止(abend)。使用该参数,抽取进程抽取到unused列时也会向日志文件记录一条警告信息。 数据表的unused列操作配置
FETCHOPTIONS NOUSESNAPSHOT --默认值为 usesnapshot,表示利用数据库闪回读取数据。Nousesnapshot表示直接从原表读取相关数据。
FETCHOPTIONS FETCHPKUPDATECOLS --当使用了HANDLECOLLISIONS时,请使用该参数。复制进程出现丢失update记录(missing update)并且更新的是主键,update将转换成insert。由于插入的记录可能不是完整的行,若要保证完整需要加入此参数
table ogg.*;  --需要复制的表

配置datapump进程

datapump进程本质上是extract进程
如果不使用datapump进程,则extract进程则抽取和发送trail文件到目标端,需要完成的此两项功能。
如果配置了datapump进程,则extract进程抽取和捕获数据写入到trail文件,而datapump进得负责发送trail文件到目标端,发送过程通过网络传输。加强源、目标端进程的可用性。相对松耦合的架构 。

注意:创建并指定源数据库trail文件位置,必须包含两个字符,这个路径和主抽取进程(Primary Extract)中指定的trail目录和trail文件命名必须相同,因为Data Pump进程要从此读取主抽取进程生成的trail文件; 我们在第一次测试时,就是这个路径写的不一致,而导致同步失败了。

# 配置datadump  dpump1进程 
ggsci 
dblogin userid ogg,password ogg
add extract dpump1, exttrailsource /ogg/product/dirdat/sr   --增加进程 dpump1
add rmttrail /ogg/product/dirdat/tr,extract dpump1  --dpump1进程,传输至远程目标端的trail文件目录。 注意:这个文件参数要和edit params pdump1参数配置项相同  。 1、第一步、添加队列文件
edit params dpump1  --2、第二步,编辑队列文件
--dpump1参数配置内容
extract dpump1
SETENV(ORACLE_SID="DOG")
SETENV(NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
RMTHOST 192.168.10.2, mgrport 7839, COMPRESS   --远端数据mgr进程和端口号,compress使用压缩文件传输
PASSTHRU  --输进程直接跟抽取进程交互,而不再和数据库进行交互,减少数据库资源的利用。passthru表示本进程是一个传输进程data pump,无需跟数据库交互,只需要搬运数据即可;
因为data pump要传输数据到目标,所以需要配置rmthost和rmttrail指定目标主机和队列信息
RMTTRAIL /ogg/product/dirdat/tr --传递到target端,trail文件存放目录
--DYNAMICRESOLUTION
table ogg.*;

注意:
源端可以配置多个主抽取进程,也可以配置多个Data Pump进程,但必须为每个要同步的目标端配置一个Data Pump进程;

在dpump1增加远端trail文件配置

add rmttrail /ogg/product/dirdat/tr, extract dpump1

目标端配置replicat复制进程

关于checkpoint说明:
Checkpoint存储从文件读取和写入的检测点位置,用于还原和恢复数据,Checkpoint确保发生变化并提交(commit)的数据被extract抽取捕获和被replicat进程应用到目标端;保证在系统、网络或者GoldenGate需要重启进程时发生的错误不会导致数据丢失;在复杂的同步配置中checkpoints启用多个extract和replicat进程从同一个trail集中读取数据。

Checkpoint table有两种类型:主表和辅助表。主表根据用户定义名称来来创建,辅助表会自动创建。辅助表就是transaction table。名称是checkpoint table名上加_LOX。

目标端增加checkpoing表:

add checkpointtable oggsby.checkpoint;
edit params ./GLOBALS
GGSCHEMA oggsby
CHECKPOINTTABLE obbsby.checkpoint

目标端配置复制进程:

add replicat rep1, exttrail /ogg/product/dirdat/tr, checkpointtable oggsby.checkpoint
edit params rep1
REPLICAT rep1
SETENV(ORACLE_SID="OGGSBY")
SETENV(NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID oggsby, PASSWORD oggsby
ddl include all    --配置ddl复制
ddlerror default ignore retryop maxretries 3 retrydelay 5 --出错时,每5min尝试一次,尝试次数3
REPORT AT 06:00   --6:00生成report
REPORTCOUNT EVERY 30 MINUTES, RATE
REPORTROLLOVER AT 02:00  --每天2:00清理report文件
REPERROR DEFAULT, ABEND   --除了特殊指定的REPERROR语句,报告所有复制期间出现的错误,回滚非正常中断的事物和进程。遇到不能处理的错误就自动abend,启动需要人工干预处理。
ALLOWNOOPUPDATES  --当源表有排除列情况或者有目标表不存在的列时,当更新这列goldengate默认报错。应用该参数后,即可让goldengate生成一条警告信息而不是报错。
ASSUMETARGETDEFS --使用ASSUMETARGETDEFS参数时,用MAP语句中指定的生产库源表和灾备端目标表具有相同的列结构。它指示的Oracle GoldenGate不在生产端查找源表的结构定义。
HANDLECOLLISIONS --用于goldengate自动过滤不能出来的冲突记录,为了严格保证数据一致性
DISCARDFILE /ogg/product/dirrpt/repsa.dsc, APPEND, MEGABYTES 1024
DISCARDROLLOVER AT 02:00
MAP ogg.*, target oggsby.*;

创建测试表和同步测试

创建测试表

#src:
create table ogg.togg(id primary key, name, type, CREATED, update_date) as select object_id, object_name, object_type, CREATED, sysdate from dba_objects where rownum < 101;

在目标端初始化测试表的数据同步:

create public database link oggsrc connect to ogg identified by ogg using '192.168.10.1:1521/DOG'; 
create table oggsby.togg(id primary key, name, type, CREATED, update_date) as select object_id, object_name, object_type, CREATED, sysdate from dba_objects where rownum < 1;
insert into oggsby.togg select * from ogg.togg@oggsrc;
commit;

src插入一条数据进行测试

# src:
insert into ogg.togg   select object_id, object_name, object_type, CREATED, sysdate from dba_objects where object_id =200 ;
commit;
select count(*) from ogg.togg;

#在目标端进行查看:
select count(*) from oggsby.togg;

测试DDL操作:

# src源端:
create table ogg.test1 as select * from dba_users;
# 在target查看
select count(*) from  oggsby.test1;  --进行相应的验证

Golden Gate组件说明

MGR进程

MRG也就是oracle manager进程,是ogg的管理进程,管理ogg的启动、分配端口、管理trail文件、创建事件、记录错误日志等,需要首先启动的进程,在extract和replicat进程前启动
oracle官方说明:
● Start Oracle GoldenGate processes
● Start dynamic processes
● Start the Collector process
● Manage the port numbers for processes
● Perform trail management
● Create event, error, and threshold reports

查看
ggsci
info mgr
edit params mgr #编辑mgr参数配置项

extract进程

extract进程主要在源端配置
extract进程运行在源端,它可以配置初始化数据直接从源端加载(直接从数据源加载静态数据)和在某个时间点后源端与服务端变更数据同步((从在线日志或归档日志抽取捕获变更的数据),它也可以在支持DDL变更的系统中抽取捕获DDL;

You can configure Extract in one of the following ways:
● Initial loads: For initial data loads, Extract extracts (captures) a current, static set of data directly from their source objects. --从源端抽取初始化静态数据,并加载
● Change synchronization: To keep source data synchronized with another set of data, Extract captures DML and DDL operations after the initial synchronization has taken place. --操持数据变更同步。

当配置为数据同步时,extract进程抽取捕获extract配置文件里配置的对象的任何DML和DDL(需要额外配置)的操作,extract进程记录这些操作,直到用户提交或回滚事务;
当收到回滚(rollback)时,extract撤销这些记录;
当收到(commit)操作后,extract进程记录保存这些操作到一个或多个trail文件里并以队列的形式发送到目标端,以确保数据传输速度和数据的一致性。

extract进程抽取源系统数据变更并将这此数据保存到trail文件中,所以需要为源extract进程配置trail文件目录和trail文件名的两个字符名。

extract使用下面三个方面来抽取数据:
1、Source tables, if the run is an initial load.
通过source table
2、The <font color="red> database recovery logs or transaction logs (such as the Oracle redo logs or SQL/MX audit trails). The actual method of capturing from the logs varies depending on the database type.
3、A third-party capture module. This method provides a communication layer tha tpasses data and metadata from an external API to the Extract API(通过第三方的api获取 ).The database vendor or a third-party vendor provides the components that extract the data operations and pass them to Extract.

datapump 文件传递进程

datapump是一种secondary Extract group进程,在source端进行配置的。
如果不使用datapump进程,则在source端,数据的抽取和投递都是需要基于primary extract进程写入trail文件,并传递到远端target数据库。
使用datadump进程,则在source端,extract进程负责抽取数据并写入trail文件,datapump进程读取trail文件并通过网络将其传入到远端target database。增加了系统的健壮性和存储的可用性。

使用datapump配置的原因和好处:
1、Protection against network and target failures. 对网络和target端失败的保护
2、You are implementing several phases of data filtering or transformation. --数据的过滤和传输分阶段执行,增加系统的稳定性和可用性
3、Consolidating data from many sources to a central target. 可实现多源到单目标的数据抽取
4、Synchronizing one source with multiple targets. 可实现同源至多目标数据的同步。

replicat 复制进程

replicat进程运行在target database端,replicat进程读取传输而来的trail文件,并重构DML和DDL语句,然后在target database上应用语句。
replicat进程通过如下种方式复制数据:
1、initial loads. 对于初始化数据,replicat进程可在target端直接应用传输面来的静态数据
2、change synchronization. 数据变更同步,应用传递而来的数据变更操作。

初始化数据

DML操作包括INSERT、UPDATE、DELETE、SELECT操作,而在这些操作中UPDATE、DELETE操作Redo只记录了变更的数据列以及行ID(ROWID),GoldenGate抽取数据后将其转换为自己的格式发送都目标端。在同步开始前目标端没有初始化数据(目标端为空数据),那么事物产生的UPDATE、DELETE DML操作发送到目标端,目标端GoldenGate Replicat进程会因为找不到数据而报错从而导致Replicat进程崩溃停止(ABENDED),所以这就需要我们在同步前初始化数据,初始化完后再同步,这样大大降低错误率。同步数据的方式可以通过DBLINK、EXP/IMP、SQLLDR或者表空间迁移等方式同步。

管理命令和一些配置说明

查看mgr进程

ggsci 
view param mgr
info mgr
status mgr   查看mgr进程状态
stats mgr 	  查看mgr进程的详细信息
info all  查看所有进程信息

因为我们manager进程使用的是7809端口,在linux系统查看
netstat -ano|grep 7809
lsof -i:7809
根据产生的进程ID,可以看到进程的信息
ps -ef|grep 30392
oracle   30392     1  0 16:50 ?        00:00:00 ./mgr PARAMFILE /ogg/product/dirprm/mgr.prm REPORTFILE /ogg/product/dirrpt/MGR.rpt PROCESSID MGR

目标端需要权限

grant  insert any table to oggsby;
grant delete any table to oggsby;
grant update any table to oggsby;
# 如果权限不敏感,可以直接授予dba权限

ggsci命令

ggsci
info all
start ext*   ext开头的
start ext1  开始这个ext1进程

#联合使用
add extract ext1,tranlog,begin now  --增加进程ext1
add exttrail ./dirdat/sr,extract ext1   --为增加队列文件

#
add extract dpump1, exttrailsource /ogg/product/dirdat/sr   --增加进程 dpump1
add rmttrail /ogg/product/dirdat/tr,extract dpump1   --增加远程队列文件,用于远程传输

#复制进程
add replicat rep1, exttrail /ogg/product/dirdat/tr, checkpointtable oggsby.checkpoint


delete ext1 删除进程
delete exttrail ./dirdat/sr  删除trail文件

view report REP1  # 查看report 
help   # 使用帮助命令

#错误日志做准备:
$OGG_HOME/ggserr.log 


#查看参数
view params *
view params ext1
edit params ext1
info exttrail *
view report * 
info credentialstore  #12c新特性,查看用户的配置信息,用户名、密码
add credentialstore    # 增加
delete credentialstore  
add extract e*, tranlog, begin now:
add extract p*,exttrailsource ./dirdat/xx*  #创建推送进程—>配置相应的配置文件
add exttrail ./dirdat/xx*,extract e_gessdb,megabytes 100:配置进程

增加附加日志:(用户级)
ggsci
add trandata ogg.* 使用通配符实现用户级
add trandata ogg.test01 表级
delete trandata ODS.OGG_LCCONT 删除表级日志

数据库补充日志:

select supplemental_log_data_min from v$database; --YES表示已经启用数据库级补充日志
select SUPPLEMENTAL_LOG_DATA_MIN, SUPPLEMENTAL_LOG_DATA_PK, SUPPLEMENTAL_LOG_DATA_UI from v$database;
alter  database  add supplemental log data;
alter database force logging;

关于数据为recyclebin说明

参数类型deferred,对当前session无效,对修改生新创建session有效
当修改系统级时,需要重启数据库。
select name,isses_modifiable,issys_modifiable from v$parameter wherename=‘recyclebin’; --查看参数类型

配置mgr将多余文件删除
PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPHOURS 1 --此行是新添加的内容,表示超过一小时且超过读检查点的数据自动删除

关于DDL复制

GoldenGate的DDL同步只支持两边一致的数据库,限制条件较多(如不能进行字段映射、转换等),具体可以参考官方文档。DDL的抓取不是通过日志抓取来捕获的,而是通过触发器来实现,所以对源数据库的性能影响要比单纯的数据抓取要大很多,可谓屏弃了GoldenGate的优势。尽量不要使用GoldenGate的DDL复制功能,在大多数业务系统中,实际上不会有频繁的数据库结构变动,完全可以通过手工的方式进行维护。确实有大量DDL操作的环境,如果可以,还是推荐物理DG之类的替换方案;确实要使用GoldenGate的DDL复制,那么请详细参考官方文档的限制和说明。


 

开启DDL复制的基本配置步骤为:
(1)关闭ORACLE的回收站功能。
(2)选择一个数据库schema存放支持DDL的GoldenGate对象,运行相应创建脚本。
(3)编辑globals参数文件。
(4)修改extl和repl的配置文件 

参引:https://www.cnblogs.com/junnor/p/4307228.html

参考说明

本文配置学习了https://www.cnblogs.com/VoiceOfDreams/p/8576973.html所述,结合自己实验操作。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GoldenGate基本原理安装过程和基本维护 目录 一、GoldenGate介绍 .......................................................................... 3 二、GoldenGate安装实施 .................................................................... 5 2.1创建GoldenGate软件安装目录 ................................................. 5 2.2 GoldenGate的管理用户 ........................................................... 5 2.3安装GoldenGate软件 .............................................................. 6 2.4设臵数据库归档模式 .................................................................. 6 2.5打开数据库的附加日志 ............................................................... 7 2.6开启数据库强制日志模式 ............................................................ 7 2.7创建GoldenGate管理用户 ........................................................ 7 2.8编辑GLOBALS参数文件 .......................................................... 8 2.9管理进程MGR参数配臵 ............................................................ 8 2.10抽取进程EXTN参数配臵 ......................................................... 9 2.11 传输进程DPEN参数配臵 ...................................................... 10 2.12建立OGG的DDL对象 ......................................................... 11 2.13 数据初始化 .......................................................................... 12 2.14 容灾端管理进程MGR参数配臵 .............................................. 14 2.15编辑GLOBALS参数文件 ...................................................... 15 2.16 容灾端复制进程REPN参数配臵 ............................................. 15 2.17创建复制进程repn ............................................................... 17 2.18启动生产端传输进程和容灾端复制进程 ..................................... 17 2.19测试场景.............................................................................. 17 三GoldenGate基本运维命令 ........................................................... 17 四、常见故障排除 .............................................................................. 18

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值