搜索
首页数据库mysql教程将MySQL迁移到Oracle(一)_MySQL

1、导言

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

2、评估移植计划

在你做任何事情之前,你将需要制定出一个要做什么的计划或提纲。我知道,我知道,大家都不喜欢写文档。但是这是很重要的一步,因为在技术方面,它将使你决定需要做些什么,而在管理方面,它将按部就班地描述这个过程,所以他们可以看到这个复杂性,考虑业务影响、必备系统的成本、进行这个移植所需要的资源和整个时间进度表。

这个评估应该包括哪些内容呢?首先,你应该确定你现在用的是哪个版本的MySQL。浏览一下你现在在使用哪些特性,例如数据类型(numeric、character、enumerated等等),你在使用什么类型的存储引擎,例如MyISAM、Innodb等等。想想你在使用什么索引类型和额外的功能,例如你可能在你的数据库中使用了视图和触发器。还有,检查一下你数据库中的存储过程,因为这些将需要进行重写。还要仔细地考虑MySQL复制。如果它是为整个数据库建立的,那么它将更加趋向于使用Oracle的备用数据库或DataGuard特性,而如果你使用表复制和你的my.cnf文件里的通配符语法来使用表,那么这更有可能是使用Oracle中的物化视图(以前被称为快照)来做的。

在Oracle方面,你将需要考虑你所运行的版本下的情况、MySQL丰富的数据类型和对象怎么匹配到Oracle中。考虑主键上的自动增加属性。尽管Oracle具有序列,但是它的序列和MySQL中的自动增加稍稍有些不同。例如它不保证数字的连续性。因此,你可能会在基于Oracle缓存序列方式的键值上遇到问题。思考一下这将怎样影响你的应用程序的行为。尽管不是移植过程的直接部分,但是你还是需要考虑一下你想怎样备份你的Oracle系统。输出工具使用MySQL的mysqldump非常适合,而RMAN当然提供了你在像innobackup或MySQL中可用的ibbackup这样的工具中可能找到的所有热备份功能。

在你的评估文档中,记录所有这些发现,并尽可能地深入。现在你工作得越勤奋,在之后的移植过程中你遇到的问题就越少。

3、 开发移植和建立

a、准备

准备工作将涉及到建立你的开发环境。这包括申请合适的硬件、建立数据中心、安装Oracle 软件,和建立你的启动数据库。在建立这些时,考虑一下Oracle 的最优方法,例如使用RAID 10作为你的基础磁盘存储。布局你的重复记录、分配足够的系统和sysaux表空间,等等。你还将要考虑你的新数据库的字符设置。注意到US7ASCII 限制欧洲的和带重音的字符。最好使用WE8ISO8859P1。如果你可能会在你的数据库中使用亚洲字符,那么你要看看Oracle 的National Language Services (NLS)功能,并考虑多字节字符集。你还要为数据和索引创建表空间。考虑一下你的源对象的规模。在文件系统上你可以在数据目录下使用“du -sm dir_name”。留出25-50%的空间用于将来的发展。

b、 数据库结构移植

在MySQL 方面,提取数据库的结构(在Oracle中是一个schema)你可以使用下面的方式:

$ mysqldump --no-data my_db_name > my_db_name.mysql

因为在语法方面有一些不同,你不能在Oracle 中直接运行这个脚本。你所要做的是你自己重写这些CREATE TABLE 和CREATE INDEX 语句。很显然,如果在你的数据库中有大量的对象,那么你需要考虑采用一种自动的方式来进行这项工作。我们将在这篇文章的第二部分中讨论Oracle的移植工作台(Migration Workbench),但是现在我们推荐逐个地重写这些对象。这也将为你提供数据库中对象的一个排序目录,并使你对它们更加了解和将它们都移植过来。开发人员在这个过程中也要保持谨慎。通过将表和对象逐个地改变它们的语法,一方面它们将获得更新,或换成Oracle 语法,另一方面,真正地浏览了这些对象,从而考虑在它们的应用程序代码中可能需要做哪些改动。

最终,应用程序的变更将是移植到一个新数据库引擎上的庞大的一部分,不论你的开发人员在编写数据库独立代码方面是多么的勤快。所以,这个手动过程将使你很好地了解你错综复杂的数据库。

4、总结

是的,将一个数据库应用程序移植到一个新的平台上例如Oracle 上不是一个简单的工作,但是它是可以实现的,而且通过适当的准备工作,它也可以被管理起来。在建立任何系统之前,对你目前的系统进行恰当的评估,并在移植之前检查和管理时间、硬件、软件和人员所需。

在这篇文章的第二部分,我们将讨论从产品中移植实际的数据,检查Oracle的移植工作台(Migration Workbench),它可以为你节省时间,并讨论潜在的应用程序问题和挑战。然后我们将回顾整个过程,并仔细地计划你产品数据库和应用程序的最终移植

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
MySQL的许可与其他数据库系统相比如何?MySQL的许可与其他数据库系统相比如何?Apr 25, 2025 am 12:26 AM

MySQL使用的是GPL许可证。1)GPL许可证允许自由使用、修改和分发MySQL,但修改后的分发需遵循GPL。2)商业许可证可避免公开修改,适合需要保密的商业应用。

您什么时候选择InnoDB而不是Myisam,反之亦然?您什么时候选择InnoDB而不是Myisam,反之亦然?Apr 25, 2025 am 12:22 AM

选择InnoDB而不是MyISAM的情况包括:1)需要事务支持,2)高并发环境,3)需要高数据一致性;反之,选择MyISAM的情况包括:1)主要是读操作,2)不需要事务支持。InnoDB适合需要高数据一致性和事务处理的应用,如电商平台,而MyISAM适合读密集型且无需事务的应用,如博客系统。

在MySQL中解释外键的目的。在MySQL中解释外键的目的。Apr 25, 2025 am 12:17 AM

在MySQL中,外键的作用是建立表与表之间的关系,确保数据的一致性和完整性。外键通过引用完整性检查和级联操作维护数据的有效性,使用时需注意性能优化和避免常见错误。

MySQL中有哪些不同类型的索引?MySQL中有哪些不同类型的索引?Apr 25, 2025 am 12:12 AM

MySQL中有四种主要的索引类型:B-Tree索引、哈希索引、全文索引和空间索引。1.B-Tree索引适用于范围查询、排序和分组,适合在employees表的name列上创建。2.哈希索引适用于等值查询,适合在MEMORY存储引擎的hash_table表的id列上创建。3.全文索引用于文本搜索,适合在articles表的content列上创建。4.空间索引用于地理空间查询,适合在locations表的geom列上创建。

您如何在MySQL中创建索引?您如何在MySQL中创建索引?Apr 25, 2025 am 12:06 AM

toCreateAnIndexinMysql,usethecReateIndexStatement.1)forasingLecolumn,使用“ createIndexIdx_lastNameEnemployees(lastName); 2)foracompositeIndex,使用“ createIndexIndexIndexIndexIndexDx_nameOmplayees(lastName,firstName,firstName);” 3)forauniqe instex,creationexexexexex,

MySQL与Sqlite有何不同?MySQL与Sqlite有何不同?Apr 24, 2025 am 12:12 AM

MySQL和SQLite的主要区别在于设计理念和使用场景:1.MySQL适用于大型应用和企业级解决方案,支持高性能和高并发;2.SQLite适合移动应用和桌面软件,轻量级且易于嵌入。

MySQL中的索引是什么?它们如何提高性能?MySQL中的索引是什么?它们如何提高性能?Apr 24, 2025 am 12:09 AM

MySQL中的索引是数据库表中一列或多列的有序结构,用于加速数据检索。1)索引通过减少扫描数据量提升查询速度。2)B-Tree索引利用平衡树结构,适合范围查询和排序。3)创建索引使用CREATEINDEX语句,如CREATEINDEXidx_customer_idONorders(customer_id)。4)复合索引可优化多列查询,如CREATEINDEXidx_customer_orderONorders(customer_id,order_date)。5)使用EXPLAIN分析查询计划,避

说明如何使用MySQL中的交易来确保数据一致性。说明如何使用MySQL中的交易来确保数据一致性。Apr 24, 2025 am 12:09 AM

在MySQL中使用事务可以确保数据一致性。1)通过STARTTRANSACTION开始事务,执行SQL操作后用COMMIT提交或ROLLBACK回滚。2)使用SAVEPOINT可以设置保存点,允许部分回滚。3)性能优化建议包括缩短事务时间、避免大规模查询和合理使用隔离级别。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境