【问题标题】:MySQL to Oracle DB MigrationMySQL 到 Oracle 数据库迁移
【发布时间】:2016-08-22 23:54:14
【问题描述】:

我的任务是将 MySQL DB 迁移到 Oracle(这是我的要求),我尝试使用下面链接中定义的 SQL 开发人员进行迁移。

https://www.packtpub.com/books/content/migrating-mysql-table-using-oracle-sql-developer-15

由于数据库很大,约束没有从 MySQL 正确复制到 Oracle,我需要显式定义/更改/添加约束,这很耗时(SQL 开发人员将数据 300rec/min 从 mysql 迁移到 Oracle)&整个过程、视图、函数都需要重新编写。

  1. 如何确保数据已正确迁移。?
  2. 这是一种正确的迁移方法吗?
  3. 我应该使用任何有助于迁移的工具吗?如果是,请推荐该工具..!!
  4. 或者从 MySQL 迁移到 Oracle 是正确的选择。

提前致谢。

【问题讨论】:

  • 您使用的是什么版本的 SQL Developer?对于您想要进行离线移动的数据迁移 - 然后我们使用 SQL*Loader 或外部表来移动数据,这比您看到的在线数据移动要快得多。给我一个示例表/约束,我可以看到当它被带到 Oracle 时发生了什么。
  • SQL 开发者 3.2.20.09.
  • 自 2012 年发布以来进行了大量更新和错误修复。看看能不能拿到4.1.3版

标签: mysql database oracle database-migration


【解决方案1】:

没有具体的答案,但根据我的迁移经验提出了一些一般性的想法。

我发现通常没有一种工具可以很好地完成整个迁移工作,我的意思是整个工作:

  1. 快速
  2. 处理所有数据类型、场景

那是从甲骨文到甲骨文!!

我们在上一个项目中尝试了 Oracle Golden Gate,但发现存在问题。

我们总是采用混合方法,例如:

  1. 手动提取所有 DDL 并预先创建对象 - 在提取 DDL 时,标准工具中存在使它们混淆的弱点,例如我们发现 10g expdp 不能很好地处理一些古怪的 PLSQL,所以我们求助于自己提取。

  2. 有些表在 SQL 加载器上运行良好,有些在 GG 上运行良好,其他(很少见)在自定义提取和加载过程中运行。我们有超过 3,500 个表,并确定了大约 100 个作为 SQLLoader 而不是 GG 做得更好。当我说得更好时,我的意思是数据处理和迁移速度。我们创建了不同的处理组,每个组都有不同的方法。

  3. 一旦我们有了一个可行的整体混合方案,我们就会进行调整,主要是通过将该任务分成并行进程,包括导出端和导入端。

我的所有迁移都是大型项目,我们从一个 Oracle 系统/服务器转移到另一个,目标始终是更新版本的操作系统和 Oracle。

因此,我认为非 Oracle 和 Oracle 之间的迁移将面临更多挑战,而且可能不像在 SQL*Developer 中单击几个按钮那么简单。

【讨论】:

  • 感谢@TenG 的投入。复制数据/对齐表结构,对齐约束真的很头疼。除了 Golden Gate 之外,您还有其他喜欢的工具来导入数据吗?
【解决方案2】:

您可以在 Oracle 网站上的 SQL developer documentation 中找到预期的内容。 有适用于所有Microsoft Access usersMySQL usersMicrosoft SQL Server and Sybase Adaptive Server users 的迁移信息。

您还可以下载 PDF(最适合离线查看和打印)、ePub(最适合大多数移动设备)和 Mobi(最适合 Amazon Kindle 设备)形式的教程。

【讨论】:

    【解决方案3】:

    最近,我成功将MySQL数据库迁移到Oracle数据库。以下是详细步骤:

    操作系统: Desktop Ubuntu local 和 Desktop Ubuntu on amazon aws

    请注意:这里我使用的是aws桌面ubuntu服务器,因为我的mysql 数据库相当大。在我的例子中,有 800 张桌子,200 个视图, 过程、触发器和函数。数据库的总大小几乎 20GB。对于小型数据库,我建议使用本地 ubuntu 服务器。

    使用的工具: SQL Developer、VNCServer、远程桌面客户端、JAVA 8、第三方 MySql JDBC 驱动程序

    1.设置 ec2 ubuntu 桌面服务器: https://www.youtube.com/watch?v=ljvgwmJCUjw

    2。在 #1 上安装 SQL Developer

    sudo apt-get install sqldeveloper-package debhelper openjdk-7-jdk
    openjdk-7-jre icedtea-7-plugin

    • 现在您需要做的就是运行命令(您可能有一个 不同版本)

    make-sqldeveloper-package sqldeveloper-4.1.3.20.78-no-jre.zip

    这将生成一个 debian 包,您可以使用它来安装 SQL 开发人员。

    • 现在使用命令安装生成的 .deb 包(您的 deb 也可能有不同的版本)

    sudo dpkg -i sqldeveloper_4.1.3.20.78+0.2.4-1_all.deb

    • 就我而言,我使用的是 java 8。

    3.使用 VNCServer 在新创建的 ec2 实例上完成 SQL 开发人员安装后,您需要做的就是使用 ubuntu 本地计算机中默认可用的远程桌面客户端连接到该 ec2 实例。

    • 将 IP:1 与 #1 中的 VNCServer 的用户/密码设置一起使用
    • 可以看到远程ec2 ubuntu 桌面服务器。如果您想在远程服务器中使用选项卡,则必须从远程桌面工具中获取键盘输入。
    • 连接远程客户端后,从终端或资源管理器打开 SQL Developer。

    sql开发者

    请注意:遵循由 oracle 他们将要求目标数据库连接,即 oracle 数据库连接。这不是您的 MySQL 所在的数据库 数据库将被迁移。相反,此数据库连接将 用于迁移过程。 您的数据库连接用户 必须有用户和数据库创建权限。一旦你的连接 有用户创建权限,然后迁移过程自动创建 Oracle数据库中对应的数据库用户[如果你在MySQL中有mysql_test_db 数据库,同样的 mysql_test_db 也会在 Oracle db 中创建]。

    【讨论】:

      【解决方案4】:

      我最近使用 sqline 的工具 http://www.sqlines.com/cmd 将 .sql 脚本形式的 mysql 转储转换为(几乎)与 Oracle 兼容的 sql 脚本。

      sqlines31113\sqlines.exe -s=mysql -t=oracle "-in=$infile"
      

      我只需要(半手动)修复输出中的一些内容,然后我就可以在我的 oracle 数据库上运行它。

      【讨论】:

        猜你喜欢
        • 2021-09-18
        • 2014-08-24
        • 2013-10-02
        • 2014-12-09
        • 1970-01-01
        • 2015-09-21
        • 2012-05-24
        • 2020-05-12
        • 1970-01-01
        相关资源
        最近更新 更多