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

OGG 21c值得注意的几点变化

IT那活儿 2022-06-13
2991
点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!! 

  
随着Oracle数据库版本的迭代,Oracle GoldenGate的版本也随之迭代,近期在测试GoldenGate最新发布的21c过程中,遇到一些与以往版本相比变化比较大的地方,在此与各位分享。



安装方式


针对 Oracle 数据库的GoldenGate介质,现在只需要单一的安装配置,而不像以前的OGG版本,需要针对不同的DB版本(11g/12c/18c/19c)进行单独的安装;而且也不再需要安装额外的DB客户端。

通过响应文件也可以看到,已经无需指定数据库具体版本了。

连接数据库


软件安装完成后,尝试通过GGSCI连接数据库,发现报如下错误:
通过查询相关报错,发现其实跟上面所说的改变有关:
意思就是,OGG 21c自带了客户端lib文件,如果软件位于中间层(某些特殊架构下,OGG软件与Oracle软件不在同一台服务器上),可以不需要安装Oracle客户端。但是自此,通过GGSCI连接数据库就需要指定TNS,环境变量则需要配置TNS_ADMIN的具体路径。
必须配置正确后,才可以正常连接数据库并启动进程
测试的环境变量参考如下:
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
umask 022
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=orcl
export ORACLE_BASE=/opt/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/jdk/bin:$ORACLE_HOME/OPatch
export NLS_LANG=american_america.ZHS16GBK
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:/lib:/usr/lib

export OGG=/ogg
export PATH=$PATH:$ORACLE_HOME/bin:/ogg
export LD_LIBRARY_PATH=/ogg:$LD_LIBRARY_PATH
export PATH


扩展覆盖范围


扩展的微服务架构覆盖范围

OGG 21.1版本后,新增了Mysql、SQL Server、DB2、Big Data的微服务架构,方便用户监控管理。

元数据输出


OGG for Bigdata的元数据输出

OGG for Bigdata从21.1开始,默认不再自动输出元数据,以投递到kafka集群的参数为例,以下参数已经废弃:
gg.handler.name.includePrimaryKeys
gg.handler.name.includeTableName
gg.handler.name.includeOpType
gg.handler.name.includeOpTimestamp
gg.handler.name.includeCurrentTimestamp
gg.handler.name.includePosition
gg.handler.name.iso8601Format

官方文档里有相应说明:

使用新的gg.handler.name.format.metaColumnsTemplate参数,具体说明如下:
我测试的to kafka的复制进程参数参考如下:
gg.handlerlist = kafkahandler
gg.handler.kafkahandler.type=kafka
gg.handler.kafkahandler.KafkaProducerConfigFile=custom_kafka_producer.properties
gg.handler.kafkahandler.topicMappingTemplate=test
gg.handler.kafkahandler.SchemaTopicName=mytest
gg.handler.kafkahandler.format=avro_op
gg.handler.kafkahandler.format=delimitedtext
gg.handler.kafkahandler.format.fieldDelimiter=|
gg.handler.kafkahandler.format.pkUpdateHandling=update
gg.handler.kafkahandler.BlockingSend =false
gg.handler.kafkahandler.includeTokens=false
gg.handler.kafkahandler.mode=op
gg.handler.kafkahandler.format.nullValueRepresentation=
gg.handler.kafkahandler.format.iso8601Format=false
gg.handler.kafkahandler.format.metaColumnsTemplate=${optype},${objectname}
gg.handler.kafkahandler.format.insertOpKey=I
gg.handler.kafkahandler.format.updateOpKey=U
gg.handler.kafkahandler.format.deleteOpKey=D
gg.handler.kafkahandler.format.truncateOpKey=T
gg.contentreplaceregex=(?<=^.{10}):
gg.contentreplacestring=CDATA[ ]
goldengate.userexit.timestamp=utc+8
goldengate.userexit.writers=javawriter
javawriter.stats.display=TRUE
javawriter.stats.full=TRUE
gg.log=log4j
gg.log.level=INFO
gg.report.time=30sec
gg.classpath=dirprm/:/data/kafka/libs/*
javawriter.bootoptions=-Xmx512m -Xms32m -Djava.class.path=ggjava/ggjava.jar

测试消费时,可以正常显示源端数据DML操作的类型,以及具体的表名。


END



本文作者:许 珣

本文来源:IT那活儿(上海新炬王翦团队)

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论