KingbaseES 与 Oracle 的对比
北京人大金仓信息技术股份有限公司
2009 年 8 月
第 1页/共 20页
目录
1 概述...................................................................................................................................................4
2 系统的运行环境.............................................................................................................................. 4
2.1
KingbaseES 的系统运行环境................................................................................................. 4
2.2 与 Oracle 的比较..................................................................................................................... 4
3 数据库对象...................................................................................................................................... 4
3.1 表空间...................................................................................................................................... 4
3.2 表.............................................................................................................................................. 5
3.3 索引.......................................................................................................................................... 5
3.4 视图.......................................................................................................................................... 5
3.5
Sequence(序列号发生器)...................................................................................................5
3.6 函数和存储过程...................................................................................................................... 6
字符串函数......................................................................................................................6
类型转换函数..................................................................................................................6
获得系统信息函数..........................................................................................................7
3.7 触发器...................................................................................................................................... 7
3.8
KingbaseES 不支持的数据库对象......................................................................................... 8
3.6.1
3.6.2
3.6.3
4
SQL...................................................................................................................................................8
4.1 数据类型.................................................................................................................................. 8
4.2
SQL 语法..................................................................................................................................9
4.3
PL/SQL .....................................................................................................................................9
4.4 数据库编程接口和对开发工具的支持................................................................................ 10
4.4.1 ODBC.................................................................................................................................10
4.4.2 OLE DB..............................................................................................................................11
JDBC.................................................................................................................................. 11
4.4.3
4.4.4
.NET Data Provider ............................................................................................................11
5 数据库系统管理............................................................................................................................ 12
5.1 数据库的存储结构................................................................................................................ 12
5.1.1 KingbaseES 数据库的存储结构....................................................................................... 12
5.1.2
与 Oracle 数据库的存储结构的区别........................................................................... 12
5.2 数据库的进程结构................................................................................................................ 13
5.2.1 KingbaseES 的进程结构................................................................................................... 13
与 Oracle 数据库的进程结构的区别........................................................................... 14
5.2.2
5.3 数据库的内存管理................................................................................................................ 14
5.4 数据库的并发控制和事务处理............................................................................................ 14
5.5 数据库的备份和恢复............................................................................................................ 15
KingbaseES 的数据库备份和恢复...............................................................................15
5.5.1
5.5.2 与 Oracle 数据库备份和恢复的区别..........................................................................15
5.6 数据库的性能监控................................................................................................................ 15
5.7 数据库的安全性.................................................................................................................... 16
第 2页/共 20页
5.7.1
5.7.2
5.7.3
5.7.4
身份识别和认证............................................................................................................16
基于角色的权限管理和访问控制................................................................................16
审计................................................................................................................................17
数据库加密....................................................................................................................17
5.8 数据库的高可用性................................................................................................................ 18
6 数据库管理工具............................................................................................................................ 18
6.1
6.2
6.3
6.4
6.5
6.6
KingbaseES 企业管理器 ....................................................................................................... 18
KingbaseES 查询分析器 ....................................................................................................... 18
KingbaseES 数据迁移工具................................................................................................... 19
KingbaseES 逻辑备份还原工具 ........................................................................................... 19
KingbaseES 物理备份恢复工具.......................................................................................... 19
KingbaseES 控制管理器 ....................................................................................................... 20
第 3页/共 20页
1 概述
KingbaseES 是一个大型通用跨平台的多用户数据库管理系统,可以安装和运行于
Windows、Linux、Unix 等多种操作系统平台下。
本文档从系统的运行环境、数据库应用开发、数据库系统管理和数据库管理工具等几个
方面比较了 KingbaseES 和 Oracle 的不同之处。
本文档依据于 KingbaseES V6.1 和 Oracle 做相关比较。
2 系统的运行环境
2.1 KingbaseES 的系统运行环境
硬件环境
CPU: x86 或兼容机型,PowerPC,UltraSparc 等;
内存:256MB 以上,建议 512MB 以上;
硬盘:硬盘的大小与所需要存储的数据量有关。Linux 上建议采用 ext3 文件系
统,Windows 上使用 NTFS 文件系统。
软件环境
KingbaseES 服务器可以安装在 Microsoft Windows 2000/XP/2003,红旗/中标
/Red Hat/Turbo Linux,麒麟 Kylin,IBM AIX,Sun Solaris 操作系统下。在安装
KingbaseES 之前,需要配置好相应系统平台的系统参数。
2.2 与 Oracle 的比较
Oracle 支持更多的操作系统平台。KingbaseES 目前虽然只提供上述操作系统平台的版
本,但 KingbaseES 中与平台相关的代码是独立出来的,因此很容易扩展到对其他操作系统
平台的支持。
3 数据库对象
3.1 表空间
KingbaseES 表空间的定义和使用与 Oracle 基本相同。
第 4页/共 20页
3.2 表
KingbaseES 可以创建常规表和临时表,并在表上支持完整性约束:
(1) 实体完整性(主码)
(2) 参照完整性(外码)
(3) 用户自定义的完整性(NOT NULL,UNIQUE,CHECK,DEFAULT)。
KingbaseES 支持对表的水平分片(Partition),定义和使用与 Oracle 基本相同。
Oracle 支持,但是 KingbaseES 目前不支持的表的特征有:
(1) 不能指定表的物理存储特征,这与 KingbaseES 的物理存储结构(在后面章节中会介
绍)相关。
(2) 不支持对表的并行操作(Parallel)
(3) 不支持索引组织表(Index-Organized Table)
(4) 不支持 Cluster 存储的表
3.3 索引
KingbaseES 和 Oracle 都支持以下的索引类型:
(1) B 树索引
a) Unique 和 Non-unique 索引
b) 复合索引(Composite index)
(2) 函数索引
KingbaseES 支持但是 Oracle 不支持的索引类型:Hash 索引
KingbaseES 不支持但是 Oracle 支持的索引类型:
(1) Bitmap 索引
(2) Domain 索引
Oracle 支持,但是 KingbaseES 目前不支持的索引的特征有:
(1) 不能指定索引的物理存储特征
(2) 不支持索引的分区(Partition ,与不支持表的分区相对应)
(3) 不支持索引 key 的压缩。
(4) 不支持 reverse Key 索引。
3.4 视图
与 Oracle 相同,KingbaseES 视图的实现基本遵循 SQL 标准。目前 KingbaseES 不支持
实体化视图(Materialized View)。
3.5 Sequence(序列号发生器)
序列号发生器的定义和使用与 Oracle 基本相同。
第 5页/共 20页
3.6 函数和存储过程
KingbaseES 和 Oracle 都提供了多种类型的内置系统函数。具体函数的使用可以参看手
册。
3.6.1 字符串函数
功能说明
对 NULL 值的
处理
Oracle
KingbaseES
语法 NVL(STRING,STRING)
语法 NVL(STRING,STRING)或
ISNULL(STRING,STRING)
实例 SELECT NVL(NULL,’THIS IS
实例 SELECT NVL(NULL,’THIS IS
NULL’) FROM DUAL;
NULL’) FROM DUAL;
某字符串在另
语法 INSTR(STRMAIN,STRSUB) 语法 INSTR(STRMAIN,STRSUB)或
一个字符串中
的位置
POSITION(STRSUB
STRMAIN)
IN
实例 SELECT INSTR(‘BEI JING’,
实例 SELECT
INSTR(‘BEI
JING’,
‘JING’) FROM DUAL;
‘JING’) FROM DUAL;
取得字符串的
语法 LENGTH()
语法 LENGTH()或 CHAR_LENGTH()或
长度
取 得 字 符 串
的一部分
匹 配 字 符 转
换
CHARACTER_LENGTH()
实例 SELECT LENGTH(‘BEIJING’)
实例 SELECT
LENGTH(‘BEIJING’)
FROM DUAL
FROM DUAL
语法 SUBSTR(S,FROM,TO)
语法 SUBSTRING(S,FROM,TO)或
SUBSTR(S,FROM,TO)
实例 SELECT
实例 SELECT
SUBSTR('KINGBASEES',5,4)
FROM DUAL;
语法 TRANSLATE
SUBSTRING('KINGBASEES',5,4)
FROM DUAL;
语法 TRANSLATE
实例 SELECT
实例 SELECT
TRANSLATE('12345',
TRANSLATE('12345',
'AX') FROM DUAL;
'14',
'14', 'AX') FROM DUAL;
3.6.2 类型转换函数
功能说明
将日期转
换为字符
串
将数值转
换为字符
串
Oracle
KingbaseES
语法 TO_CHAR(日期,格式)
语法 TO_CHAR(日期,格式)
实例 SELECT
实例 SELECT
TO_CHAR(SYSDATE,'YYYY-M
M-DD') FROM DUAL;
语法 TO_CHAR(VALUE)或
TO_CHAR(VALUE, FORMAT)
TO_CHAR(NOW(),'YYYY-MM-DD')F
ROM DUAL;
语法 TO_CHAR(VALUE)
实例 SELECT
TO_CHAR(12345) 实例 SELECT TO_CHAR(12345) FROM
第 6页/共 20页
将字符串
转换为数
字
将字符串
转换为日
期
将字符串
转换为时
间
FROM DUAL;
DUAL;
语法 TO_NUMBER(VALUE)
语法 TO_NUMBER(VALUE)
实例 SELECT
实例 SELECT
TO_NUMBER('12345')
TO_NUMBER('12345') FROM
DUAL
FROM DUAL
语法 TO_DATE(TEXT,TEXT)
语法 TO_DATE(TEXT,TEXT)
实例 SELECT
实例 SELECT
TO_DATE('20080808','YYYY
DDMM')FROM DUAL;
TO_DATE('20080808','YYYYDDMM
')FROM DUAL;
语法 TO_TIMESTAMP(TEXT,TEXT) 语法 TO_TIMESTAMP(TEXT,TEXT)
实例 SELECT
实例 SELECT
TO_TIMESTAMP('2006-12-13
23:54:32',
'YYYY-MM-DD
HH24:MI:SS')FROM DUAL;
TO_TIMESTAMP('2006-12-13
23:54:32',
HH24:MI:SS')FROM DUAL;
'YYYY-MM-DD
3.6.3 获得系统信息函数
功能说明
取系统当
前日期
取系统当
前时间
Oracle
KingbaseES
语法 SYSDATE
语法 SYSDATE
或 CURRENT_DATE()
实例 SELECT
SYSDATE
FROM
实例 SELECT SYSDATE FROM DUAL;
DUAL;
语法 SYSDATE
或 CURRENT_TIMESTAMP
实例 SELECT
CURRENT_TIMESTAMP
FROM DUAL;
语法 CURRENT_TIMESTAMP()
或 NOW()
实例 SELECT
CURRENT_TIMESTAMP
FROM DUAL;
取当前的
访问用户
语法 USER
语法 USER
或 CURRENT_USER
实例 SELECT USER FROM DUAL; 实例 SELECT USER FROM DUAL;
另外,KingbaseES 和 Oracle 都可以自定义函数和存储过程来扩充系统的功能。
自定义的函数和存储过程通常使用 PL/SQL 编写。有关 PL/SQL 差异在后面的章节中介
绍。
3.7 触发器
KingbaseES 和 Oracle 都支持在触发事件前后的语句级和行级的触发器。
Oracle 支持但是 KingbaseES 不支持的触发器特征如下:
(1) 触发事件:
KingbaseES 支持的事件是对表的增、删、改操作。
Oracle 除此之外还支持修改某个列、DDL 事件和 DATABASE 事件。
(2) 触发事件前后触发器,Oracle 还支持在视图上的 INSTAEDOF 触发器
第 7页/共 20页
(3) 在触发器动作的定义中,Oracle 允许使用在触发器定义中给 old 和 new 定义别
名。
触发器的动作通常使用 PL/SQL 编写。有关 PL/SQL 差异在后面的章节中介绍。
3.8 KingbaseES 不支持的数据库对象
Oracle 支持而 KingbaseES 目前的版本没有的数据库对象包括:
(1) 同义词(synonyms)
(2) package
(3) Materialized views
(4) Index-organized Table
(5) Cluster
(6) Dimensions
(7) Contexts
(8) Directories
(9) Profiles
(10) Rollback segment
4 SQL
4.1 数据类型
KingbaseES 支持多种内置的数据类型,其数据类型的实现基本上遵循 SQL 标准中的定
义, 下图为与 Oracle 的数据类型对照表。
说明
字符串类型 VARCHAR2
Oracle
LONG
CLOB
数值数据类型 NUMBER
日期时间型
二进制串类型 BFILE
DATE 或 TIMESTAMP
RAW 或 LONG RAW
BLOB
KingbaseES
VARCHAR 或 VARCHAR2
TEXT
CLOB
NUMERIC
TIMESTAMP
BLOB
BYTEA
BLOB
目前 Oracle 支持,但是 KingbaseES 目前不支持的数据类型有:
(1) BFILE
(2) "Any" Types
(3) XML Types
(4) Spatial Type
(5) Media Types
与 Oracle 一样,KingbaseES 用户可以创建新的数据类型。
第 8页/共 20页