oracle历史数据迁移

oracle历史数据迁移,第1张

Oracle数据库的数据迁移方法有哪些呢

Windows中oracle服务启动 关闭脚本 oracle控制文件的管理 随着数据库管理系统和 *** 作系统平台的更新换代的速度的加快,数据库管理员经常需要在两个不同的数据库之间或在两种不同的系统平台之间进行数据迁移。

本文介绍了数据库数据迁移的一般步骤以及实现向Oracle8i数据库进行数据迁移的几种方法,并对它们的优缺点做了对比分析。 在开发环境向运行环境转换、低版本数据库向高版本数据库转换以及两个不同数据库之间进行转换时,数据库中的数据(包括结构定义)需要被转移并使之正常运行,这就是数据库中的数据迁移。

对于中小型数据库,如Foxpro中的*。dbf,这种迁移非常简单,一般只需通过简单的Copy就能完成。

但对于大型数据库系统,如Oracle 数据库,数据迁移就不那么简单了,它需要利用一定的技术和经验,有步骤按计划地完成。 数据迁移的一般步骤 对数据库管理人员来说,数据库数据迁移极具挑战性,一旦措施不当,珍贵的数据资源将面临丢失的危险,要成功地实现数据库数据平滑迁移,需要周密计划和充分准备,并按照一定的步骤来完成。

设计数据迁移方案 设计数据迁移方案主要包括以下几个方面工作:研究与数据迁移相关的资料,或在网站上查询相关内容、评估和选择数据迁移的软硬件平台、选择数据迁移方法、选择数据备份和恢复策略、设计数据迁移和测试方案等。 进行数据模拟迁移 根据设计的数据迁移方案,建立一个模拟的数据迁移环境,它既能仿真实际环境又不影响实际数据,然后在数据模拟迁移环境中测试数据迁移的效果。

数据模拟迁移前也应按备份策略备份模拟数据,以便数据迁移后能按恢复策略进行恢复测试。 测试数据模拟迁移:根据设计的数据迁移测试方案测试数据模拟迁移,也就是检查数据模拟迁移后数据和应用软件是否正常,主要包括:数据一致性测试、应用软件执行功能测试、性能测试、数据备份和恢复测试等。

准备实施数据迁移:数据模拟迁移测试成功后,在正式实施数据迁移前还需要做好以下几个方面工作:进行完全数据备份、确定数据迁移方案、安装和配置软硬件等。 正式实施数据迁移:按照确定的数据迁移方案,正式实施数据迁移。

测试数据迁移效果:按照数据迁移测试方案测试数据迁移效果,并对数据迁移后的数据库参数和性能进行调整,使之满足数据迁移后实际应用系统的需要。 移植系统应用软件:将实际应用系统的应用软件移植到数据迁移后的数据库系统上,并使之正常运行。

正式运行应用系统:在正式实施数据迁移成功并且数据库参数和性能达到要求后,就可以正式运行应用系统,并投入实际使用。

Oracle数据库的数据迁移方法是怎样的

主要介绍了Oracle数据库的数据迁移方法,详细内容请大家参考下文: 随着数据库管理系统和 *** 作系统平台的更新换代的速度的加快,数据库管理员经常需要在两个不同的数据库之间或在两种不同的系统平台之间进行数据迁移。

本文介绍了数据库数据迁移的一般步骤以及实现向Oracle8i数据库进行数据迁移的几种方法,并对它们的优缺点做了对比分析。 在开发环境向运行环境转换、低版本数据库向高版本数据库转换以及两个不同数据库之间进行转换时,数据库中的数据(包括结构定义)需要被转移并使之正常运行,这就是数据库中的数据迁移。

对于中小型数据库,如Foxpro中的*。dbf,这种迁移非常简单,一般只需通过简单的Copy就能完成。

但对于大型数据库系统,如Oracle 数据库,数据迁移就不那么简单了,它需要利用一定的技术和经验,有步骤按计划地完成。 数据迁移的一般步骤 对数据库管理人员来说,数据库数据迁移极具挑战性,一旦措施不当,珍贵的数据资源将面临丢失的危险,要成功地实现数据库数据平滑迁移,需要周密计划和充分准备,并按照一定的步骤来完成。

设计数据迁移方案 设计数据迁移方案主要包括以下几个方面工作:研究与数据迁移相关的资料,或在网站上查询相关内容、评估和选择数据迁移的软硬件平台、选择数据迁移方法、选择数据备份和恢复策略、设计数据迁移和测试方案等。 进行数据模拟迁移 根据设计的数据迁移方案,建立一个模拟的数据迁移环境,它既能仿真实际环境又不影响实际数据,然后在数据模拟迁移环境中测试数据迁移的效果。

数据模拟迁移前也应按备份策略备份模拟数据,以便数据迁移后能按恢复策略进行恢复测试。 测试数据模拟迁移 根据设计的数据迁移测试方案测试数据模拟迁移,也就是检查数据模拟迁移后数据和应用软件是否正常,主要包括:数据一致性测试、应用软件执行功能测试、性能测试、数据备份和恢复测试等。

准备实施数据迁移 数据模拟迁移测试成功后,在正式实施数据迁移前还需要做好以下几个方面工作:进行完全数据备份、确定数据迁移方案、安装和配置软硬件等。 正式实施数据迁移 按照确定的数据迁移方案,正式实施数据迁移。

测试数据迁移效果 按照数据迁移测试方案测试数据迁移效果,并对数据迁移后的数据库参数和性能进行调整,使之满足数据迁移后实际应用系统的需要。 移植系统应用软件 将实际应用系统的应用软件移植到数据迁移后的数据库系统上,并使之正常运行。

以上是我对于这个问题的解答,希望能够帮到大家。

Oracle数据库迁移几种方式分别是什么

我们常常需要对数据进行迁移,迁移到更加高级的主机上、迁移到远程的机房上、迁移到不同的平台下…… 一、exp/imp: 这也算是最常用最简单的方法了,一般是基于应用的owner级做导出导入。

*** 作方法为:在新库建立好owner和表空间,停老库的应用,在老库做exp user/pwd owner=XXX file=exp_xxx。 dmp log=exp_xxx。

log buffer=6000000,传dmp文件到新库,在新库做imp user/pwd fromuser=XXX touser=XXX file=exp_xxx。dmp log=imp_xxx。

log ignore=y。 优缺点:优点是可以跨平台使用;缺点是停机时间长,停机时间为从exp到网络传输到新库,再加上imp的时间。

二、存储迁移: 这种情况下,数据文件、控制文件、日志文件、spfile都在存储上(一般情况下是裸设备),我们可以直接把存储挂到新机器上,然后在新机器上启动数据库。 *** 作方法:将老库的pfile(因为里面有指向裸设备的spfile链接),tnsnames。

ora,listener。ora,密码文件传到新库的对应位置。

将存储切至新机,或者用文件拷贝或dd的方式复制数据文件,启动数据库。 优缺点:优点是该迁移方式非常简单,主要的工作是主机工程师的工作,dba只需配合即可,停机时间为当库、切存储、起库的时间。

缺点是要求新老库都是同一平台,是相同的数据库版本。 三、利用data guard迁移: 用dg我们不仅可以用来做容灾,物理的dg我们还可以作为迁移的方式。

*** 作方法:可见://。oracleblog。

/study-note/dg-created-by-rman/或者://。 oracleblog。

/study-note/create-dg-by-rman-one-datafile-by-one-datafile/或者其他相关网文。注意switch over之后,可以将dg拆掉,去掉log_archive_dest_ 2、FAL_SERVER、FAL_CLIENT、standby_file_management参数。

另外还要注意如果用rman做dg,注意手工添加tempfile。 优缺点:优点是停机时间短,停机时间为switch over的时间。

缺点:主机必须双份、存储必须双份。 四、用rman做迁移: rman比较适合于跨文件系统的迁移,如同平台下的不同文件系统。

*** 作方法: 1。停第三方的归档备份,如legato或dp 2。

backup数据库: 在一次周末的课程试验中,频繁的看到 Data file init write 等待事件。

Oracle与SQLServer之间的数据迁移要注意什么

等多种方式,要从ORACLE提取SQL中的数据,大都是通过透明网关来实现的。

在异构数据抽取过程中,最好采用SQL92标准的语法编写SQL代码,同时要注意不同数据库之间数据类型的转换关系,如ORACLE的日期类型用DATE、SQL用Datetime等。 一 关于ORACLE的透明网关配置 ORACLE安装时(9i),将TRANSPARENT GATEWAY FOR MSSQL选中,在ORACLE主目录\BIN中,有个tg4msql.exe程序,它是透明网关程序啦,同时在主目录中还有tgrmsql的一个目录,ORACLE_HOME\tg4msql\admin目录中的inittg4msql.ora就是需要进行配置才能在ORACLE中连接SQL。

1 如何配置透明网关呢?打开inittg4msql.ora: # HS init parameters xzh代表SQL服务名,pubs代表要访问的SQL数据库。 HS_FDS_CONNECT_INFO="SERVER=xzhDATABASE=pubs" HS_FDS_TRACE_LEVEL=OFF HS_FDS_RECOVERY_ACCOUNT=RECOVER HS_FDS_RECOVERY_PWD=RECOVER 2 监听的配置oracle_home\work\admin\Listiner.ora LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = xzh)(PORT = 1521)) ) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = xzh)(PORT = 1527)) ) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = xzh.world) (ORACLE_HOME = D:\oracle\ora92) (SID_NAME = xzh) ) (SID_DESC = (GLOBAL_DBNAME = tg4msql) (PROGRAM = tg4msql) (SID_NAME = tg4msql) (ORACLE_HOME = D:\oracle\ora92) ) )。

Oracle数据库数据迁移包括哪些内容

*** 作方法为:在新库建立好owner和表空间,停老库的应用,在老库执行:$ exp user/pwd owner=XXX file=exp_xxx.dmp log=exp_xxx.log buffer=6000000,导入dmp文件到新库,在新库执行如下命令:$ imp user/pwd fromuser=XXX touser=XXX file=exp_xxx.dmp log=imp_xxx.log ignore=y. 优缺点:优点是可以跨平台使用;缺点是停机时间长,停机时间为从exp到网络传输到新库,再加上imp的时间。

怎样简化第三方数据库向Oracle数据库11g的迁移

Oracle SQL Developer是甲骨文公司免费提供的数据库开发工具,可帮助用户简化开发工作,提高编制和调试SQL和PL/SQL代码的效率。

现在,这个免费工具又增加了方便从第三方数据库向Oracle数据库迁移的新功能。 甲骨文公司软件开发副总裁Michael Hichwa说:“自推出Oracle SQL Developer以来,我们一直致力于增加这个产品的功能,以满足开发人员社区的需求。

有了Oracle SQL Developer 1。2版,开发人员用一个工具软件,就既可以浏览第三方数据,又能以最低风险经济、无缝地将第三方数据迁移到Oracle数据库中。

1。2版极大地简化了数据、表格和存储程序从非Oracle数据库向Oracle数据库的迁移,有助于确保平滑迁移。

” Oracle SQL Developer迁移工作台实现了向Oracle数据库的自动迁移 很久以来,甲骨文一直提供独立的迁移工作台工具,以帮助数据库开发人员从非Oracle数据库向Oracle数据库迁移。Oracle SQL Developer 1。

2版集成了一个更加强大的迁移工作台工具,即Oracle SQL Developer迁移工作台(Oracle SQL Developer Migration Workbench)。这个迁移工作台为数据库开发人员提供了单一的工具和环境,他们可以用这个工作台浏览第三方数据、迁移数据库对象和数据并浏览迁移后的数据库,从而降低从第三方数据库向Oracle数据库迁移所需的时间、成本以及有关风险。

Oracle SQL Developer迁移工作台具有广泛的数据库迁移功能。用户可用这个工作台迁移单个表格或几个数据库。

用户连接在数据库上时也可以进行迁移,或者用户可以生成项目表,将其作为迁移项目的组成部分,并用Oracle SQL Developer的SQL和PL/SQL编制与调试工具修改项目表。 Oracle SQL Developer迁移工作台具有新的语法分析程序,可以百分之百识别T-SQL语法。

该工作台还具有单个语句翻译器,用户可以将任何种类的T-SQL语句粘贴到编辑器中,并将其即时翻译成PL/SQL语句。 Oracle SQL Developer迁移工作台为数据库开发人员提供了两个迁移选项。

用户可以用该工作台附带的实用向导程序进行单步迁移,也可以将迁移过程分成几个部分,以在需要时对各个不同的部分进行统一修改。这个工作台可帮助用户将以下第三方数据库迁移到Oracle数据库: •Microsoft SQL Server(版本7。

0、2000和2005); •Microsoft Access(版本9 7、2000、2002和2003); •MySQL(版本3。 0、4。

0和5。0)。

ABB用Oracle SQL Developer迁移工作台节省时间 ABB是全球领先的工程公司,该公司正在用Oracle SQL Developer 1。2版迁移工作台实现从SQL Server向Oracle数据库的迁移。

世界各地有很多印刷所采用ABB的自动打印解决方案,就资产和价值链优化而言,这套解决方案具有非常多的优点。ABB的业务范围涵盖从页面规划、数字工作流、花轮滚压、印刷自动化直到整个生产过程的总体规划和跟踪。

ABB公司自动印刷业务部设计师Karl Doerig说:“对我们从SQL Server 2005向Oracle数据库的迁移来说,Oracle SQL Developer迁移工作台是一个完美的集成开发环境。 我们用这个新的迁移工作台可以在不到两个小时的时间内迁移具有约350个表格和1000个存储过程的SQL Server 2005数据库框架,而且几乎不需要手工编辑工作。

以前完成同样的任务大约需要两天时间,光手动改变输出的说明就有两页纸长。” 价格与供货 Oracle SQL Developer的运行版已经可以从Oracle技术网络下载,网址为: ://。

oracle。/technology/software/products/sql/index。

。 Oracle SQL Developer可在Linux、Mac OS X和Windows平台上运行,免费提供,任何拥有Oracle数据库许可证的客户都可以获得对Oracle SQL Developer的支持。

有关的条款、条件和限制条件适用。甲骨文还为注册用户免费提供在线论坛,供用户探讨有关Oracle SQL Developer的话题。

Oracle SQL Developer可用于Oracle数据库11g,经过了在企业版、标准版和标准版1上的认证。 这个工具软件还可用于Oracle数据库10g的所有版本和Oracle9i数据库第二版。

OGG全称为Oracle GoldenGate,是由Oracle官方提供的用于解决异构数据环境中数据复制的一个商业工具。相比于其它迁移工具OGG的优势在于可以直接解析源端Oracle的redo log,因此能够实现在不需要对原表结构做太多调整的前提下完成数据增量部分的迁移。本篇文章将重点介绍如何使用OGG实现Oracle到MySQL数据的平滑迁移,以及讲述个人在迁移过程中所碰到问题的解决方案。

(一)OGG逻辑架构

参照上图简单给大家介绍下OGG逻辑架构,让大家对OGG数据同步过程有个简单了解,后面章节会详细演示相关进程的配置方式,在OGG使用过程中主要涉及以下进程及文件:

Manager进程:需要源端跟目标端同时运行,主要作用是监控管理其它进程,报告错误,分配及清理数据存储空间,发布阈值报告等

Extract进程:运行在数据库源端,主要用于捕获数据的变化,负责全量、增量数据的抽取

Trails文件:临时存放在磁盘上的数据文件

Data Pump进程:运行在数据库源端,属于Extract进程的一个辅助进程,如果不配置Data Pump,Extract进程会将抽取的数据直接发送到目标端的Trail文件,如果配置了Data Pump,Extract进程会将数据抽取到本地Trail文件,然后通过Data Pump进程发送到目标端,配置Data Pump进程的主要好处是即使源端到目标端发生网络中断,Extract进程依然不会终止

Collector进程:接收源端传输过来的数据变化,并写入本地Trail文件中

Replicat进程:读取Trail文件中记录的数据变化,创建对应的DML语句并在目标端回放

二、迁移方案

(一)环境信息

OGG版本    OGG 12.2.0.2.2 For Oracle    OGG 12.2.0.2.2 For MySQL    

数据库版本    Oracle 11.2.0.4    MySQL 5.7.21  

OGG_HOME    /home/oracle/ogg    /opt/ogg  

(二)表结构迁移

表结构迁移属于难度不高但内容比较繁琐的一步,我们在迁移表结构时使用了一个叫sqlines的开源工具,对于sqlines工具在MySQL端创建失败及不符合预期的表结构再进行特殊处理,以此来提高表结构转换的效率。

注意:OGG在Oracle迁移MySQL的场景下不支持DDL语句同步,因此表结构迁移完成后到数据库切换前尽量不要再修改表结构。

(三)数据迁移

数据同步的 *** 作均采用OGG工具进行,考虑数据全量和增量的衔接,OGG需要先将增量同步的抽取进程启动,抓取数据库的redo log,待全量抽取结束后开启增量数据回放,应用全量和增量这段期间产生的日志数据,OGG可基于参数配置进行重复数据处理,所以使用OGG时优先将增量进行配置并启用。此外,为了避免本章节篇幅过长,OGG参数将不再解释,有需要的朋友可以查看官方提供的Reference文档查询任何你不理解的参数。

1.源端OGG配置

(1)Oracle数据库配置

针对Oracle数据库,OGG需要数据库开启归档模式及增加辅助补充日志、强制记录日志等来保障OGG可抓取到完整的日志信息

查看当前环境是否满足要求,输出结果如下图所示:

(2)Oracle数据库OGG用户创建

OGG需要有一个用户有权限对数据库的相关对象做 *** 作,以下为涉及的权限,该示例将创建一个用户名和密码均为ogg的Oracle数据库用户并授予以下权限

(3)源端OGG 管理进程(MGR)配置

(4)源端OGG 表级补全日志(trandata)配置

表级补全日志需要在最小补全日志打开的情况下才起作用,之前只在数据库级开启了最小补全日志(alter database add supplemental log data),redolog记录的信息还不够全面,必须再使用add trandata开启表级的补全日志以获得必要的信息。

(5)源端OGG 抽取进程(extract)配置

Extract进程运行在数据库源端,负责从源端数据表或日志中捕获数据。Extract进程利用其内在的checkpoint机制,周期性地检查并记录其读写的位置,通常是写入到本地的trail文件。这种机制是为了保证如果Extract进程终止或者 *** 作系统宕机,我们重启Extract进程后,GoldenGate能够恢复到以前的状态,从上一个断点处继续往下运行,而不会有任何数据损失。

(6)源端OGG 传输进程(pump)配置

pump进程运行在数据库源端,其作用非常简单。如果源端的Extract抽取进程使用了本地trail文件,那么pump进程就会把trail文件以数据块的形式通过TCP/IP协议发送到目标端,Pump进程本质上是Extract进程的一种特殊形式,如果不使用trail文件,那么Extract进程在抽取完数据后,直接投递到目标端。

补充:pump进程启动时需要与目标端的mgr进程进行连接,所以需要优先将目标端的mgr提前配置好,否则会报错连接被拒绝,无法传输抽取的日志文件到目标端对应目录下

(7)源端OGG 异构mapping文件(defgen)生成

该文件记录了源库需要复制的表的表结构定义信息,在源库生成该文件后需要拷贝到目标库的dirdef目录,当目标库的replica进程将传输过来的数据apply到目标库时需要读写该文件,同构的数据库不需要进行该 *** 作。

2.目标端OGG配置

(1)目标端MySQL数据库配置

确认MySQL端表结构已经存在

MySQL数据库OGG用户创建

mysql>create user 'ogg'@'%' identified by 'ogg'

mysql>grant all on *.* to 'ogg'@'%'

#### 提前创建好ogg存放checkpoint表的数据库

mysql>create database ogg

(2)目标端OGG 管理进程(MGR)配置

目标端的MGR进程和源端配置一样,可直接将源端配置方式在目标端重复执行一次即可,该部分不在赘述

(3)目标端OGG 检查点日志表(checkpoint)配置

checkpoint表用来保障一个事务执行完成后,在MySQL数据库从有一张表记录当前的日志回放点,与MySQL复制记录binlog的GTID或position点类似。

#### 切换至ogg软件目录并执行ggsci进入命令行终端

shell>cd $OGG_HOME

shell>ggsci

ggsci>edit param ./GLOBALS

checkpointtable ogg.ggs_checkpoint

ggsci>dblogin sourcedb ogg@17X.1X.84.121:3306 userid ogg

ggsci>add checkpointtable ogg.ggs_checkpoint

(4)目标端OGG 回放线程(replicat)配置

Replicat进程运行在目标端,是数据投递的最后一站,负责读取目标端Trail文件中的内容,并将解析其解析为DML语句,然后应用到目标数据库中。

#### 切换至ogg软件目录并执行ggsci进入命令行终端

shell>cd $OGG_HOME

shell>ggsci

#### 添加一个回放线程并与源端pump进程传输过来的trail文件关联,并使用checkpoint表确保数据不丢失

ggsci>add replicat r_cms,exttrail /opt/ogg/dirdat/ms,checkpointtable ogg.ggs_checkpoint

#### 增加/编辑回放进程配置文件

ggsci>edit params r_cms

replicat r_cms

targetdb cms@17X.1X.84.121:3306,userid ogg,password ogg

sourcedefs /opt/ogg/dirdef/cms.def

discardfile /opt/ogg/dirrpt/r_cms.dsc,append,megabytes 1024

HANDLECOLLISIONS

MAP cms.*,target cms.*

注意:replicat进程只需配置完成,无需启动,待全量抽取完成后再启动。

至此源端环境配置完成

待全量数据抽取完毕后启动目标端回放进程即可完成数据准实时同步。

3.全量同步配置

全量数据同步为一次性 *** 作,当OGG软件部署完成及增量抽取进程配置并启动后,可配置1个特殊的extract进程从表中抽取数据,将抽取的数据保存到目标端生成文件,目标端同时启动一个单次运行的replicat回放进程将数据解析并回放至目标数据库中。

(1)源端OGG 全量抽取进程(extract)配置

#### 切换至ogg软件目录并执行ggsci进入命令行终端

shell>cd $OGG_HOME

shell>ggsci

#### 增加/编辑全量抽取进程配置文件

#### 其中RMTFILE指定抽取的数据直接传送到远端对应目录下

#### 注意:RMTFILE参数指定的文件只支持2位字符,如果超过replicat则无法识别

ggsci>edit params ei_cms

SOURCEISTABLE

SETENV (NLS_LANG = "AMERICAN_AMERICA.AL32UTF8")

SETENV (ORACLE_SID=cms)

SETENV (ORACLE_HOME=/data/oracle/11.2/db_1)

USERID ogg@appdb,PASSWORD ogg

RMTHOST 17X.1X.84.121,MGRPORT 7809

RMTFILE /opt/ogg/dirdat/ms,maxfiles 100,megabytes 1024,purge

TABLE cms.*

#### 启动并查看抽取进程正常

shell>nohup ./extract paramfile ./dirprm/ei_cms.prm reportfile ./dirrpt/ei_cms.rpt &

## 查看日志是否正常进行全量抽取

shell>tail -f ./dirrpt/ei_cms.rpt

(2)目标端OGG 全量回放进程(replicat)配置

#### 切换至ogg软件目录并执行ggsci进入命令行终端

shell>cd $OGG_HOME

shell>ggsci

ggsci>edit params ri_cms

SPECIALRUN

END RUNTIME

TARGETDB cms@17X.1X.84.121:3306,USERID ogg,PASSWORD ogg

EXTFILE /opt/ogg/dirdat/ms

DISCARDFILE ./dirrpt/ri_cms.dsc,purge

MAP cms.*,TARGET cms.*

#### 启动并查看回放进程正常

shell>nohup ./replicat paramfile ./dirprm/ri_cms.prm reportfile ./dirrpt/ri_cms.rpt &

#### 查看日志是否正常进行全量回放

shell>tail -f ./dirrpt/ri_cms.rpt

三、数据校验

数据校验是数据迁移过程中必不可少的环节,本章节提供给几个数据校验的思路共大家参数,校验方式可以由以下几个角度去实现:

1.通过OGG日志查看全量、增量过程中discards记录是否为0来判断是否丢失数据;

2.通过对源端、目标端的表执行count判断数据量是否一致;

3.编写类似于pt-table-checksum校验原理的程序,实现行级别一致性校验,这种方式优缺点特别明显,优点是能够完全准确对数据内容进行校验,缺点是需要遍历每一行数据,校验成本较高;

4.相对折中的数据校验方式是通过业务角度,提前编写好数十个返回结果较快的SQL,从业务角度抽样校验。

四、迁移问题处理

本章节将讲述迁移过程中碰到的一些问题及相应的解决方式。

(一)MySQL限制

在Oracle到MySQL的表结构迁移过程中主要碰到以下两个限制:

1. Oracle端的表结构因为最初设计不严谨,存在大量的列使用varchar(4000)数据类型,导致迁移到MySQL后超出行限制,表结构无法创建。由于MySQL本身数据结构的限制,一个16K的数据页最少要存储两行数据,因此单行数据不能超过65,535 bytes,因此针对这种情况有两种解决方式:

根据实际存储数据的长度,对超长的varchar列进行收缩;

对于无法收缩的列转换数据类型为text,但这在使用过程中可能导致一些性能问题;

2. 与第一点类似,在Innodb存储引擎中,索引前缀长度限制是767 bytes,若使用DYNAMIC、COMPRESSED行格式且开启innodblargeprefix的场景下,这个限制是3072 bytes,即使用utf8mb4字符集时,最多只能对varchar(768)的列创建索引;

3. 使用ogg全量初始化同步时,若存在外键约束,批量导入时由于各表的插入顺序不唯一,可能子表先插入数据而主表还未插入,导致报错子表依赖的记录不存在,因此建议数据迁移阶段禁用主外键约束,待迁移结束后再打开。

mysql>set global foreign_key_checks=off

(二)全量与增量衔接

HANDLECOLLISIONS参数是实现OGG全量数据与增量数据衔接的关键,其实现原理是在全量抽取前先开启增量抽取进程,抓去全量应用期间产生的redo log,当全量应用完成后,开启增量回放进程,应用全量期间的增量数据。使用该参数后增量回放DML语句时主要有以下场景及处理逻辑:

目标端不存在delete语句的记录,忽略该问题并不记录到discardfile

目标端丢失update记录

- 更新的是主键值,update转换成insert

- 更新的键值是非主键,忽略该问题并不记录到discardfile

目标端重复insert已存在的主键值,这将被replicat进程转换为UPDATE现有主键值的行

(三)OGG版本选择

在OGG版本选择上我们也根据用户的场景多次更换了OGG版本,最初因为客户的Oracle 数据库版本为11.2.0.4,因此我们在选择OGG版本时优先选择使用了11版本,但是使用过程中发现,每次数据抽取生成的trail文件达到2G左右时,OGG报错连接中断,查看RMTFILE参数详细说明了解到trail文件默认限制为2G,后来我们替换OGG版本为12.3,使用MAXFILES参数控制生成多个指定大小的trail文件,回放时Replicat进程也能自动轮转读取Trail文件,最终解决该问题。但是如果不幸Oracle环境使用了Linux 5版本的系统,那么你的OGG需要再降一个小版本,最高只能使用OGG 12.2。

(四)无主键表处理

在迁移过程中还碰到一个比较难搞的问题就是当前Oracle端存在大量表没有主键。在MySQL中的表没有主键这几乎是不被允许的,因为很容易导致性能问题和主从延迟。同时在OGG迁移过程中表没有主键也会产生一些隐患,比如对于没有主键的表,OGG默认是将这个一行数据中所有的列拼凑起来作为唯一键,但实际还是可能存在重复数据导致数据同步异常,Oracle官方对此也提供了一个解决方案,通过对无主键表添加GUID列来作为行唯一标示,具体 *** 作方式可以搜索MOS文档ID 1271578.1进行查看。

(五)OGG安全规则

报错信息

2019-03-08 06:15:22  ERROR   OGG-01201  Error reported by MGR : Access denied.

错误信息含义源端报错表示为该抽取进程需要和目标端的mgr进程通讯,但是被拒绝,具体 *** 作为:源端的extract进程需要与目标端mgr进行沟通,远程将目标的replicat进行启动,由于安全性现在而被拒绝连接。

报错原因

在Oracle OGG 11版本后,增加了新特性安全性要求,如果需要远程启动目标端的replicat进程,需要在mgr节点增加访问控制参数允许远程调用

解决办法

在源端和目标端的mgr节点上分别增加访问控制规则并重启

## 表示该mgr节点允许(ALLOW)10.186网段(IPADDR)的所有类型程序(PROG *)进行连接访问ACCESSRULE, PROG *, IPADDR 10.186.*.*, ALLOW

(六)数据抽取方式

报错信息

2019-03-15 14:49:04  ERROR   OGG-01192  Trying to use RMTTASK on data types which may be written as LOB chunks (Table: 'UNIONPAYCMS.CMS_OT_CONTENT_RTF').

报错原因

根据官方文档说明,当前直接通过Oracle数据库抽取数据写到MySQL这种initial-load方式,不支持LOBs数据类型,而表 UNIONPAYCMS.CMSOTCONTENT_RTF 则包含了CLOB字段,无法进行传输,并且该方式不支持超过4k的字段数据类型

解决方法

将抽取进程中的RMTTASK改为RMTFILE参数 官方建议将数据先抽取成文件,再基于文件数据解析进行初始化导入

数据迁移是数据系统整合中保证系统平滑升级和更新的关键部分。

在信息化建设过程中,随着技术的发展,原有的信息系统不断被功能更强大的新系统所取代。

从两层结构到三层结构,从Client/Server到Browser/Server。

在新旧系统的切换过程中,必然要面临一个数据迁移的问题。

数据迁移的实现可以分为3个阶段:数据迁移前的准备、数据迁移的实施和数据迁移后的校验。

由于数据迁移的特点,大量的工作都需要在准备阶段完成,充分而周到的准备工作是完成数据迁移的主要基础。

具体而言,要进行待迁移数据源的详细说明(包括数据的存储方式、数据量、数据的时间跨度);建立新旧系统数据库的数据字典;对旧系统的历史数据进行质量分析,新旧系统数据结构的差异分析;新旧系统代码数据的差异分析;建立新老系统数据库表的映射关系,对无法映射字段的处理方法;开发、部属ETL工具,编写数据转换的测试计划和校验程序;制定数据转换的应急措施。

如果说运用101 异构数据采集技术,完全0人力成本,不需要人工 *** 作,也不需要软件厂家配合,只需要配置好,机器自动运行,就可以把历史数据抓取出来,自动写入新系统里面


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6733531.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存