oracle goldengate上线步骤和常见问题整理

OGG上线步骤

  1. 源服务器
    1. 确认生产环境是否与测试环境一致(操作系统和数据库版本),如果不一致,需提前告知生产的环境信息。
    2. 下载对应的安装介质,网址

http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html

https://edelivery.oracle.com/osdc/faces/SoftwareDelivery

    1. 安装产品
    2. 源库为DB2的安装方法

建议使用安装数据库的用户操作,直接解压到任意目录即可

源库为Oracle安装方法

一般使用静默安装,解压安装文件,编辑解压目录下的xxx/Disk1/response/oggcore.rsp文件

oracle.install.responseFileVersion保持默认

INSTALL_OPTION根据提示进行填写

SOFTWARE_LOCATION软件将要安装的目录

START_MANAGER=false就可以,一般在安装后再配置

MANAGER_PORT不填,一般在安装后再配置

DATABASE_LOCATION不填

INVENTORY_LOCATION一般在安装目录的同级建oggInventory目录

UNIX_GROUP_NAME=oracle

保存后找到runInstaller目录执行静默安装命令:

./runInstaller -silent -responseFile response/oggcore.rsp直到安装完成

  1. 配置源端采集
    1. 设置环境变量
    2. 配置采集前确认源数据库参数

LD_LIBRARY_PATH=/home/ogg/ogg:/usr/java/jdk1.7.0_71/jre/lib/amd64/server

值需根据实际情况修改

源库为DB2

确认是否开启归档模式

db2 connect to xxx

db2 get db cfg | grep LOGARCHMETH查看xxx log archive method为LOGRETAIN

表示已开启

如果为NO,请源库管理员开启归档

下面为自行开启归档的办法(部分版本,不行请找度娘):

修改logretiain参数:db2 update db cfg for xxx using LOGRETAIN ON

执行整库备份:

db2 force applications all

db2 BACKUP DATABASE xxx to /dev/null

  1. 源库为Oracle
    1. 查看LOG_MODE状态

sqlplus /nolog

SQL>conn /as sysdba;

SQL>select log_mode from v$database;

若不是ARCHIVELOG状态,需设置归档模式(如果允许,执行如下操作设置归档)

SQL>shutdown immediate;

SQL>startup mount;

SQL>select open_mode from v$database;

SQL> alter database archivelog;

SQL>alter database open;

打开force logging

SQL>select force_logging from v$database;

若为NO,需改为yes

SQL>alter database force logging;

添加数据库附加日志

SQL>alter database add supplemental log data(primary key,unique) columns;

切换日志确保附加日志生效

SQL>alter system switch logfile;

数据采集用户赋权

SQL>grant select on sys.props$ to username;

SQL>grant select any dictionary to username;

报WARNING OGG-00706错误的时候设置

SQL>grant execute on sys.DBMS_CAPTURE_ADM to username;

数据库为oracle11.2.0.4,12.1.0.2+需要设置

SQL>alter system set enable_goldengate_replication=true scope=both;

  1. 配置采集
    1. 配置MGR

安装目录执行./ggsci

GGSCI >create subdirs

GGSCI >edit param mgr

在编辑界面输如port 7809

其他参数请参考官方文档

保存后执行

GGSCI >start mgr

  1. 添加采集表附加日志

源库为Oracle

GGSCI >dblogin userid xxx,password xxx

GGSCI >info trandata xxx.xxx

GGSCI >add trandata xxx.xxx,allcols

源库为Db2 (sourcedb:为实例名)

GGSCI >dblogin sourcedb xx,userid xx,password xx

dblogin sourcedb db2inst1,userid db2inst1,password 1

GGSCI >info trandata xxx.xxx

GGSCI >add trandata xxx.xxx

  1. 配置EXTRACT

将测试环境的prm采集文件放到安装目录下的dirprm目录下

安装目录执行./ggsci

Oracle使用begin now, db2使用eof

GGSCI >add ext xxx,tranlog begin now

GGSCI >add ext xxx,tranlog eof

直接投递到目标端

GGSCI >add rmttrail ./dirdat/yy,ext xxx,megabytes 200

如果先抽取到本地,再投递

GGSCI >add exttrail ./dirdat/yy,ext xxx, megabytes 200    

(如果先抽取本地再投递,需要再配置一个进程)

然后启动抽取进程

GGSCI >start xxx

查看进程信息,如果为running且checkpoint在变化为正常

GGSCI >info xxx

查看进程状态

GGSCI >stats xxx

注:上面红色的xxx必须和prm文件名保持一致,yyprm里配置的保持一致

  1. 配置初始化进程

复制需要初始化的采集配置prm文件,将其中的配置

Rmttrail ./dirdat/yy部分修改为

rmtfile ./dirdat/i1,maxfiles 999999, megabytes 2000,append

红色部分根据实际情况修改

添加初始化进程

GGSCI >add extract xxx,sourceistable

GGSCI >start xxx

查看进程状态,如果为running且checkpoint在变化为正常

GGSCI >info xxx

  1. 配置待采集表的表定义文件

如果OGG软件版本低于12.0,需执行本部分操作。其他版本忽略

编辑文件vi def.prm

defsfile ./dirdef/xxx.def

sourcedb xx, userid xx, password xx

table xx.xxxx;

table xx.xxxx;

保存文件到ogg安装目录下dirdef目录中

在ogg安装目录中执行命令:./defgen paramfile dirdef/def.prm

执行完成后,dirdef目录下会生成xxx.def文件,将此文件copy到目标服务器ogg安装目录的dirdef目录下

  1. 注意事项

为保证数据不遗漏,需在开启初始化的时候,记录该checkpoint点。具体步骤为:

如果为新的采集进程,需先添加实时采集进程后再进行初始化操作。初始化完成后,开启实时采集,从之前添加进程的时间开始做增量采集。

如果为已有的进程添加新表,需先配置好新表后重启进程,使新表生效后,停止实时采集,开启初始化。初始化完成后开启实时进程,做增量数据采集。

  1. 目标服务器
    1. 配置复制进程
      1. 检查数据队列文件

进入安装目录下dirdat目录,查看源端采集进程对应的数据队列文件是否到达,是否持续增长。如果没有,则可能是源端采集挂了。需检查

  1. 配置进程

如果数据队列正常,进入安装目录下dirprm目录,复制任意一个已经启动的进程文件,将文件内容的进程名修改成文件名一致,将schema修改成源端采集所对应的schema,如果源端OGG版本低于12.0,还需加上表定义文件

SourceDefs ./dirdef/xxx.def

Example:

REPLICAT loanacc

setenv(NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")

TARGETDB LIBFILE libggjava.so SET property=dirprm/rjava.props

REPORTCOUNT EVERY 10 seconds, RATE

GROUPTRANSOPS 10000

SourceDefs ./dirdef/loan.def

MAP sclm.*, TARGET sclm.*;

完成配置文件后,执行

GGSCI >add rep xxx,exttrail ./dirdat/xx

如果需初始化,需再添加一个初始化replicat进程

GGSCI >add rep xxx,exttrail ./dirdat/xx

先启动初始化,待初始化完成后(源端stats xxx数据量和目标rep进程一直表示初始化完成),再启动实时进程。

GGSCI >start xxx

  1. 修改自动清理日志脚本(本项目需要,不一定适合所有)
    1. 修改重启参数

在目标服务器ogg目录下,编辑ogg_restart.cfg,在最后加上新增的复制进程

  1. 修改日志删除参数

在目标服务器ogg目录下,编辑rmrpt.sh,在最后加上删除日志的语句

  1. 常见问题及解决办法
    1. Argument is too long

去掉源端和目标的的setenv(nls_lang=xxx)配置

  1. ERROR   OGG-03525 Time zone问题

在源端用户修改export TZ=Asia/Shanghai临时环境变量

对于AIX系统,检查用户的:

  1. .profile 
  2. /etc/environment

对于linux系统,检查.bash_profile

  1. Err mapping错误

确认源端采集的采集字段是否包含所有的主键信息

  1. 2018-05-24 15:38:17  ERROR   OGG-00817  db2ReadLog error [SC=-2657:SQL2657N  The Asynchronous Log Reader requires log file "S0001095.LOG" which does not currently reside in the database log directory].

2018-05-24 15:38:17  ERROR   OGG-01668  PROCESS ABENDING.

日志已经被删除,对测试可以重新设置采集点,但生产慎用。

采集端执行:

对DB2数据库命令:alter xxx,tranlog eof

对ORACLE数据库:alter xxx,tranlog begin now

  1. ERROR   OGG-00446  Could not find archived log for sequence 7298 thread 1 under default destinations SQL <SELECT  name    FROM v$archived_log   WHERE sequence# = :ora_seq_no AND         thread# = :ora_thread AND         resetlogs_id = :ora_resetlog_id AND         archived = 'YES' AND         deleted = 'NO' AND         name not like '+%'         AND standby_dest = 'NO' >, error retrieving redo file name for sequence 7298, archived = 1, use_alternate = 0Not able to establish initial position for sequence 7298, rba 12440592.

2018-06-22 09:58:22  ERROR   OGG-01668  PROCESS ABENDING.

日志已经被删除,对测试可以重新设置采集点,但生产慎用。

采集端执行:

对DB2数据库命令:alter hxh,tranlog eof

对ORACLE数据库:alter xxx,tranlog begin now

  1. ERROR   OGG-00423  Could not find definition for SCLM.xxx.

采集的表没有def在文件中更新。需要在采集端编辑文件vi def.prm

加入

table SCLM.DEBLACK;

保存文件到ogg安装目录下dirdef目录中

在ogg安装目录中执行命令:./defgen paramfile dirdef/def.prm

执行完成后,dirdef目录下会生成 loan.def文件,将此文件copy到目标服务器ogg安装目录的dirdef目录下

  1. 设置读取文件编号

alter xxxx,extseqno 16,然后info,看看是不是到16了

  1. 00212日志中出现提示此类提示,原因是低版本问题,在COLS后面加入空格后,再输入(xxxxxxx)就能解决。
    1. 2018-05-31 14:47:16  ERROR   OGG-00411  Must be PURGE or APPEND.

2018-05-31 14:47:16  ERROR   OGG-01668  PROCESS ABENDING.

在编译def文件  ./defgen paramfile dirdef/def.prm  时发生错误

原因:def文件中存在多余空格

defsfile ./dirdef/ drst.def

改为

defsfile ./dirdef/drst.def

  1. ERROR   OGG-03510字符集错误

在配置目标端时可能会报字符集错误

在prm文件中加入

SOURCECHARSET UTF-8 或者 SOURCECHARSET ZHS16GBK 或者 SOURCECHARSET GB18030 根据采集端字符集选择

4.11问题:ERROR  OGG-15050  Error loading Java VM runtime library: (2 No such file or directory)

解决办法:需要将Java的libjvm.so 和 libjsig.so库文件所在目录加入LD_LIBRARY_PATH环境变量,

需要注意的是,LD_LIBRARY_PATH环境变量成效后,需要将MGR也重启一下

目标端bigdata:要求必须jdk1.7

export GG_HOME=/data/oggt

export PATH=$PATH:$GG_HOME

export LD_LIBRARY_PATH=$GG_HOME:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.45.x86_64/jre/lib/amd64/server

4.12问题: java.lang.UnsupportedClassVersionError:oracle/goldengate/datasource

/UserExitMain :Unsupported major.minor version 52.0.

原因:OGGforBigData要的1.8 Java版本,我直接配到oracle用户的.bash_profile中

解决办法:

export JAVA_HOME=/keduox/jdk1.8.0_111

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

export LD_LIBRARY_PATH=/lib:/usr/lib:$JAVA_HOME/jre/lib/amd64/server:$JAVA_HOME/jre/lib/amd64; export LD_LIBRARY_PATH

4.13出现这种错误:2013-08-29 10:09:54  WARNING OGG-00769  Oracle GoldenGate Delivery for MySQL, rep1.prm:  MySQL Login failed: . SQL error (2002). Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

环境变量:

export MYSQL_UNIX_PORT=/var/lib/mysql/mysql.sock

解决方法:

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

4.14 2018-07-14 21:36:37  ERROR   OGG-01044  The trail '/ogg/dirdat/R4' is not assigned to extr act 'P4'. Assign the trail to the extract with the command "ADD EXTTRAIL/RMTTRAIL /ogg/dirdat/R4, EXTRACT P4".

解决办法:

add exttrail /ogg/dirdat/R4, EXTRACT P4

4.15问题:WARNING OGG-01877 Missing explicit accessrule for server collector。

解决办法:在mgr中,添加:ACCESSRULE, PROG SERVER, ALLOW

 

猜你喜欢

转载自blog.csdn.net/hexinghua0126/article/details/81322178