OGG_Oracle_to_Mysql

来源:这里教程网 时间:2026-03-03 15:16:21 作者:

OGG 安装 ORACLE11.2.0.4同步数据到MYSQL5.7 服务器配置信息

操作系统

el7.x86_64

el7.x86_64

主机名

oracle11c

mysql

Ip 地址

192.168.31.167

192.168.31.79

数据库版本

Oracle 11.2.0.4.0

5.7.23 (GPL)

数据库字符集

utf8

utf8

数据库实例名

ORCL

mysql

Goldengate 用户/密码

oggorcl/oggorcl

oggmysql/oggmysql

Goldengate 版本

 Version 12.2.0.2.2

Version 12.2.0.2.2

安装包名

122022_fbo_ggs_Linux_x64_shiphome.zip

ggs_Linux_x64_MySQL_64bit.tar

迁移目标

JF.TEST

 

1.软件安装

1.1 ORACLE环境安装OGG

 # useradd -g oinstall ogg# id ogg# mkdir /u01/app/OGG# chown -R ogg:oinstall /u01/app/OGG# unzip 122022_fbo_ggs_Linux_x64_shiphome.zip# chown -R ogg:oinstall fbo_ggs_Linux_x64_shiphome                                             

 

1.2 Mysql 环境安装OGG

# grouadd ogg

# useradd -g oinstall ogg

# mkdir OGG

# cd OGG/

# tar -xvf /u01/soft/ggs_Linux_x64_MySQL_64bit.tar

# chown -R ogg:oinstall ../OGG

 

 

2. 修改操作系统用户变量

2.1 ORACLE环境修改变量

ORACLE端

export PATH

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1

export OGG_HOME=/u01/app/OGG

export PATH=$OGG_HOME/bin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH:$OGG_HOME

export PATH=$ORACLE_HOME/bin:$PATH

export ORACLE_SID=ORCL 

2.2 登录测试

ORACLE端   MYSQL端  

2.3 测试表建立

ORACLE端

SQL> create tablespace ORCL datafile '/u01/app/oracle/oradata/ORCL/orcl01.dbf' size 200m;

SQL> create user JF identified by manager default tablespace orcl;

SQL> GRANT source,connect TO JF;

SQL> conn jf/manager

SQL> create table TEST (ID int,NAME varchar2(200));

SQL> insert into TEST values (1,'zhansan');

SQL> insert into TEST VALUES (2,'lisi');

SQL> commit;

SQL> col id format 9,999

SQL> col name format a20

SQL> select * from TEST; MYSQL端

mysql> create database oggmysql;

mysql> create database TEST;

mysql > create user 'oggmysql'@'%' identified by 'oggmysql';

mysql> GRANT ALL ON *.* TO 'oggmysql'@'%'; 

# mysql -uJF -p

mysql> use TEST

mysql> show tables;

mysql> create table TEST (id int,name varchar(200)); 

3.配置OGG

3.1 建立OGG数据库用户

ORACLE端

SQL> create tablespace ogg datafile '/u01/app/oracle/oradata/ORCL/ogg01.dbf' size 200M;

SQL> create user oggorcl identified by oggorcl default tablespace ogg;

SQL> grant CONNECT, RESOURCE to oggorcl;

SQL> grant SELECT ANY DICTIONARY, SELECT ANY TABLE to oggorcl;

SQL> grant ALTER ANY TABLE to oggorcl;

SQL> grant FLASHBACK ANY TABLE to oggorcl;

SQL> grant EXECUTE on DBMS_FLASHBACK to oggorcl;

SQL> grant insert any table to oggorcl;

SQL> grant update any table to oggorcl;

SQL> grant delete any table to oggorcl;

SQL> ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE;

SQL> grant execute on sys.DBMS_CAPTURE_ADM to oggorcl;

SQL> select NAME,OPEN_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database;

SQL> alter database force logging;

SQL> alter database add SUPPLEMENTAL log data;

SQL> select NAME,OPEN_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database;

SQL> archive log list;

SQL> shutdown immediate

SQL> startup mount;

SQL> alter database archivelog;

  

3.2 运行OGG支持DDL脚本

ORACLE端进入OGG的家目录下执行:SQL> @marker_setup.sql Enter Oracle GoldenGate schema name:oggorclSQL> @ddl_setup.sql Enter Oracle GoldenGate schema name:oggorclSQL> @role_setup.sql Enter Oracle GoldenGate schema name:oggorclSQL> @ddl_enable.sql  

3.3 创建OGG管理目录

ORACLE端[ogg@oracle11c OGG]$ ./ggsciGGSCI (oracle11c.vastdata.com) 1> create subdirs MYSQL端[ogg@mysql OGG]$ ./ggsciGGSCI (mysql.vastdata.com.cn) 1> create subdirs  注:

名字

用途

dirprm

存放OGG参数配置信息

dirrpt

存放进程报告文件

dirchk

存放检查点文件

dirpcs

存放进程状态文件

dirsql

存放SQL脚本文件

dirdef

存放DEFGEN工具生成的数据定义文件

dirdat

存放Trail文件,也就是captue进程捕获的日志文件

dirtmp

当事务需要的内存超过已分配内存时,默认存放在这个目录

 

3.4 源端添加表级TRANDATA

添加表级的trandata可以理解为需要将哪些用户的哪些表和目标库同步,其实也是添加表级的supplemental log。  ORACLE端> dblogin USERID oggorcl,PASSWORD oggorcl> add trandata JF.test> INFO TRANDATA JF.* 

3.5 配置MGR管理进程

ORACLE端> EDIT PARAMS MGR添加内容如下

PORT 7809

PURGEOLDEXTRACTS /u01/app/OGG/dirdat, USECHECKPOINTS> view params MGR  MYSQL端> EDIT PARAMS MGR添加内容如下

PORT 7809

PURGEOLDEXTRACTS /u01/OGG/dirdat, USECHECKPOINTS

ACCESSRULE, PROG *, IPADDR 192.168.31.167, ALLOW> view params MGR> start mgr        > info mgr  注:

PORT:7809                         OGG管理进程的监控端口

PURGEOLDEXTRACTS         清理不需要的TRAIL文件

../dirdat                              trail文件存放位置

USECHECKPOINTS              使用检查点队列 

3.6 配置初始化数据进程

ORACLE端> ADD EXTRACT EINI_1, SOURCEISTABLE> INFO EXTRACT *, TASKS> EDIT PARAMS EINI_1添加内容如下

EXTRACT EINI_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

SETENV (ORACLE_SID=ORCL)

USERID oggorcl, PASSWORD oggorcl

RMTHOST 192.168.31.79, MGRPORT 7809

RMTTASK REPLICAT, GROUP RINI_1

TABLE JF.test;> view PARAMS EINI_1

  注:

EXTRACT EINI_1 :         说明这是个EXTRACT进程,名字是EINI_1

SETENV                       环境变量,一定要设置和数据库字符集一致,否则可能造成乱码

USERID                        数据库OGG用户

PASSWORD                 数据库OGG用户的密码

RMTHOST                   目标地址

MGRPORT                   目标端MGR管理进程监听的端口

RMTTASK REPLICAT     目标端REPLIC应用进程的组合名字

TABLE                          源端要初始化数据的表的名字 

3.7 配置目标端REPLICAT进程

  MYSQL端> EDIT PARAMS RINI_1添加内容如下

REPLICAT RINI_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

DBOPTIONS HOST 192.168.31.79,CONNECTIONPORT 3306

ASSUMETARGETDEFS

TARGETDB TEST ,USERID oggmysql, PASSWORD oggmysql

DISCARDFILE /u01/OGG/dirrpt/RINIaa.dsc, PURGE

MAP JF.*, TARGET TEST.*;> view params RINI_1> add replicat RINI_1,specialrun

 REPLICAT                     RINI_1           说明这是REPLICAT应用进程,名字叫RINI_1SETENT                       语言变量ASSUMETARGETDEFS  告诉OGG目标端和源端需要同步的表的结构完全一致。USERID\PASSOWRD    账号|密码DICCARDFILE               错误信息存放的位置以及命名规则MAP                            源端捕获的表的名字TARGET                       目标端同步标的名字,可以不在一个SCHEMA   

3.8 初始化数据

ORACLE端> START EXTRACT EINI_1> view report EINI_1

  MYSQL端mysql> select * from TEST; 

3.9 配置OGG的检查点

此步骤不是必须的,但是为了让OGG网络中断、服务器宕机、掉电等在突发情况也能正确断点续传,ORACLE建议配置OGG的检查点队列。 ORACLE端> EDIT PARAMS ./GLOBALS添加如下内容

CHECKPOINTTABLE oggorcl.ggschkpt > ADD CHECKPOINTTABLE oggorcl.ggschkpt> info CHECKPOINTTABLE oggmysql.ggschkpt  登录数据库检查  MYSQL端 > dblogin SOURCEDB oggmysql USERID oggmysql,PASSWORD oggmysql> EDIT PARAMS ./GLOBALS添加内容如下:

CHECKPOINTTABLE oggmysql.ggschkpt> ADD CHECKPOINTTABLE oggmysql.ggschkpt  登录数据库检查 

3.10 源端配置捕获进程

现在已经可以配置数据同步了,下面在源端配置捕获进程。  ORACLE端> EDIT PARAMS EORA_1添加内容如下:

EXTRACT EORA_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

SETENV (ORACLE_SID=ORCL)

USERID oggorcl, PASSWORD oggorcl

EXTTRAIL /u01/app/OGG/dirdat/aa

TABLE JF.test;> ADD EXTRACT EORA_1, TRANLOG, BEGIN NOW> ADD EXTTRAIL /u01/app/OGG/dirdat/aa,EXTRACT EORA_1,MGEABYTES 5 启动源端捕获进程EORA_1 > START EXTRACT EORA_1> INFO EXTRACT EORA_1  

3.11 源端配置PUMP传输进程

> EDIT PARAMS PORA_1> view PARAMS PORA_1添加内容如下:

EXTRACT PORA_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

PASSTHRU

RMTHOST 192.168.31.79, MGRPORT 7809

RMTTRAIL /u01/OGG/dirdat/pa

TABLE JF.test;  添加PUMP进程PORA_1到OGG,并指定本地TRAIL的路径> ADD EXTRACT PORA_1, EXTTRAILSOURCE /u01/app/OGG/dirdat/aa为PUMP进程PORA_1指定传输到目标端的文件路径及格式> ADD RMTTRAIL /u01/OGG/dirdat/pa, EXTRACT PORA_1, MEGABYTES 5> START EXTRACT PORA_1> INFO EXTRACT PORA_1 

3.12目标端配置同步进程

MYSQL端  > EDIT PARAMS RORA_1添加内容如下:

REPLICAT RORA_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

DBOPTIONS HOST 192.168.31.79,CONNECTIONPORT 3306

TARGETDB TEST ,USERID oggmysql, PASSWORD oggmysql

HANDLECOLLISIONS

ASSUMETARGETDEFS

DISCARDFILE /u01/OGG/dirrpt/RORA_aa.DSC, PURGE

MAP JF.*, TARGET TEST.*; 添加应用进程> add replicat RORA_1,exttrail /u01/OGG/dirdat/pa, checkpointtable oggmysql.ggschkpt > START REPLICAT RORA_1> INFO REPLICAT RORA_1 

4.验证

 

4.1 进程状态检查

ORACLE端> info all  MYSQL端> info all 

4.2 数据验证

ORACLE端

  MYSQL端  

相关推荐