暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

OGG进程参数说明-收集整理

原创 Allen 2022-07-09
4813

1.管理进程(Manager):

源端:

PORT 7839
通信端口7839, 源端和目标端需要保持一致。
DYNAMICPORTLIST  7840-7939
动态端口列表的范围从7840到7939。当制定端口被占用或者出现通信故障,管理进程将会从列表中选择下一个端口尝试连接,避免通信端口的单点故障。
AUTOSTART EXTRACT *
当MGR进程启动后启动EXTRACT进程
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 2
当EXTRACT进程中断后尝试自动重启,每隔2分钟尝试启动一次,尝试5次。
PURGEOLDEXTRACTS /data/oracle/product/ogg_src/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 5
(相对路径写法)PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPDAYS 5
定期清理dirdat路径下的本地队列(local trail)。保留期限10天,过期后自动删除。从而控制队列文件的目录不会增长过大。
LAGREPORTHOURS 1
每隔一小时检查各进程延时情况,并记录到goldengate report文件。
LAGINFOMINUTES 30
进程复制延时超过30分钟,向日志文件记录一条错误日志
LAGCRITICALMINUTES 45
传输延时超过45分钟将写入警告日志

目标端:

USERID ogg, PASSWORD pwd
GoldenGate用户登录数据库的用户名和密码,密码未做加密处理。
如果密码需要加密使用:GGSCI (dbtrg) 1> encrypt password pwd ,ENCRYPTKEY default
可以得到加密后的密码字符串,之后配置进程若使用加密过的密码,需要带参数(ENCRYPTKEY default)。
例如:USERID ogg, PASSWORD xxx(加密过的密码) ,ENCRYPTKEY default
AUTOSTART REPLICAT *
当MGR进程启动后启动REPLICAT进程
AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 2
当REPLICAT进程中断后尝试自动重启,每隔2分钟尝试启动一次,尝试5次。
PURGEDDLHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10
删除DDL历史表,最小保存7天,最大保存10天。
PURGEMARKERHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10
删除MARKER历史表,最小保存7天,最大保存10天。

2.抽取进程(Extract):

SETENV(ORACLE_SID="orcl")
设置Oracle数据库实例sid
SETENV(NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
设置goldengate的字符集变量信息,此处值会覆盖操作系统级别的变量。该值需要和数据库字符集匹配一致。
REPORTCOUNT EVERY 30 MINUTES, RATE
每隔30分钟报告一次从程序开始到现在的抽取进程或者复制进程的事物记录数,并汇报进程的统计信息
DISCARDFILE /data/oracle/product/ogg_src/dirrpt/extsr.dsc, APPEND, MEGABYTES 1024
将执行失败的记录保存在discard file中,discard file文件记录了GoldenGate进程错误、数据库错误、GoldenGate操作等信息。该文件位于/data/oracle/product/ogg_src/dirrpt/extsr.dsc,大小为1024MB。 文件中已经包含记录的话,再后面继续追加,不删除之前的记录。
DISCARDROLLOVER AT 3:00
为了防止discard file被写满,每天3:00做一次文件过期设定
EXTTRAIL /data/oracle/product/ogg_src/dirdat/sr
队列文件路径, trail文件存放路径。
DYNAMICRESOLUTION
有时候开启OGG进程的时候较慢,可能是因为需要同步的表太多,OGG在开启进程之前会将需要同步的表建立一个记录并且存入到磁盘中,这样就需要耗费大量的时间。使用该参数来解决此问题。
DBOPTIONS  ALLOWUNUSEDCOLUMN
用于阻止抽取进程抽取数据时由于表含有unused列而导致进程异常终止(abend)。使用该参数,抽取进程抽取到unused列时也会向日志文件记录一条警告信息。
FETCHOPTIONS NOUSESNAPSHOT
默认值为 usesnapshot,表示利用数据库闪回读取数据。Nousesnapshot表示直接从原表读取相关数据。
NOCOMPRESSDELETES
COMPRESSDELETES参数是默认值,只记录删除有主键的值
NOCOMPRESSDELETES 参数可以记录所有列删除值
FETCHOPTIONS FETCHPKUPDATECOLS
当使用了HANDLECOLLISIONS时,请使用该参数。
复制进程出现丢失update记录(missing update)并且更新的是主键,update将转换成insert。由于插入的记录可能不是完整的行,若要保证完整需要加入此参数
WARNLONGTRANS
将长事务告警写入错误日志,例如:warnlongtrans 4h,checkinterval 10m表示10分钟检查一次,超过四小时的长事务记录到错误日志中
TranlogOptions DBLOGREADER
自动查找归档日志
tranlogoptions altarchivelogdest /data/test_arch
TRANLOGOPTIONS altarchivelogdest primary instance orcl1 /u02/Archive/ORCL/, altarchivelogdest instance orcl2 /u03/Archive/ORCL/
TRANLOGOPTIONS CONVERTUCS2CLOBS

本参数只用在extract端 UTF字符类型,并且11.1.1前处理CLOB才需要。
添加TRANLOGOPTIONS选项CONVERTUCS2CLOBS来提取参数文件。请确保仅在Oracle数据库具有UTF字符集时才使用上述参数。否则,它可能会破坏您的CLOB数据,例如,如果您使用WE8ISO8859P1作为数据库字符集
TRANLOGOPTIONS _DISABLESTREAMLINEDDBLOGREADER
此参数将强制DBLOGREADER API在切换之前检查重做日志的NAB标志,从而消除过早切换到新日志文件的可能性。此参数已成为V12.1.2.1.0及更高版本中的默认参数。
注意:参数_DISABLESTREAMLINEDDBLOGEADER只能从11.2.1.0.26开始使用。
TRANLOGOPTIONS MINEFROMACTIVEDG
goldengate12.1.2.1.0新特性:支持从ADG的在线日志中捕获变化
GETTRUNCATES | IGNORETRUNCATES
默认的在仅仅开启DML复制的情况下TRUNCATE是不被捕获的,如果需要捕获需加参数,EXTRACT端和REPLICAT端都需要开启
本组参数仅仅支持在未开启DDL复制的情况下需要TRUNCATE TABLE的情况,但是不支持
TRUNCATE paration;
如果需要TRUNCATE PARATITION请开启DDL复制
如果TUNCATE一个空表,在只支持DML的情况下是不捕获的,如果需要捕获请开启DDL复制
table ogg.*;
需要复制的对象列表

3.投递进程(Data Pump):

RMTHOST 10.0.0.64, mgrport 7839, COMPRESS
目标端主机IP,管理进程端口号,投递前压缩队列文件
PASSTHRU
表示传输进程直接跟抽取进程交互,而不再和数据库进行交互,减少数据库资源的利用。
RMTTRAIL /data/oracle/product/ogg_trg/dirdat/tr
目标端保存队列文件的目录
DYNAMICRESOLUTION
动态解析表名
table ogg.*;
复制范围和抽取进程对应即可

4.复制进程(Replicat):

REPORT AT 06:00
每天06:00定期生成一个report文件
REPORTCOUNT EVERY 30 MINUTES, RATE
每隔30分钟报告一次从程序开始到现在的抽取进程或者复制进程的事物记录数,并汇报进程的统计信息
REPORTROLLOVER AT 02:00
为了防止report file被写满,每天2:00做一次文件过期设定
sourcedefs /ogg/ogg/defgen.def
表定义文件
REPERROR DEFAULT, ABEND
除了特殊指定的REPERROR语句,报告所有复制期间出现的错误,回滚非正常中断的事物和进程。遇到不能处理的错误就自动abend,启动需要人工干预处理
ALLOWNOOPUPDATES
当源表有排除列情况或者有目标表不存在的列时,当更新这列goldengate默认报错。应用该参数后,即可让goldengate生成一条警告信息而不是报错。
ASSUMETARGETDEFS
使用ASSUMETARGETDEFS参数时,用MAP语句中指定的生产库源表和灾备端目标表具有相同的列结构。它指示的Oracle GoldenGate不在生产端查找源表的结构定义。
DBOPTIONS SUPPRESSTRIGGERS
禁用触发器
HANDLECOLLISIONS
用于goldengate自动过滤不能出来的冲突记录,为了严格保证数据一致性
源端insert,目标端无主键,会变成update
源端update,目标端无主键,会变成insert

“HANDLECOLLISIONS是我们使用goldengate过程中常有的一个REPLICAT参数,该参数依赖于主键或唯一索引处理冲突数据,常用于初始化阶段。对于无主键或唯一索引的表无法处理冲突,且可能导致重复记录。注意打开此参数则所有数据错误不管reperror如何配置均不再写discard文件,即所有数据冲突信息被默认规则处理,没有任何日志(则会忽略error mapping数据错误,而且不会报告到discard文件),因此日常复制不建议使用该参数;可予以考虑的特殊场景为只需新增数据,无需复制历史数据。
使用HANDLECOLLISIONS的几个场景: 
1. target丢失delete记录(missing delete),忽略该问题并不记录到discardfile
2.target丢失update记录(missing update)
更新的键值是主键=》 update转换成INSERT ,默认情况下插入记录不完整
更新的键值是非主键=》 忽略该问题并不记录到discardfile
3.重复插入已存在的主键值到target表中,这将被replicat转换为UPDATE现有主键值的行的其他非主键列

1 对于没有主键以及唯一索引的表
  对于update缺失行情况,目标库会转化为insert语句进行插入。
  对于delete缺失行情况,目标会会忽略操作。
  对于insert发现重复行情况,目标库会仍然进行插入操作。(导致数据重复) ----不受HANDLECOLLISIONS参数影响,继续插入

2 对于存在主键
  对于update缺失行情况,且抓取进程不使用fetchoptions fetchpkupdatecols参数,更新主键则目标库转化为insert操作,如果未更新主键则忽略。
  对于delete缺失情况,则忽略,
  对于insert发现重复行情况,转化成update语句,将重复列更新主键值为原来插入主键值。

3 对于存在唯一值索引
  对于update缺失行情况,目标库会转化为insert语句进行插入。
  对于delete缺失行情况,目标会会忽略操作。
  对于insert发现重复行情况,目标库执行先delete操作然后再insert。”
————————————————
此处来源原文链接:https://blog.csdn.net/oradbm/article/details/52104886

DISCARDFILE /data/oracle/product/ogg_trg/dirrpt/repsa.dsc, APPEND, MEGABYTES 1024
将执行失败的记录保存在discard file中,discard file文件记录了GoldenGate进程错误、数据库错误、GoldenGate操作等信息。该文件位于./dirrpt/repsa.dsc,大小为1024MB。 文件中已经包含记录的话,再后面继续追加,不删除之前的记录。
NOFILTERDUPTRANSACTIONS
在OGG 12c中,如果把目标端的replicat检查点往tail文件前面调整,默认情况下启动replicat是会自动跳过replicat停止之前事务,如果需要重新应用这些数据,需要在启动replicat时,加上NOFILTERDUPTRANSACTIONS
在修改replicat检查点时有提醒信息,如下:
12345GGSCI (test1 DBLOGIN as root) 43> alter replicat REP2MY, extseqno 0, extrba 0 

2017-03-03 08:27:25  INFO    OGG-06594  Replicat REP2MY has been altered through GGSCI. Even the start up position might be updated, duplicate suppression remains active in next startup. To override duplicate suppression, start REP2MY with NOFILTERDUPTRANSACTIONS option. REPLICAT altered.
未加NOFILTERDUPTRANSACTIONS启动replicat,过滤事务的信息如下:
123452017-03-03 08:11:44  INFO    OGG-03506  The source database character set, as determined from the trail file, is zhs16gbk. 2017-03-03 08:12:49  INFO    OGG-05663  CSN-based filtering suppressed a duplicate transaction from trail Seqno 0, RBA 0, with CSN 2084867 and transaction ID 4.23.1307. 2017-03-03 08:13:52  INFO    OGG-05663  CSN-based filtering suppressed a duplicate transaction from trail Seqno 0, RBA 0, with CSN 2084991 and transaction ID 10.22.2016.
修改检查点,然后重新应用事务,正确的姿势:
123ggsci> alter REPLICAT <rep_name> extseqno <trail sequence #>, extrba <rba within the trail> ggsci> START REPLICAT <rep_name> NOFILTERDUPTRANSACTIONS

reperror default,discard
跳过mapping报错,所更新的数据在目标端找不到
DBOPTIONS DEFERREFCONST
对Oracle的复制有效。将约束设置为可推迟,以延迟Oracle目标数据库对级联删除和级联更新引用完整性约束的检查和强制执行,直到提交副本事务为止。此时,如果存在违反约束的情况,则会生成错误
HANDLETPKUPDATE
定义即使目标数据库环境中存在数据完整性问题,replicat 进程仍然能够继续处理 trail 中的数据。
DISCARDROLLOVER AT 02:00
为了防止discard file被写满,每天2:00做一次文件过期设定
DISCARDROLLOVER
DISCARDROLLOVER {AT hh:mi |ON day |AT hh:mm ON day}
AT hh:mi
一天中对文件进行老化的时间。
有效值:
hh是一天中从00点到23点的一个小时。
mm从00到59分钟。
ON day
对文件进行老化的一周中的一天。
有效值:
SUNDAY
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY

MAP ogg.*, target ogg.*;
对应需要复制的对象,默认一一对应传输进程

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

目录
  • 源端:
  • 目标端:
  • 2.抽取进程(Extract):
  • 3.投递进程(Data Pump):
  • 4.复制进程(Replicat):