Oracle数据库和Sql server数据库各有什么优缺点

 我来答
光曦蓬采枫
2020-04-17 · TA获得超过3888个赞
知道大有可为答主
回答量:3111
采纳率:27%
帮助的人:156万
展开全部
1. Oracle跨平台,SQL
Server只能运行在Windows上,而Windows能够安装的硬件是有限的,如Sun的Sparc服务器不能安装Windows,一些大型机、小型机也只能装UNIX,在这些高端机器上就只能跑Oracle了,这注定了Oracle就是高端数据库,而SQL
Server呢,中低端。
2. Oracle真正实现了行级锁,SQL
Server也宣称实现了行级锁,但你实际去试,如果不加索引,其实是不行的。
3. Oracle因为有多版本数据的技术,读写操作不会相互等待,虽然SQL
Server
2005学习Oracle增加了snapshot机制,从而也引进了多版本数据(MySQL也有多版本数据机制,不能说一定是学习Oracle),但是实际效果感觉就是2个版本的数据,隔离级别为read
committed时候,读写不再相互等待,但是把隔离设置为Serializable还是会产生读写相互等待。
4. Oracle的事务日志归档相当方便,而SQL
Server要用事务日志备份来实现,而且还要配置自动作业,启动agent服务。
5. Oracle的数据字典丰富,使得DBA容易判断数据库的各种情况,虽然SQL
Server
2005学习了Oracle的数据字典的特点,但从数量及方便程度上还是相差太多。个人感觉这是Oracle最人性化的地方。
6. Oracle的PL/SQL比SQL
Server的T-SQL功能强大很多。
7. Oracle的触发器比SQL
Server的种类多几种。
8. oracle的备份恢复原理相当简单明了,备份就在操作系统上拷贝数据文件好了,恢复呢,再拷贝回来,数据是旧的,不怕,应用重做日志好了。SQL Server呢,虽然原理在本质上还是这些,但操作起来麻烦多了,麻烦到让你体会不到其本质。
9. Oracle数据库启动可以有多个阶段,使得DBA可以在不同的情况下,通过启动到特定的阶段解决一些特殊问题,而SQL Server只要服务一启动,所有数据库就都打开了。
10. SQL Server给人的感觉是简单易用,但是我要说,如果你继续向前走,就会发现SQL Server的体系结构相当复杂(注意我这里是说的复杂),大体还是沿袭的Sybase的体系结构,这种复杂结构,估计很难有根本性的改变,而Oracle呢,时间越长你越会觉得其体系结构严谨,虽然开始会感觉很难。我的一个比喻,SQL Server是傻瓜相机(就是那些一两千的小数码),Oracle是单反相机(40D,5D,D300),如果你是入门者,那用傻瓜相机好了,在各种环境下拍摄,基本都过得去,用单反,光圈、快门都要自己设定,反倒不如傻瓜相机的效果,如果你是高手了,那傻瓜相机就很难得心应手了。
11. Oracle的书籍一般都比较深,随便一说就是一大批,Epert Oracle、Practical Oracle 8i、Cost-based Oracle,SQL Server呢,恐怕只有那套Inside SQL Server了,虽然SQL Server的书籍数量比Oracle的多的多(特别是在国内),但多数都是step by step的入门书。
12. 对比SQL*Plus与sqlcmd(或2000的osql,6.5的isql),sqlcmd的功能是太简陋,差得太多了。
13. SQLServer的最大优点就是和Windows结合紧密,易用,但是要注意事情都是两面的,这些优点可能导致其致命的缺点,例如易用,使得搞SQL Server的人可以不求甚解,有时候不求甚解是没问题的,但是有时候不求甚解可能会造成灾难,特别是对搞数据库的人来说。不好意思,本来要说SQL Server的优点呢,最后也成了缺点了。
尾秋芹伟琬
2019-08-15 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.3万
采纳率:35%
帮助的人:816万
展开全部
2.
Oracle真正实现了行级锁,SQLServer也宣称实现了行级锁,但你实际去试,如果不加索引,其实是不行的。
3.
Oracle因为有多版本数据的技术,读写操作不会相互等待,虽然SQLServer
2005学习Oracle增加了snapshot机制,从而也引进了多版本数据(MySQL也有多版本数据机制,不能说一定是学习Oracle),但是实际效果感觉就是2个版本的数据,隔离级别为read
committed时候,读写不再相互等待,但是把隔离设置为Serializable还是会产生读写相互等待。
4.
Oracle的事务日志归档相当方便,而SQLServer要用事务日志备份来实现,而且还要配置自动作业,启动agent服务。
5.
Oracle的数据字典丰富,使得DBA容易判断数据库的各种情况,虽然SQLServer
2005学习了Oracle的数据字典的特点,但从数量及方便程度上还是相差太多。个人感觉这是Oracle最人性化的地方。
6.
Oracle的PL/SQL比SQLServer的T-SQL功能强大很多。
7.
Oracle的触发器比SQLServer的种类多几种。
8.
oracle的备份恢复原理相当简单明了,备份就在操作系统上拷贝数据文件好了,恢复呢,再拷贝回来,数据是旧的,不怕,应用重做日志好了。SQLServer呢,虽然原理在本质上还是这些,但操作起来麻烦多了,麻烦到让你体会不到其本质。
9.
Oracle数据库启动可以有多个阶段,使得DBA可以在不同的情况下,通过启动到特定的阶段解决一些特殊问题,而SQLServer只要服务一启动,所有数据库就都打开了。
10.SQLServer给人的感觉是简单易用,但是我要说,如果你继续向前走,就会发现SQLServer的体系结构相当复杂(注意我这里是说的复杂),大体还是沿袭的Sybase的体系结构,这种复杂结构,估计很难有根本性的改变,而Oracle呢,时间越长你越会觉得其体系结构严谨,虽然开始会感觉很难。我的一个比喻,SQLServer是傻瓜相机(就是那些一两千的小数码),Oracle是单反相机(40D,5D,D300),如果你是入门者,那用傻瓜相机好了,在各种环境下拍摄,基本都过得去,用单反,光圈、快门都要自己设定,反倒不如傻瓜相机的效果,如果你是高手了,那傻瓜相机就很难得心应手了。
11.Oracle的书籍一般都比较深,随便一说就是一大批,EpertOracle、PracticalOracle8i、Cost-basedOracle,SQLServer呢,恐怕只有那套InsideSQLServer了,虽然SQLServer的书籍数量比Oracle的多的多(特别是在国内),但多数都是stepbystep的入门书。
12.
对比SQL*Plus与sqlcmd(或2000的osql,6.5的isql),sqlcmd的功能是太简陋,差得太多了。
13.
SQLServer的最大优点就是和Windows结合紧密,易用,但是要注意事情都是两面的,这些优点可能导致其致命的缺点,例如易用,使得搞SQLServer的人可以不求甚解,有时候不求甚解是没问题的,但是有时候不求甚解可能会造成灾难,特别是对搞数据库的人来说。不好意思,本来要说SQLServer的优点呢,最后也成了缺点了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
戢青芬百凰
2020-01-30 · TA获得超过3.8万个赞
知道大有可为答主
回答量:1.3万
采纳率:26%
帮助的人:983万
展开全部
1.oracle为客户端开启会话有两种方式:共享服务和专用服务。在专用服务情况下,监听器为连接请求创建新进程(unix环境下是process,windows下我想应该是thread吧);共享服务情况下,监听器将客户请求交给dispatcher,由dispatcher安排多客户的作业。sql
server在默认情况下自动为客户端连接创建线程,当有非常多的客户连接时,sql
server可以使用线程池管理多会话,这类似于oracle的共享服务。
  2.oracle的内存管理分三块:sga、pga、uga;在msdn中并没有提及怎样控制sql
server的内存分配,只是提到sql
server的虚拟地址空间分成缓冲池占用空间和其余空间,且sql
server有动态内存管理机制。
  3.
oracle的实例一次只能管理一个数据库,数据库在集群环境下可由多个实例管理。而sql
server单个实例一次能管理多个数据库。oracle数据库存储方式有os文件、裸分区、asm等,sql
server的数据库存储只能是系统文件。
  4.
oracle数据库包含表空间,表空间可以使用多个文件存储数据,表空间就类似于sql
server中的文件组。区是物理连续上连接的存储空间,区中包括最小i/o单位——块(oracle)或页(sql
server)。但sql
server页大小是8kb,区包含8个页;oracle不同表空间可以有不同的块大小,区的大小和保护块的数量也不固定。sql
server的页由一个数据库对象独占,物理储存的数据库对象只有索引和表两种;而oracle中的段由数据库对象定义,且其存储的对象复杂得多,有表段、索引段、回滚段、临时段等等,所以在一个聚簇段中的块可能被多个表使用。
  5.
oracle使用freelist管理可以块,通过设置pctfree和pctused控制快在何种条件下可用;sql
server使用gam、sgan记录可用页,使用pfs跟踪页的使用状况。
  6.
sql
server的表有两种方式组织数据的物理存储,一种是无序的堆组织,这oracle是类似的;另一种是由聚簇索引决定数据排序方式,oracle也可有索引组织方式,但不同于sql
server,它依键排序数据,不增加一个索引用于聚簇,不会有额外的开销。此外,oracle的聚簇表是多表存储在相同段上,像sql
server的混合区可以包含不同表的页,但oracle的聚簇表是一组含有相同列的表可以储存在相同的块中,聚簇表的可以有索引或hash方式组织数据
  7.
oracle创建表分区会创建不同的段,sql
server
2005通过分区方案将不同分区存储到不同的文件组。oracle有三种分区方法,sql
server使用分区函数。oracle
11g中还将加入时段分区、系统分区等。
  8.
sql
server的索引只有b-树,oracle有b-树、位图、函数、位图连接和可扩展索引。
  9.
oracle的重做日志与sql
server的事务日志都使用循环写入策略,oracle使用多个重做日志文件,sql
server也可使用多个日志文件,但将日志文件分成多个虚拟日志,以虚拟日志为单位进行循环。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式