oracle迁移到mysql方案之——ogg(goldengate)

source源端 oracle 11.2.0.4 ogg12c
ip:10.200.3.193 系统centos 7.1

1. 创建source表和一些初始化数据
su - oracle
sqlplus / as sysdba
SQL>alter database add supplemental log data;
SQL>select supplemental_log_data_min from v$database;

SQL>alter database forcelogging;

SQL> select supplemental_log_data_min from v$database;
NO

SQL> alter database add supplemental log data;

Database altered.
SQL> alter system switch logfile;

System altered.

SQL> select supplemental_log_data_min from v$database;
YES
SQL> create tablespace ggs;
Tablespace created.
SQL> create user ggs identified by ggs default tablespace ggs;
User created.
SQL> grant connect,resource,dba to ggs;
SQL> alter system set undo_retention=86400;
System altered.

SQL> grant flashback any table to ggs;

先配置参数进行静默安装---参考centos7.1之goldengate12c的安装

2.在source源端上创建Manager参数文件并指定端口和一些需要的参数选项:

cd /u01/app/ggs

./ggsci
创建相关目录:GGSCI (testtech3-193) 1> create subdirs

配置mgr
view params mgr

port 7809
dynamicportlist 7810-7820,7830

启动start mgr

GGSCI (testtech3-193) 1> dblogin userid ggs password ggs
Successfully logged into database.
GGSCI (testtech3-193) 1> REGISTER EXTRACT ext1 DATABASE
GGSCI (testtech3-193) 2> add trandata workflow.act_ru_execution

3.编辑defgen文件
vi /u01/app/ggs/dirprm/defgen.prm

defsfile /u01/app/ggs/dirdef/table_del,purge
userid ggs, password ggs
table WORKFLOW.act_ru_execution;

cd /u01/app/ggs

defgen paramfile /u01/app/ggs/dirprm/defgen.prm

cd /app/ggs/dirdef/
把文件复制到目标端的/app/ggs/dirdef/

4.在source源端上执行以下命令添加一个Extract进程叫做init进行数据初始化:

cd /u01/app/ggs
GGSCI (testtech3-193)>./ggsci
GGSCI (testtech3-193)>add extract init,sourceistable
GGSCI (testtech3-193)>info extract *, task
GGSCI (testtech3-193)>edit params init

extract init
userid ggs password ggs
rmthost 10.200.3.178,mgrport 8809
rmttask replicat,group repinit
table WORKFLOW.act_ru_execution;

目标端target mysql5.6 ogg 12c

ip:10.200.3.178 系统centos 7.1

1.创建目标端target数据库和相应的表
mysql -uroot -p
创建用于OGG使用登陆的数据库,例如需要存放checkpoint table

mysql> create database ogg;
Query OK, 1 row affected (0.00 sec)

mysql> grant all on . to [email protected] identified by ‘ggs‘;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)
2.创建目标端target应用进程
GGSCI (techtest3-178)>dblogin sourcedb [email protected]:3306 userid ogg password ggs
GGSCI (techtest3-178)>add checkpointtable ogg.ck_table

GGSCI (techtest3-178)>add replicat repdel,exttrail /u01/app/ggs/dirdat/dl,checkpointtable ogg.ck_table
GGSCI (techtest3-178)>edit params repdel

replicat repdel
targetdb [email protected]:3306 userid ogg password ggs
handlecollisions
SOURCECHARSET zhs16gbk ----源端字符集,一定要设置,特别是源端和目标端字符集不一致的情况,此参数必设置。
sourcedefs /u01/app/ggs/dirdef/table_def
discardfile /u01/app/ggs/dirrpt/repdel.dsc,purge
map WORKFLOW.act_ru_execution, target activiti.act_ru_execution;

由于是异构环境,所以要指定sourcedefs参数,使用source数据库的数据定义文件。
handlecollisions参数来处理初始化加载的结果与实时改变同步捕获数据的冲突。

目标端:view params mgr

port 8809
DYNAMICPORTLIST 8840-8850
ACCE×××ULE, PROG REPLICAT, IPADDR 10.200.3.139 ALLOW

3.目标端target创建初始化加载交付参数文件

GGSCI (techtest3-178)>add replicat repinit,specialrun

GGSCI (techtest3-178)>edit params repinit

replicat repinit

targetdb [email protected]:3306 userid ogg password ggs

sourcedefs /u01/app/ggs/dirdef/table_def

discardfile /u01/app/ggs/dirrpt/repinit.dsc,purge

sqlexec "SET FOREIGN_KEY_CHECKS=0"

map WORKFLOW.act_ru_execution, target activiti.act_ru_execution;

4.在source源端添加Extract组
GGSCI (testtech3-193) > ADD EXTRACT extdel,TRANLOG, BEGIN NOW
GGSCI (testtech3-193) >edit params extdel
EXTRACT extdel
userid ggs, password ggs
GETTRUNCATES
REPORTCOUNT EVERY 1 MINUTES, RATE
numfiles 5000
DISCARDFILE ./dirrpt/extdel.dsc, APPEND, MEGABYTES 1000
WARNLONGTRANS 2h, CHECKINTERVAL 3m
EXTTRAIL ./dirdat/dl
TRANLOGOPTIONS CONVERTUCS2CLOBS
THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 60000
DBOPTIONS ALLOWUNUSEDCOLUMN
table WORKFLOW.act_ru_execution;
GGSCI (testtech3-193) >add exttrail ./dirdat/dl, extract extdel, megabytes 500

GGSCI (testtech3-193) >ADD EXTRACT dpedel, EXTTRAILSOURCE ./dirdat/dl

GGSCI (testtech3-193) >edit params dpedel

EXTRACT dpedel
RMTHOST 10.200.3.178, MGRPORT 8809, compress
PASSTHRU
numfiles 50000
RMTTRAIL ./dirdat/dl
DYNAMICRESOLUTION
table WORKFLOW.act_ru_execution;

GGSCI (testtech3-193) >ADD RMTTRAIL ./dirdat/dl, EXTRACT dpedel, megabytes 500

以下是启动抽取和投递进程,由于oracle到mysql初始化无法做到像oracle一样的利用scn等。
大致思路是,先进程抽取数据,然后进行初始化操作。等初始化完了,启动应用进程会有冲突,处理冲突,解决问题。最后做数据对比。
GGSCI (testtech3-193) >start extdel
GGSCI (testtech3-193) >start dpedel

5.源端source启动初始化加载数据
在source源端启动之前配置的初始化加载提取任务init:
GGSCI (testtech3-193) >start init

在目标端target端看初始化数据加载复制进程的报告确认加载成功:

GGSCI (techtest3-178)> view report repinit

init初始化结束以后,进程会自动重启

6.最后目标端target启动repdel

确认初始化数据加载完成后关闭改变同步Replicat进程repdel的handlecollisions。

GGSCI (techtest3-178) 1> send repdel,nohandlecollisions

并将repdel参数文件中的handlecollisions参数去除,防止repdel下次启动时handlecollisions被再次启用。

最后验证数据:初始化数据,变更数据等

原文地址:http://blog.51cto.com/3048449/2133388

时间: 2024-07-29 11:51:28

oracle迁移到mysql方案之——ogg(goldengate)的相关文章

oracle迁移到mysql分库分表方案之——ogg(goldengate)

之前文章主要介绍了oracle 迁移到mysql,主要是原表原结构迁移,但是实际运维中会发现,到mysql以后需要分库和分表的拆分操作,这个时候,用ogg来做,也是很强大好用的.主要结合ogg的2个参数 参数1:filterUse a FILTER clause to select rows based on a numeric value by using basic operators or one or more Oracle GoldenGate column-conversion fu

从Oracle迁移到MySQL的各种坑及自救方案

当企业内部使用的数据库种类繁杂时,或者有需求更换数据库种类时,都可能会做很多数据迁移的工作.有些迁移很简单,有些迁移可能就会很复杂,大家有没有考虑过为了顺利完成复杂的数据库迁移任务,都需要考虑并解决哪些问题呢? 在以前的工作中,我迁移过Oracle到Informix.Oracle和SQLServer.Oracle到MySQL. 在目前的公司又因为去O的关系,做了大量的迁移工作,栽了不少坑,所以和大家交流一下在迁移的过程中的一些实践. 分享大纲: 去O前的准备与考虑 确定目标数据库 表和数据对象的

java项目数据库从oracle迁移到mysql 中 java部分的一些修改

java项目数据库从oracle迁移到mysql: mysql 连接url中useUnicode=true&characterEncoding=UTF-8 的作用:http://blog.csdn.net/afgasdg/article/details/6941712. pom.xml文件中dependency修改:http://mvnrepository.com/artifact/mysql/mysql-connector-java/6.0.6. =======================

Web系统从Oracle迁移至MySQL

http://www.linuxidc.com/Linux/2014-02/97335.htm 前两天领导给了个活,数据库迁移,原来的系统是用的Oracle数据库,现在要改成MySql,当时没多想就接下来了,原来的系统用的框架式SSI,于是大概想了下需要作调整无非以下几点 第一 数据库迁移 第二 应用程序的修改 下面详细来说下这个过程 一 数据库迁移 简单那的来说就是把oracle数据库里面的所有数据都迁移到MySql,这个可以用MySQLMigration Toolkit工具 MySQL发布了

适用MySQL Migration Toolkit 1.0 将oracle迁移到mysql中遇到的问题

这里主要说一下我在适用中碰到的问题,主要过程参考 http://www.cnblogs.com/duwenlei/p/3520759.html. 首先启动MySQLMigrationTool.exe 提示“initialized java loader”错误,如下图 后来发现是因为我的jdk是64位,而工具需要32位,再装个32位jdk,我装的是1.7,如果不想改环境变量启动参考 http://javabyraj.blogspot.com/2013/09/solution-for-initial

oracle迁移到mysql(仅使用脚本)

一直用oracle,最近研究了下mysql,先列举下mysql奇怪的特性 1. 不能存储毫秒精度的时间. 2. 如果有varchar, char就会自动变varhar. 3. timestamp时间范围比datatime小,精度一样, 而且就算你不insert/update,它的值也会自动改变. 4. 没有sequence可以用. 下面说下步骤吧. 首先你得有个mysql,如果没有请参考安装步骤. 1. 导出表结构, 并且创建到Mysql 2. oracle spool 命令导出数据 3. my

Oracle数据迁移至MySQL

ORACLE DB: 11.2.0.3.0 MYSQL DB: 5.5.14 因项目需求,需要将ORACLE生产中数据迁移至MYSQL数据库中作为初始数据,方法有如下几种: 1.ORACLE OGG 2.通过手动编写select “insert into”脚本 3.工具,本次我就是使用了工具(sqluldr2),工具下载地址可以到www.anysql.net去下载 使用方法:将sqluldr2.bin工具上传到oracle的bin目录下,[[email protected] bin]# chow

oracle数据迁移到mysql

首先要确保你的oracle和mysql连接没有问题,我的oracle10g和mysql5.2,工具是mysql-gui-tools-5.0-r17-win32.msi 叫MySQL Migration Tookit 然后安装这个MySQL Migration Tookit,下载地址是http://dev.mysql.com/downloads/gui-tools/5.0.html,按照你本地的环境下载,我下载的是Windows版本安装成功后打开软件,这个名字叫做:MySQL Mi个ration

数据库学习之--Oracle 架构与MySQL架构对比

数据库学习之--Oracle 架构与MySQL架构对比 一.Oracle .MySQL应用对比 如果要说明三者的区别,首先就要从历史入手. Oracle:中文译作甲骨文,这是一家传奇的公司,有一个传奇的大老板Larry Ellision. Ellision 32岁还一事无成,读了三个大学,没得到一个学位文凭,换了十几家公司,老婆也离他而去.开始创业时只有1200美元,却使得Oracle公司连续12年销售额每年翻一番. Oracle成立于1977年,早期的理论基础,反而来自于一篇IBM的论文<A