MySQL迁移到Oracle



1.导言

  正如你可能想象迁移个数据库和使用它应用件不小要迁移数据库平台和使用它应用必然会需要做很多工作在这个包含两部分文档里我们将讨论围绕这个过程所有步骤问问你自己要注意些什么和怎样在有限停机时间窗口中进行所有这些事情最后技术将获得提高无论是通过书籍和刊物、论坛、培训或是认证

  2.将产品数据移到开发系统

  你要从何处开始和你要去往何处?

  这听起来像个哲学问题但是这确实是你在做任何移植的前要问问题它是计划移植

  MySQL版本很明显有很多从3.x到4.x、5.0和5.1所以这取决于你使用版本和你目前使用功能你将要在Oracle中管理这些对象并创建它们对于MySQL5.x中视图、角色、存储过程和触发器要特别谨慎

  实际上数据移植可以通过使用mysqldump将MySQL数据导入csv文件然后在Oracle中使用SQL*Loader加载你还可以写些代码例如定制Perl代码用来打开个到MySQL数据库连接、使用相联逐行地将数据复制到Oracle中即使你是使用移植工作台来移植4.xMySQL数据你也将需要做些校验和的类检验来确认你目标数据和MySQL中数据是

  3.Oracle移植工作台

  有关Oracle移植工作台要记住件事是它只支持MySQL4.xMySQL5.0是在2003年12月份发布从4.x到5.x移植非常简单而目前Linuxdistro大多数是支持5.x只有很少数站点是仍旧支持4.x这也就是说如果你是在3.x或4.x上Oracle移植工作台就可以帮助你这些版本也更加简单对象主要是表、索引、检查限制、主键和外键Oracle移植工作台还支持先前提到枚举数据类型Oracle还主张支持权限和用户但是这些对象在MySQL和Oracle中处理稍稍有些区别所以你移植工作也就区别

  使用Oracle移植工作台你首先要登录到你源数据库上然后Oracle安装相关插件以匹配rdbms(关系数据库管理系统)类型然后它会在屏幕上向你展示个“源模型”和“oracle模型”列表这些参考各自schema而这些分支表示了数据库中包含所有对象这时启动“捕捉向导”步骤指定了源数据库细节步骤 2指定你想捕捉数据库步骤 3也是最重要给出数据类型匹配

  在第 3步你可以指定更大规模、或新数据类型用于在Oracle中保存你MySQL数据就像移植工作台展示给你图形界面向导也可以帮助你完成很多事情这是主要步骤通过手动思路方法要求你仔细浏览你表中所有字段数据类型以确保它们以你想要形式进行了匹配步骤4使你可以创建oracle模型如果你希望话你可以以后执行这个步骤

  Oracle然后会加载源数据而当你准备好时候将这些数据导入已创建目标Oracle数据库中在OTN网站WebSite上Oracle文档中demo没有任何和警告要是真实情况如同市场材料显示给我们样整齐和友好那该多好啊不幸你肯定会遇到连串和警告不是Oracle犯了拼写而是这个过程很复杂依赖于许多要准确地组合在部分以便能够起无缝地工作当你在GUI过程中到了这并遇到警告时候你将被迫回到命令行并通过手动来解决这些问题最后你“自动”过程确实会指导你进行这个过程但是仍旧需要定量人工干预 [Page]

  4.数据库应用移植

  就像数据库移植可能具有复杂性它将被拿来和应用移植做简单比较如果它像在PHP或Perl中改变个数据库连接描述符样简单那你所有数据库独立代码都可以神奇地运行事实是尽管有SQL92标准但每个数据库执行还是有些区别

  使用SQL查询可能会立即出现语法MySQL和Oracle语法可能有些区别旦你解决了这些问题像MySQLLIMIT条件的类事情就需要使用虚拟数据行ROWNUM来将其转换到Oracle中去但是要认识到Oracle执行需要谨慎点它不支持在MySQL中具有“LIMIT5,10”语法而这些将需要重写为子查询此外在Oracle中优化器可以以区别方式处理相同查询所以你要浏览你查询执行计划即使不浏览所有也要浏览大部分以确保它们在oracle中能执行得很好如果你在MySQL5.x中使用存储过程那这些存储过程需要进行重写

  5.检查和测试开发移植

  这个步骤是在开发过程中协作工作以使代码可以运行并使得QA可以测试各个部分以确保所有区别选择并使组件行为像对MySQL数据存储所做

  可能结果是你应用某些部分需要被重写如果不是语法和基础行为原因那么可能是执行原因所有这些都要求你在将其实施到产品中的前进行仔细测试

  而且特别是对于所有金融数据除了会循环改变数据的外要确保数据库移植具有足够准确度而且确保应用会从数据库那里获得所期望准确度

  6.计划产品移植

  旦你执行了移植数据库整个过程并确定了你源代码并对它进行了测试那么你就会很清楚你移植将是什么样子你应该消除了应用检验了应用执行是否如同以前而新数据类型或改变了字段则是由于应用

  还要准备个用于在维护停机期间遇到不可预料事件时回滚计划要始终做最坏打算但朝着成功努力

  7.执行产品移植

  旦你做完了所有这些步骤并建立了个指定时间窗口来进行产品移植那么你就可以进行最终移植了

  然后你要进行最后产品系统测试就如同你在QA处理过程中所做测试并确定应用是否已准备好在Oracle上运行

  8.技术升级

  当然应用移植和装配对于先前对MySQL熟悉团队(Team)来说是次学习体验不过你团队(Team)肯定要考虑许多Oracle特性分区表、可移动表空间、闪回功能、数据加密、并行特性、数据保护和其它非常有效功能等等等等它可能需要你团队(Team)去参加些Oracle入门课有关在Oracle中编写优化SQL、有用特性等等



9.整理总结

  从MySQL移植到Oracle可能让人误以为很简单如果你仍旧是在3.x或4.x版本上那么移植工作台可以帮助你进行移植但是还是有很多需要手工去做事情计划移植过程、测试每个步骤、管理最终产品移植并准备个备份计划这样你将会很顺利进行移植
Tags: 

延伸阅读

最新评论

发表评论