深度对比Oracle与SQL Server 联系客服

发布时间 : 星期一 文章深度对比Oracle与SQL Server更新完毕开始阅读0b7d1f64910ef12d2bf9e79f

深度对比Oracle与SQL Server

1. 概述

1.1. 产品特点对比

开放性

SQL Server 只能在Windows上运行,没有丝毫的开放性,操作系统的稳定对数据库是十分重要的。Windows9X系列偏重于桌面应用,NT server只适合中小型企业。而且Windows平台的可靠性,安全性和伸缩性是非常有限的。它不象UNIX那样久经考验,尤其是在处理大数据量的关键业务时。

Oracle 能在所有主流平台上运行(包括Windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持。

DB2 能在所有主流平台上运行(包括Windows)。最适于海量数据。DB2在企业级的应用最为广泛,在全球的500家最大的企业中,几乎85%以上用DB2数据库服务器,而国内到97年约占5%.

可伸缩性、并行性

SQL server并行实施和共存模型并不成熟,很难处理日益增多的用户数和数据卷,伸缩性有限。 Oracle 平行服务器通过使一组结点共享同一簇中的工作来扩展WindowsNT的能力,提供高可用性和高伸缩性的簇的解决方案。如果WindowsNT不能满足需要, 用户可以把数据库移到UNIX中。

DB2具有很好的并行性。DB2把数据库管理扩充到了并行的、多节点的环境。数据库分区是数据库的一部分,包含自己的数据、索引、配置文件、和事务日志。数据库分区有时被称为节点或数据库节点。

安全性

SQL server 没有获得任何安全证书。

Oracle Server 获得最高认证级别的ISO标准认证。 DB2 获得最高认证级别的ISO标准认证。 性能

SQL Server 多用户时性能不佳

Oracle 性能最高,保持WindowsNT下的TPC-D和TPC-C的世界记录。 DB2 适用于数据仓库和在线事物处理,性能较高。 客户端支持及应用模式

SQL Server C/S结构,只支持Windows客户,可以用ADO,DAO,OLEDB ,ODBC连接. Oracle 多层次网络计算,支持多种工业标准,可以用ODBC, JDBC,OCI等网络客户连接 DB2 跨平台,多层结构,支持ODBC,JDBC等客户

操作简便

SQL Server 操作简单,但只有图形界面

Oracle 较复杂,同时提供GUI和命令行,在WindowsNT和UNIX下操作相同 DB2 操作简单,同时提供GUI和命令行,在WindowsNT和UNIX下操作相同 使用风险

SQL server 完全重写的代码,经历了长期的测试,不断延迟,许多功能需要时间来证明。并不十分兼容早期产品。使用需要冒一定风险。

Oracle 长时间的开发经验,完全向下兼容。得到广泛的应用。完全没有风险。 DB2 在巨型企业得到广泛的应用,向下兼容性好,风险小。仅供参考。

1.2. 区别和联系

对于Oracle 8i初学者,很有可能会经常把MS SQL Server中的概念拿来与Oracle对照,这种对照,从我个人认为觉得不需要做过多的这种比较,一个如果从来没有学过其他数据库管理的人,可能更容易学习Oracle.现在我来说一下两者的区别和联系。

1.2.1. 关于数据库的概念

我怎么找到或者创建自己的数据库?

Oracle的数据库的概念已经完全不同于MS SQL,Oracle的服务和数据库相当于MS SQL的数据库服务: Oracle的服务=后台进程+相关内存 数据库=数据文件的集合

而且Oracle的服务是完全可以与数据文件脱离开来的。 那么MS SQL的数据库,在Oracle哪儿能找到呢?

Oracle的Schema,Schema的中文意思:方案——意思是一个用户所拥有所有对象的集合。这里的对象包括表、视图、实例化视图、序列、过程、函数、程序包、同义词(下面我会详细解释这其中的一些陌生的概念),所以我们要建立一个在Oracle中的类似于MS SQL的数据库的大致过程:

建立数据表空间(相当于MS SQL的数据库的数据文件) 建立临时表空间(相当于MS SQL的数据库的事务日志文件) 建立用户,他的缺省表空间和临时表空间是刚建立的两个表空间 给用户授权,最起码的角色权限是Connect 的角色

以该用户登录,创建自己的表、视图、实例化视图、序列、过程、函数、程序包、同义词等

1.2.2. 关于Oracle Manager Server与MS SQL的Enetrprise manager

应该说这两者有很大的差别,DBA Studio工具提供了与MS SQL的Enetrprise manager同样的功用,DBA Studio工具对一般使用来说已经足够了。但这里有必要对Oracle Manager Server解释一下:

它是Oracle 管理分布式数据库的服务,注意他是服务

它缺省并不安装

它需要有自己管理所需要的资料库,在某个数据库中需要建立相应的用户

它的等录需要身份验证,注意这里的身份验证,与管理所需要的资料库的用户是不是一个概念,也不是数据库中的Sys、system用户,它的缺省用户是oemtemp,使用它,在管理端要启动Manager Server服务和智能代理服务(OracleAgent),被管理的数据库服务器要启动智能代理服务(OracleAgent)。 1.2.3. 关于Oracle 的Sys、System的用户与MS SQL的master的比较

MS SQL的master数据库存储了当前数据库服务的一些配置信息,如数据库设备(在MS SQL已经弱化)、字符集、数据文件、登录帐号、拥有的数据库、整个服务参数配制等信息。

Oracle的Sys存储Oracle服务或者实例的信息及所有用户的数据字典信息,这一点不同于MS SQL,MS SQL每一个数据库拥有自己的对象的数据字典信息。

System用户拥有数据字典是视图信息,有了这些视图,我们的查询数据库的信息就特别方便。 缺省情况下,system用户拥有DBA系统角色权限,而sys不仅拥有DBA 的权限,还拥有SysDBA的权限。DBA与SysDBA这两个系统角色有什么区别呢?在说明这一点之前,我需要说一下Oracle服务的创建过程:

创建实例 启动实例

创建数据库(system表空间是必须的) 启动过程 实例启动 装载数据库 打开数据库

SysDBA,是管理Oracle实例的,它的存在不依赖于整个数据库完全启动,只要实例启动了,他就已经存在,以SysDBA身份登录,装载数据库、打开数据库。只有数据库打开了,或者说整个数据库完全启动后,DBA角色才有了存在的基础!

1.2.4. Oracle中新的数据库对象:实例化视图、快照、序列、程序包、同义词、抽象的数据类型

实例化视图又称显形图:实例化说明他有自己的存储空间;视图:说明他的数据来源于其他表数据。实例化视图中的数据,设置为隔一段时间更新数据,更新的模式可以定义为完全更新和增量更新。

快照基本上同实例化视图,只不过数据来源不同,快照数据来愿于远程数据库,而实例化视图则来源于本地数据表序列,相当于MS SQL中的identity列,他是一个数字顺序列表。

程序包:他是过程、函数、全局变量的集合,他封装了私有变量、私有过程和私有函数, 如:dbms_out包

同义词:是对数据库中的对象的别名,同义词可以是全局的也可以是私有的(属于某个用户的),

如:Tab,col等

抽象的数据类型,类似于C中的结构体或Pascal记录类型。关于类型,这里还有一个题外话: a)Tab%RowType:这是一个特别的抽象的数据类型,该类型的分量就是TAB的字段; b)Tab.TName%Type:这定义了一个和tab的字段TNAME相同的数据类型的变量。 想想他有什么好处。

1.2.5. Oracle数据库连接和MS SQL远程连接

两者都是为了实现分布式数据库的操作。

两者都能实现分布式事务,参见MS SQL的联机帮助 1.2.6. Oracle回滚段和MS SQL的数据库事务日志文件

回滚段提供了事物回滚需要使用的数据变化以前的映象。这些映象是按条目存储的,如果这些条目过少,一个事务等待另一个事务的几率增大,就会影响数据库的性能。缺省安装时,提供一个系统回滚段他在System表空间。为了提高性能system 表空间,不应存储有任何数据字典信息以外的信息。

MS SQL数据库事务日志文件功能雷同于回滚段,只不过他是同特定的数据库密切相关的。 1.2.7. 关于数据表的管理

超大型数据表的管理

一个数据表,尤其是那种流水帐表,长年累月后急剧膨胀,最后影响查询性能,怎么办?Oracle和MS SQL都提供了一种方法,把数据文件及其索引存放在一个特定的 数据文件或表空间里,但这个还是不能解决问题,怎么办?开发人员只能给表添加时间的标志:如CWSJ2000(财务数据2000),CWSJ2001,CWSJ2002,这种命名方式, 确实能提高查询性能,但是给开发带来了不少的麻烦(浪潮财务就是这样做的), 而且当你不知道数据在哪个表中的时候,你要联合这么表进行查询,岂不长哉!

Oracle提供了很好的手段解决了这个问题:表及索引分区存储。按字段值的范围进行分区存储。具体做法不在说明。

Oracle索引组织表和MS SQL簇索引表

两者的数据存放顺序都是按照索引值的顺序存放的。 无事务回滚概念的表

对这种表的操作不存在事务的概念。记得以前MySQL是不提供事务的回滚(不知现在有否变化),而Oracle提供了建表参数nologging,使对该表的操作不参与事物的回滚。

索引

Oracle提供了多种MS SQL没有的索引类型——位图索引,比方说性别,仅有男女: 第1条记录:男 第2条记录:男 第3条记录:女