OceanBase 支持 Oracle 中绝大部分的基本 SQL 语法。这意味着在从 Oracle 过渡到 OceanBase 的过程中,您不需要消耗大量的时间去学习新的语法,并且可以流畅的实现从 Oracle 到 OceanBase 的迁移。
基于优化和开发的考虑,有一些功能 OceanBase 暂不支持或者是与 Oracle 的表现有所差异。所以本篇文档中将分节对比 OceanBase 对 Oracle 的兼容。
SQL 语法OceanBase 支持 Oracle 中基本 SQL 语法。
少数功能性缺失会报语法不支持的错误,例如在层次查询包含多表连接的场景下就会报错。
OceanBase 暂不支持 Oracle 部分较复杂的 OLAP 语法,如模式匹配、 PIVOT/ UNPIVOT 函数、多态表函数和频繁项目集计算。
SQL 数据类型Oracle 中有 24 个数据类型, OceanBase 目前支持 18 种,详细信息请参阅章节 内建数据类型。
基于优化的考虑,LONG 和 LONG RAW 数据类型过于老旧,所以 OceanBase 不计划支持这两种数据类型。
OceanBase 中大对象数据类型有 48 M 的大小限制且性能不佳,所以不推荐在复杂场景下使用。详细信息请参阅章节 大对象类型。
字符集和 CollationOceanBase 支持 UTF-8、UTF-16、GBK、GB18030 和国家字符集。
OceanBase 仅支持大小写敏感的 Collation。
OceanBase 不支持多语言语义的 Collation 比较和排序。
内建函数
Oracle 中支持内建函数 117 个,OceanBase 暂时支持 103 个,详细信息请参阅章节 函数。
系统视图Oracle 中有字典视图 400 多个,OceanBase 目前兼容 17 个:ALL_CONS_COLUMNS
ALL_CONSTRAINTS
ALL_IND_COLUMNS
ALL_INDEX
ALL_OBJECTS
ALL_PART_KEY_COLUMNS
ALL_PART_TABLES
ALL_SEQUENCE
ALL_SOURCE
ALL_SUBPART_KEY_COLUMNS
ALL_SYNONYMS
ALL_TAB_COLUMNS
ALL_TAB_PARTITIONS
ALL_TABLES
ALL_TYPES
ALL_USERS
ALL_VIEWS
Oracle 中有性能视图 700 多个,OceanBase 目前兼容 3 个。V$SYSTEM_EVENT
V$SESSION_WAIT
V$NLS_PARAMETERS
SQL 功能
OceanBase 支持 Oracle 中核心的 SQL 功能:
计划缓存
大纲绑定
计划管理演进
代价优化器
代价改写
预编译语句
全局索引
函数索引
外键OceanBase 支持外键。
OceanBase 不支持添加外键约束 DISABLE 和 ENABLE。
OceanBase 不支持 ALTER TABLR 语句中添加外键约束。
OceanBase 不支持级联中的 SET NULL。
触发器OceanBase 目前仅支持行级触发器。
OceanBase 目前只支持在表上创建触发器,不支持在视图上创建触发器。
OceanBase 不支持对触发器使用 DISABLE 和 ENABLE 操作。
数据库链接OceanBase 暂不支持异构数据库的链接。
OceanBase 暂不支持数据库链接的写语句。
OceanBase 暂不支持部分子查询(主要是不能提升的子查询)。
OceanBase 暂不支持 LINK 算子的 RESCAN 操作(执行时报错)。
同义词
OceanBase 支持对表、视图、同义词和序列等对象创建同义词,并且支持创建公共同义词。
可更新视图
OceanBase 不支持 WITH CHECK OPTION 子句。
约束OceanBase 支持 CHECK、UNIQUE 和 NOT NULL 约束。
OceanBase 不支持 UNIQUE 约束的 DISABLE 操作。
Hint
Oracle 中有 Hint 73 个,目前 OceanBase 兼容 25 个。另外,OceanBase 特有 Hint 20 个:
OceanBase 兼容 Oracle 的 Hint
OceanBase 特有的 Hint
USE_BNL
INDEX Hint
NO_USE_BNL Hint
FULL Hint
USE_PX Hint
LEADING Hint
NO_USE_PX Hint
ORDERED Hint
USE_JIT Hint
USE_MERGE Hint
NO_USE_JIT Hint
NO_USE_MERGE Hint
USE_HASH_AGGREGATION Hint
USE_HASH Hint
NO_USE_HASH_AGGREGATION Hint
NO_USE_HASH Hint
USE_LATE_MATERIALIZATION Hint
USE_NL Hint
NO_USE_LATE_MATERIALIZATION Hint
NO_USE_NL Hint
USE_NL_MATERIALIZATION Hint
PARALLEL Hint
NO_USE_NL_MATERIALIZATION Hint
PQ_DISTRIBUTE Hint
PLACE_GROUP_BY Hint
NO_REWRITE Hint
NO_PLACE_GROUP_BY Hint
NO_EXPAND Hint
NO_PRED_DEDUCE Hint
USE_CONCAT Hint
READ_CONSISTENCY Hint
MERGE Hint
FROZEN_VERSION Hint
NO_MERGE Hint
QUERY_TIMEOUT Hint
UNNEST Hint
LOG_LEVEL Hint
NO_UNNEST Hint
USE_PLAN_CACHE Hint
QB_NAME Hint
TRANS_PARAM Hint
TRACING Hint
STAT Hint TOPK Hint
TRACE_LOG Hint
安全相关
透明加密
OceanBase 支持 Oracle 兼容的 TDE 功能, 重做日志文件( Redo Log)加密暂不支持。
审计OceanBase 支持 Oracle 的标准审计,但是暂不支持统一审计。
OceanBase 审计结果支持存放于文件或者内部审计表中。
OceanBase 支持语句和对象审计类型,对象审计只支持表、序列和包对象, 其他对象暂不支持。
OceanBase 暂不支持网络审计和 FGA 细粒度审计。
标签安全OceanBase 支持 Oracle 中的标签安全(Label Security)功能。
OceanBase 暂不支持策略在创建生效后的 DISABLE 操作以及 DISABLE 后的 ENABLE 操作。
传输链路加密SSL
OceanBase 支持客户端与 OceanBase 服务器的传输链路加密。
分区支持
OceanBase 支持一级,二级分区,支持哈希(Hash)、范围(Range)和列表(List)等分区形式。
二级分区支持如下表:
分区/子分区
哈希
范围
列表
哈希
不支持
支持
支持
范围
支持
不支持
支持
列表
支持
支持
不支持
OceanBase 中分区维护操作命令只支持基本的,例如一级分区 ADD PARTITION 操作。
OceanBase 中暂不支持复杂分区维护操作,例如 SPLIT、MERGE 和 EXCHANGE 分区等。
OceanBase 中不支持 TRUNCATE 分区。
OceanBase 中二级分区只支持同构形态的,不支持异构形态的二级分区。
并行查询OceanBase 支持类 Oracle 的并行查询,OceanBase 中 DOP 需要手工指定,且暂不支持 Auto DOP 功能。
OceanBase 暂不支持 PDML。