【问题标题】:Exporting Database From Oracle and Importing Into MariaDB从 Oracle 导出数据库并导入 MariaDB
【发布时间】:2022-12-06 08:55:27
【问题描述】:

我正在进行从 oracle 到 mariadb 的数据迁移。通常为数据库迁移实施的最佳实践是什么。我知道有迁移工具可以帮助从 oracle 导出并导入到 mariadb(ex HEVO),但我并不完全相信这会解决我所有的问题。例如,oracle 提供了一个名为 expdp/impdp 的本机导入/导出工具来创建转储文件,但 mariadb 不支持读取转储。

从 Oracle 迁移到 MariaDB 时,我应该考虑哪些迁移工具和最佳实践?

一些注意事项:

  • 目前正在使用 oracle 数据库
  • mariadb donor 启用了 sql_mode=ORACLE,但存在数据类型问题(BigInt vs Long,以及 String Clob 格式,详见下文)
  • 当前数据库有大约 2000 万行
  • 可以从 oracle 导出转储文件,但 mariadb 似乎可以识别它
  • 可以使用 SQLDeveloper 一次将 20k 行导出到 csv 中,但是对于 20M 行,这并不理想而且很慢
  • oracle db 包含破坏 mariadb 的 XML 字符串文字的字符串 CLOB(mariadb 中的 CLOBS 要求每一行都包含双引号,换行符也会破坏 mariadb)

【问题讨论】:

    标签: oracle mariadb database-migration


    【解决方案1】:

    欢迎进行 Oracle 到 MariaDB 的迁移。

    您可以使用 MariaDB 的连接引擎创建到 OracleDB 的连接。

    有很多类型,所以 JDBC 连接引擎类型到 OracleDB 是一种方式。

    按照配置文件中连接引擎的安装说明进行操作:

    plugin-load-add=ha_connect
    

    您可能还需要将 connect_jvm_pathconnect_class_path 配置为包含用于 Oracle 的 JDBC 连接器的文件。

    创建一个服务器,使名称oracle 引用服务器:

    create server 'oracle' foreign data wrapper 'oracle' options (
    HOST 'jdbc:oracle:thin:@localhost:1521:xe',
    DATABASE 'SYSTEM',
    USER 'system',
    PASSWORD 'manager',
    PORT 0,
    SOCKET '',
    OWNER 'SYSTEM');
    

    创建到 OracleDB 的连接引擎表:

    create table employees_oracle engine=connect table_type=JDBC connection='oracle/HR.EMPLOYEES';
    

    然后创建相同的 MariaDB 表:

    create table employees like employees_oracle;
    

    检查它是否具有所有正确的索引:

    show create table employees;
    

    使 employees 表成为具有相同结构的本地 MariaDB InnoDB 表:

    alter table employees engine=InnoDB
    

    接着:

    insert into employees select * from employees_oracle;
    

    在服务器中使用 sql_mode=ORACLE 并查看您现有的应用程序是否可以与 MariaDB 一起正常工作。

    请举报any bugs

    【讨论】:

      猜你喜欢
      • 2010-10-15
      • 2013-07-28
      • 2011-09-17
      • 2017-05-29
      • 2018-06-29
      • 2017-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多