首页 > 数据库 > 国内数据库 > # 与 Oracle 兼容性说明
本文内容来自 YashanDB 官网,原文内容请见 https://doc.yashandb.com/yashandb/23.3/zh/%E4%BA%A7%E5%93%81%E6%8F%8F%E8%BF%B0/%E4%B8%8EOracle%E5%85%BC%E5%AE%B9%E6%80%A7%E8%AF%B4%E6%98%8E.html
YashanDB 在 SQL 语法、表达式运算、FILTER CONDITION、数据类型、内置函数、系统视图和 PL 等基本功能上均与 Oracle 数据库兼容,数据库管理和开发人员不需要花费大量的时间去学习新知识,在已交付特性上直接查阅 Oracle 相关文档,也可流畅地操作使用 YashanDB,实现从 Oracle 数据库到 YashanDB 的平滑迁移。
在其他某些功能上 YashanDB 会与 Oracle 数据库的表现有所差异或者暂时没有进行兼容,这可能是因为:
本文将从如下方面具体说明,在单机部署和行式存储模式下,YashanDB 对 Oracle 数据库的兼容情况:
YashanDB 支持 Oracle 数据库中主流的 SQL 语法,其他少数因功能性缺失导致的不兼容将报语法不支持错误,此时应联系我们的技术支持提供变通方案。 更多 SQL 语法详细说明请查阅开发手册 SQL 语句文档。
(1)DML 类
SELECT
INSERT
UPDATE
DELETE
(2)DDL 类
YashanDB 兼容 Oracle 数据库大部分的对象及对象管理操作,包括:
(3)HINT
YashanDB 支持使用 HINT 并采用了 Oracle 的 HINT 语法,可实现 join 方式、join order、table scan、index scan 等的指定能力。关于 HINT 的详细说明,请查阅开发手册 hint 文档。
YashanDB 包含了主流的计算框架实现对表达式的运算,此外,Oracle 本身由于没有布尔类型(只在其 PL 中支持)需要使用其他数据类型替代运算,YashanDB 则实现了直接的布尔型表达式运算。详见下表:
| 表达式运算类型 | YashanDB | Oracle 数据库 |
|---|---|---|
| 二元运算加法 | 支持 | 支持 |
| 二元运算减法 | 支持 | 支持 |
| 二元运算乘法 | 支持 | 支持 |
| 二元运算除法 | 支持 | 支持 |
| 二元运算取余 | 支持 | 支持 |
| 一元运算取反 | 支持 | 支持 |
| 位运算与 | 支持 | 支持 |
| 位运算或 | 支持 | 支持 |
| 位运算异或 | 支持 | 支持 |
| Boolean 运算 | 支持 | 不支持 |
YashanDB 的 FILTER CONDITON 类型完全兼容 Oracle 数据库的 FILTER CONDITON 类型。详见下表:
| FILTER CONDITON | YashanDB | Oracle 数据库 |
|---|---|---|
| ALL | 支持 | 支持 |
| ANY | 支持 | 支持 |
| AND | 支持 | 支持 |
| EQUAL | 支持 | 支持 |
| NOT EQUAL | 支持 | 支持 |
| EXISTS | 支持 | 支持 |
| NOT EXISTS | 支持 | 支持 |
| GREAT EQUAL | 支持 | 支持 |
| GREATE | 支持 | 支持 |
| IN | 支持 | 支持 |
| NOT IN | 支持 | 支持 |
| IS NULL | 支持 | 支持 |
| IS NOT NULL | 支持 | 支持 |
| LESS | 支持 | 支持 |
| LESS EQUAL | 支持 | 支持 |
| LIKE | 支持 | 支持 |
| NOT LIKE | 支持 | 支持 |
| REG LIKE | 支持 | 支持 |
| NOT REG LIKE | 支持 | 支持 |
| OR | 支持 | 支持 |
| SOME | 支持 | 支持 |
YashanDB 目前包含了 27 种数据类型,与 Oracle 数据库对比情况见下表:
| 数据类型 | YashanDB | Oracle 数据库 |
|---|---|---|
| BOOLEAN | 支持 | 不支持 |
| TINYINT | 支持 | 不支持 |
| SMALLINT | 支持 | 支持 |
| INTEGER | 支持 | 支持 |
| BIGINT | 支持 | 不支持 |
| FLOAT | 支持 | 支持 |
| DOUBLE | 支持 | 支持 |
| NUMBER | 支持 | 支持 |
| DATE | 支持 | 支持 |
| TIMESTAMP | 支持 | 支持 |
| TIME | 支持 | 不支持 |
| INTERVAL YEAR TO MONTH | 支持 | 支持 |
| INTERVAL DAY TO SECOND | 支持 | 支持 |
| CHAR | 支持 | 支持 |
| VARCHAR | 支持 | 支持 |
| NCHAR | 支持 | 支持 |
| NVARCHAR | 支持 | 支持 |
| ST_GEOMETRY | 支持 | 支持 |
| RAW | 支持 | 支持 |
| CLOB | 支持 | 支持 |
| NCLOB | 支持 | 支持 |
| BLOB | 支持 | 支持 |
| BIT | 支持 | 不支持 |
| ROWID | 支持 | 支持 |
| UROWID | 支持 | 支持 |
| CURSOR | 支持 | 支持 |
| JSON | 支持 | 支持 |
| XMLTYPE | 支持 | 支持 |
Note:
YashanDB 的大对象(CLOB/BLOB)数据类型有较强的存储能力,但大对象存取性能不推荐在复杂场景下使用。
YashanDB 的 XMLTYPE 数据类型底层以 CLOB 进行存储,与 Oracle 存储方式不同,在函数调用时可能存在差异。
YashanDB 目前实现了超过 120 个内置函数,具体清单及说明请查阅开发手册 内置函数文档。
与 Oracle 数据库的内置函数对比情况见下表:
| 函数类型 | 支持函数列表 | YashanDB | Oracle 数据库 |
|---|---|---|---|
| 数学运算函数 | ABS,ACOS,ASIN,ATAN,ATAN2,COS,COT, CEIL,DIV,EXP,FLOOR,LOG,LN,MOD,PI,POW,POWER,ROUND,SIGN,SIN,SINH,STDDEV,STDDEV_POP,STDDEV_SAMP,SQRT,TAN,TANH,TRUNC,VARIANCE,VAR_POP,VAR_SAMP,…… | 支持 | 支持 |
| 字符处理函数 | ASCII,CHR,CONCAT,INITCAP,INSTR,INSTRB,LEFT,LENGTH,LENGTH2,LOWER,LPAD,LTRIM,NLSSORT,POSITION,REPLACE,RIGHT,RPAD,RTRIM,SPLIT,STRPOS,SUBSTR,SUBSTRB,SOUNDEX,TRIM,TRANSLATE ... USING,UNISTR,UPPER,empty_LOB,…… | 支持 | 支持 |
| 正则匹配函数 | REGEXP_LIKE,REGEXP_COUNT,REGEXP_INSTR,REGEXP_REPLACE,REGEXP_SUBSTR,…… | 支持 | 支持 |
| 转换函数 | BIN_TO_NUM,CAST,NUMTODSINTERVAL,NUMTOYMINTERVAL,ROWIDTOCHAR,TRANSLATE,TO_CHAR,TO_DATE,TO_DSINTERVAL,TO_NUMBER,TO_TIMESTAMP,TO_YMINTERVAL,…… | 支持 | 支持 |
| 集合处理函数 | COALESCE,DECODE,GREATEST,LEAST,NVL,NVL2,…… | 支持 | 支持 |
| 聚集函数 | AVG,COUNT,GROUP_CONCAT,LISTAGG,MAX,MIN,SUM,MEDIAN,PERCENTILE_CONT,…… | 支持 | 支持 |
| 窗口函数 | AVG,COUNT,FIRST,FIRST_VALUE,LAST,LAST_VALUE,LEAD,MAX,SUM,RANK,ROW_NUMBER,…… | 支持 | 支持 |
| 系统函数 | SCN_TO_TIMESTAMP,TIMESTAMP_TO_SCN,USERENV,…… | 支持 | 支持 |
| 时间处理函数 | ADD_MONTHS,CURRENT_TIMESTAMP,EXTRACT,LAST_DAY,NOW,NEXT_DAY,OVERLAPS,…… | 支持 | 支持 |
| 条件处理函数 | IF,IFNULL,ISNULL,NULLIF | 支持 | 不支持 |
| JSON 处理函数 | JSON,JSON_ARRAY_GET,JSON_ARRAY_LENGTH,JSON_EXISTS,JSON_FORMAT,JSON_PARSE,JSON_QUERY,JSON_SERIALIZE,…… | 支持 | 支持 |
| 随机函数 | RANDOM | 支持 | 不支持 |
| 其他函数 | HEXTORAW,SQLCODE,SQLERRM,SYS_CONNECT_BY_PATH,…… | 支持 | 支持 |
YashanDB 兼容了 Oracle 数据库大部分的 PL 功能,包括:
YashanDB 兼容了 Oracle 数据库部分的内置高级包,包括:
| 高级包名称 |
|---|
| DBMS_AUDIT_MGMT |
| DBMS_APPLICATION_INFO |
| DBMS_CRYPTO |
| DBMS_DESCRIBE |
| DBMS_HM |
| DBMS_IJOB |
| DBMS_JOB |
| DBMS_LOB |
| DBMS_LOCK |
| DBMS_METADATA |
| DBMS_MVIEW |
| DBMS_OUTPUT |
| DBMS_RANDOM |
| DBMS_RESOURCE_MANAGER |
| DBMS_ROWID |
| DBMS_SCHEDULER |
| DBMS_SESSION |
| DBMS_SQL |
| DBMS_STANDARD |
| DBMS_STATS |
| DBMS_UTILITY |
| DBMS_XA |
| OWA_UTIL |
| UTL_ENCODE |
| UTL_FILE |
| UTL_I18N |
| UTL_RAW |
YashanDB 兼容 Oracle 数据库的 DBA 视图清单如下:(ALL/USER 视图兼容清单与 DBA 视图对应相同)
| 视图名称 |
|---|
| AUDITABLE_SYSTEM_ACTIONS |
| AUDIT_UNIFIED_ENABLED_POLICIES |
| AUDIT_UNIFIED_POLICIES |
| COL |
| DBA_ARGUMENTS |
| DBA_AUDIT_MGMT_CLEANUP_JOBS |
| DBA_AUDIT_MGMT_LAST_ARCH_TS |
| DBA_COLL_TYPES |
| DBA_COL_COMMENTS |
| DBA_CONSTRAINTS |
| DBA_CONS_COLUMNS |
| DBA_DATA_FILES |
| DBA_DB_LINKS |
| DBA_DEPENDENCIES |
| DBA_EXTERNAL_TABLES |
| DBA_FREE_SPACE |
| DBA_HISTOGRAMS |
| DBA_INDEXES |
| DBA_IND_COLUMNS |
| DBA_IND_EXPRESSIONS |
| DBA_IND_PARTITIONS |
| DBA_IND_STATISTICS |
| DBA_IND_SUBPARTITIONS |
| DBA_JOBS |
| DBA_LOBS |
| DBA_LOB_PARTITIONS |
| DBA_LOB_SUBPARTITIONS |
| DBA_LOG_GROUPS |
| DBA_MVIEWS |
| DBA_NESTED_TABLES |
| DBA_OBJECTS |
| DBA_OUTLINES |
| DBA_OUTLINE_HINTS |
| DBA_PART_COL_STATISTICS |
| DBA_PART_HISTOGRAMS |
| DBA_PART_INDEXES |
| DBA_PART_KEY_COLUMNS |
| DBA_PART_TABLES |
| DBA_PROCEDURES |
| DBA_PROFILES |
| DBA_RECYCLEBIN |
| DBA_ROLES |
| DBA_ROLE_PRIVS |
| DBA_SCHEDULER_JOBS |
| DBA_SEGMENTS |
| DBA_SEQUENCES |
| DBA_SOURCE |
| DBA_SUBPARTITION_TEMPLATES |
| DBA_SUBPART_KEY_COLUMNS |
| DBA_SYNONYMS |
| DBA_SYS_PRIVS |
| DBA_TABLES |
| DBA_TABLESPACES |
| DBA_TAB_COLS |
| DBA_TAB_COLUMNS |
| DBA_TAB_COL_STATISTICS |
| DBA_TAB_COMMENTS |
| DBA_TAB_MODIFICATIONS |
| DBA_TAB_PARTITIONS |
| DBA_TAB_PRIVS |
| DBA_TAB_STATISTICS |
| DBA_TAB_STAT_PREFS |
| DBA_TAB_SUBPARTITIONS |
| DBA_TEMP_FILES |
| DBA_TRIGGERS |
| DBA_TRIGGER_COLS |
| DBA_TRIGGER_ORDERING |
| DBA_TYPES |
| DBA_TYPE_ATTRS |
| DBA_TYPE_METHODS |
| DBA_USERS |
| DBA_VIEWS |
| UNIFIED_AUDIT_TRAIL |
YashanDB 兼容 Oracle 数据库的动态视图清单如下:
| 视图名称 |
|---|
| V$2PC_PENDING |
| V$ARCHIVE_DEST |
| V$ARCHIVE_DEST_STATUS |
| V$ARCHIVE_GAP |
| V$ARCHIVED_LOG |
| V$BUFFER_POOL |
| V$BUFFER_POOL_STATISTICS |
| V$CONTROLFILE |
| V$DATABASE |
| V$DATAFILE |
| V$DIAG_INCIDENT |
| V$DIAG_PROBLEM |
| V$FIXED_TABLE |
| V$FIXED_VIEW_DEFINITION |
| V$HM_CHECK |
| V$HM_CHECK_PARAM |
| V$HM_FINDING |
| V$HM_RUN |
| V$INSTANCE |
| V$LOCK |
| V$LOCKED_OBJECT |
| V$LOGFILE |
| V$MYSTAT |
| V$OPEN_CURSOR |
| V$OSSTAT |
| V$PARAMETER |
| V$PQ_TQSTAT |
| V$PROCESS |
| V$PX_SESSION |
| V$RECOVERY_PROGRESS |
| V$RESERVED_WORDS |
| V$ROLLBACK |
| V$SEGMENT_STATISTICS |
| V$SESS_TIME_MODEL |
| V$SESSION |
| V$SESSION_EVENT |
| V$SESSION_WAIT |
| V$SESSTAT |
| V$SGA |
| V$SGASTAT |
| V$SQL |
| V$SQL_BIND_CAPTURE |
| V$SQL_PLAN |
| V$SQL_PLAN_STATISTICS |
| V$SQLAREA |
| V$SQLSTATS |
| V$SQLTEXT |
| V$STATNAME |
| V$SYSSTAT |
| V$SYSTEM_EVENT |
| V$SYSTEM_PARAMETER |
| V$SYSTEM_WAIT_CLASS |
| V$TABLESPACE |
| V$TEMP_EXTENT_POOL |
| V$TRANSACTION |
| V$UNDOSTAT |
| V$VERSION |
YashanDB 支持如下字符集:
同时,YashanDB 支持如下字符集排序方式:
YashanDB 的 SQL 引擎兼容了 Oracle 数据库大部分的特性,包括:
权限管理
身份鉴别
审计
imp
exp
统计信息
YashanDB 的统计信息体系兼容了 Oracle 数据库大部分的特性,包括:
表空间
可靠性
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3071960/ ,如需转载,请注明出处,否则将追究法律责任。