HaloDB 的 Oracle 兼容模式
前倾回顾
前面介绍了“光环”数据库的基本情况和安装办法。
- 哈喽,国产数据库!Halo DB!
- 三步走,Halo DB 安装指引
HaloDB是基于原生PG打造的新一代高性能安全自主可控全场景通用型统一数据库。
业内首次创造性的提出插件式内核架构设计,通过配置的方式,适配不同的应用场景,打造全场景覆盖的能力,满足企业大部分数据存储处理需求。从而消除数据孤岛,降低系统复杂度,保护企业既有投资,降低企业成本。同时支持x86、arm等异构平台之间的混合部署。
或许大家对 Halo DB 在 Oracle 和 MySQL 的兼容性支持方面也非常感兴趣。
本文将介绍如何开启 HaloDB 的 Oracle 兼容模式,以及基础使用方法。
HaloDB 的 Oracle 兼容模式
那么,HaloDB 到底兼容哪些 Oracle 语法、视图、系统包呢?
这里有一份(部分)清单,可供参考。
Halo 数据库支持 Oracle 兼容语法:
- 支持连接符
- 支持带别名的 UPDATE
- 支持匿名子查询
- 支持窗口函数 DISTINCT 操作
- 支持 DUAL 伪表
- 支持 SYSDATE/SYSTIMESTAMP
- 支持 ROWNUM
- 支持 ROWID
- 支持 MINUS 操作
- 支持 DECODE 函数(不限制参数个数)
- 支持 DBLINK 语法
- 支持 Oracle 格式的数值输出
- 支持 VARCHAR2/NUMBER/CLOB/BLOB 数据类型
- 支持 START WITH/CONNECT BY 语法
- 支持 IN 的特别语法(例: SELECT * FROM a_table WHERE a IN b)
- 支持 Oracle 格式的日期类型及运算
- 支持 LISTAGG/WM_CONCAT 函数
- 支持 HAVING/GROUP BY 子句顺序互换(即 HAVING 子句可在GROUP BY 之前也可在 GROUP BY 之后)
- 支持 NULL 与空串的等价转换
- 支持 Oracle 语法的序列取值
- 支持 Oracle 语法的 PROCEDURE/FUNCTION/PACKAGE 的创建
- 支持 ORDER BY 子句中使用列别名
- 支持 TABLE 函数
- 支持 MERGE INTO 语法
- 支持 WITHIN GROUP 语法
- 支持 Q’ 转义语法
- 支持 NLS_DATE_FORMAT 参数
- 支持 Oracle 的常用视图
Halo 数据库支持 Oracle 兼容的视图:
- DBA_SEGMENTS
- PRODUCT_COMPONENT_VERSION
- USER_CON_COLUMNS
- USER_CONSTRAINTS
- USER_IND_COLUMNS
- USER_OBJECTS
- USER_PROCEDURES
- USER_SOURCE
- USER_TAB_COLUMNS
- USER_TABLES
Halo 数据库支持 Oracle 兼容的系统包:
- DBMS_ALERT
- DBMS_ASSERT
- DBMS_OBFUSCATION_TOOLKIT
- DBMS_OUTPUT
- DBMS_PIPE
- DBMS_RANDOM
- DBMS_UTILITY
- UTL_FILE
- UTL_I18N
等等。
清单很长,这里就不再列举了,详情可留言,带你进《HaloDB产品吐槽群》。
开启 HaloDB 的 Oracle 兼容模式
修改配置文件
如需开启 Oracle 兼容模式,需要先对数据库配置文件 postgresql.conf 进行调整。
#database_compat_mode = 'postgresql' --> database_compat_mode = 'oracle'
#standard_parserengine_auxiliary = 'on' --> standard_parserengine_auxiliary = 'on'
#transform_null_equals = off --> transform_null_equals = off
#oracle.use_datetime_as_date = false --> oracle.use_datetime_as_date = true