MYSQL 类型特点:

异构数据表复制支持列表:

    • 对象名限制
    • 表名限制:表名长度限制为64字节.
    • 索引名限制:索引名长度限制为64字节.
    • 列名限制:列名长度限制64字节。
    • 每行长度限制:非LOB/text字段长度综合不超过65536字节,如果超过,则视情况讲相对较宽的数据类型转为TEXT/LOB等类型
    • 目标端:
      • ORACLE(11G之前版本)
         注:表名,索引名,列名长度限制为30个字节,需要在数据应用过程中,进行设置。
         当前版本支持用户名,表名改造,不支持索引名改造。
         索引名可以自动生成30个字节以内的随机索引名。
      • ORACLE(12C之后版本)
         名称没有限制
        索引名限制:
         MYSQL中,索引名在一个表内不可重复即可,每个库内允许索引名重复
         ORACLE中,SCHEMA下的索引名不能重复,在MYSQL->ORACLE复制的过程中,利用ZCBUS自动适配功能,可以自动生成索引名。

  1. SQL语句限制
    • 分区限制,MYSQL分区类型与ORACLE分区类型不匹配,在复制过程中,sql中分区信息自动过滤
    • MYSQL表级别存储类型相关信息,与ORACLE表级存储相关信息在复制过程中,自动忽略。

  1. 数据类型限制
    • DATETIME类型支持存储数据为0000-00-00 00:00:00数据,oracle中对应的是DATE类型,不支持这种数据,需要将这种数据添加默认值,或者有意义实际的时间数据。则需要根据实际情况,进行修改。
    • DATE类型支持存储为0000-00-00数据,ORACLE中对应的为DATE类型的时候,必须有实际意义的数据,因此需要改成有实际日期的数据。
    • 数据库报错:
      ERROR at line 1:
      ORA-01841: (full) year must be between -4713 and +9999, and not be 0
    • 软件报错:
      • sjgl_attendance_record表中ATTENDANCE_DATE字段中有[0000-00-00 00:00:00]的数据;# error at file[oracle.c] line[915], ZCBUS-25050: multi col[ATTENDANCE_DATE] type[date] data[0000-00-00 00:00:00] format error, year

  1. 修改某个允许为空字段为非空,含有默认值,在数据同步中,容易出现问题。
    MYSQL数据库修改过程中,只会产生DDL,不会产生DML,因此在目标端执行的时候,默认值按照目标端机器生成数据,如果是时间字段,有可能和源端不一样。例如:
    ALTER TABLE `bus_search_group_sql`
    MODIFY COLUMN `updatetime`  timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP AFTER `url`;;
     会造成某个字段不一致。对于默认数据为固定值的参数没有问题。
    注意:此处针对默认动态变化的数据的情况,目标端默认为允许为空,没有默认值

  1. MYSQL中,唯一主键,如果存在字段允许为空,则可能会出现重复数据,当复制到ORACLE中,可能唯一主键建立不上的问题。
    解决方式:
    • 建议唯一主键字段属性,不建议设置字段为空
    • 如果存在主键,可以将唯一主键设置成普通索引,需要手工协助,设置跳过DDL即可。
文档更新时间: 2021-01-05 05:40   作者:阿力