Oracle 迁移到 OB 过程中有哪些不兼容的 DDL 语法?

Oracle 迁移到 OB 过程中有哪些不兼容的 DDL 语法?

2 个赞

让我来告诉你:

  1. 数据类型
    日期和时间类型:Oracle使用DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE等,而OceanBase通常使用DATETIME和TIMESTAMP,但不带时区。
    数值类型:Oracle支持如NUMBER, BINARY_FLOAT, BINARY_DOUBLE等,而OceanBase主要使用DECIMAL, FLOAT, DOUBLE等。
  2. 字符串函数
    Oracle的字符串函数(如TO_CHAR, SUBSTR等)在OceanBase中可能需要替换为其他函数(例如使用CAST或CONVERT进行类型转换,使用SUBSTRING代替SUBSTR)。
  3. 序列和触发器
    序列:Oracle使用CREATE SEQUENCE,而OceanBase通常不直接支持序列,需要使用其他方法(如自增主键或自定义函数)来模拟序列功能。
    触发器:虽然两者都支持触发器,但Oracle的触发器语法和功能在某些情况下与OceanBase不完全相同。特别是在新旧值(:OLD和:NEW)的处理上,OceanBase可能需要调整以适应其触发器模型。
  4. 分区表
    Oracle支持多种分区类型,如RANGE, LIST, HASH等,而OceanBase也支持类似的功能,但具体的语法和选项可能有所不同。
  5. 存储过程和函数
    Oracle的PL/SQL过程和函数在OceanBase中可能需要重写,因为OceanBase的SQL语法和内置函数库略有不同。例如,某些Oracle特有的PL/SQL特性(如包(Packages))在OceanBase中可能需要重新设计。
  6. 索引和约束
    唯一约束:Oracle使用UNIQUE约束,而OceanBase也支持,但在某些情况下可能需要额外的配置或语法调整。
    全文索引:Oracle支持全文索引,而OceanBase原生不支持,但可以通过外部工具或应用层实现相似功能。
2 个赞

表空间不支持
如果没有存储过程的话我们试下来基本都兼容

2 个赞

通过OMA做个兼容性评估就行了,报告中可以显示哪些存在兼容性问题

还是有不少差异的,学习了!