最近接到的任务,客户要求使用OceanBase代替Oracle,因此使用OceanBase的Oracle模式代替。记录一下这个过程中遇到的坑。
OceanBase版本:2.2.50
1.SQL脚本差异
主要区别是OceanBase不支持add constraint这种写法,需要写在括号内部。例如:
Oracle:
-- Create table
create table ACT_EVT_LOG
(
log_nr_ NUMBER(19) not null,
type_ NVARCHAR2(64),
proc_def_id_ NVARCHAR2(64),
);
-- Create/Recreate primary, unique and foreign key constraints
alter table ACT_EVT_LOG
add constraint PK_ACT_EVT_LOG primary key (LOG_NR_)
using index
tablespace TS_INDEX_TMS;
OceanBase:
create table ACT_EVT_LOG
(
log_nr_ NUMBER(19) not null,
type_ NVARCHAR2(64),
proc_def_id_ NVARCHAR2(64),
constraint PK_ACT_EVT_LOG primary key (LOG_NR_) using index
);
目前已知的OceanBase不支持的ddl语法还有:
1.不支持novalidate
目前解决方式:去除该语法
2.不支持enable
目前解决方式:去除该语法
2.语法差异
不支持oracle的insert all语法,目前替代方案:
使用insert into foreach代替