Oracle 迁移到 OB 过程中有哪些不兼容的 DDL 语法?
2 个赞
让我来告诉你:
- 数据类型
日期和时间类型:Oracle使用DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE等,而OceanBase通常使用DATETIME和TIMESTAMP,但不带时区。
数值类型:Oracle支持如NUMBER, BINARY_FLOAT, BINARY_DOUBLE等,而OceanBase主要使用DECIMAL, FLOAT, DOUBLE等。 - 字符串函数
Oracle的字符串函数(如TO_CHAR, SUBSTR等)在OceanBase中可能需要替换为其他函数(例如使用CAST或CONVERT进行类型转换,使用SUBSTRING代替SUBSTR)。 - 序列和触发器
序列:Oracle使用CREATE SEQUENCE,而OceanBase通常不直接支持序列,需要使用其他方法(如自增主键或自定义函数)来模拟序列功能。
触发器:虽然两者都支持触发器,但Oracle的触发器语法和功能在某些情况下与OceanBase不完全相同。特别是在新旧值(:OLD和:NEW)的处理上,OceanBase可能需要调整以适应其触发器模型。 - 分区表
Oracle支持多种分区类型,如RANGE, LIST, HASH等,而OceanBase也支持类似的功能,但具体的语法和选项可能有所不同。 - 存储过程和函数
Oracle的PL/SQL过程和函数在OceanBase中可能需要重写,因为OceanBase的SQL语法和内置函数库略有不同。例如,某些Oracle特有的PL/SQL特性(如包(Packages))在OceanBase中可能需要重新设计。 - 索引和约束
唯一约束:Oracle使用UNIQUE约束,而OceanBase也支持,但在某些情况下可能需要额外的配置或语法调整。
全文索引:Oracle支持全文索引,而OceanBase原生不支持,但可以通过外部工具或应用层实现相似功能。
2 个赞
表空间不支持
如果没有存储过程的话我们试下来基本都兼容
2 个赞
通过OMA做个兼容性评估就行了,报告中可以显示哪些存在兼容性问题
还是有不少差异的,学习了!