SQLSERVER不能,ORACLE能

为了活跃气氛,让我们向SQLSERVER版'挑战'吧!

请大家举出10个SQLSERVER不能,ORACLE能做的事.

我先抛砖引玉:

1. 开发性: SQLSERVER不能,ORACLE能装在UNIX上
2. 分区表: SQLSERVER不能,ORACLE能根据INDEX的值的范围,把数据存放到
不同的硬盘空间.
3. AUTONOMOUS_TRANSACTION;SQLSERVER不能,ORACLE能在主TRANSACTION中独立
COMMIT或ROLLBACK子TRANSACTION而不影响主TRANSACTION.

请继续,高分伺候
---------------------------------------------------------------

4.Oracle可以利用回滚表空间查询以前(如1小时前)的信息,SQLServer不能
5.Oracle可以进行用户资源管理(CPU使用率等),SQLServer不能
6.Oracle支持Label Security,SQLServer不能

---------------------------------------------------------------

支持一下,来帖一段

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

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

可伸缩性,并行性
SQL server
DB2
并行实施和共存模型并不成熟。很难处理日益增多的用户数和数据卷。伸缩性有限。

Oracle
平行服务器通过使一组结点共享同一簇中的工作来扩展windownt的能力,提供高可用性和高伸缩性的簇的解决方案。
如果windowsNT不能满足需要, 用户可以把数据库移到UNIX中。

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

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

性能
SQL Server
多用户时性能不佳

Oracle
性能最高, 保持windowsNT下的TPC-D和TPC-C的世界记录。

客户端支持及应用模式
SQL Server
C/S结构,只支持windows客户,可以用ADO,DAO,OLEDB,ODBC连接.

Oracle
多层次网络计算,支持多种工业标准,可以用ODBC,JDBC,OCI等网络客户连接

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

Oracle
较复杂, 同时提供GUI和命令行,在windowsNT和unix下操作相同

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

Oracle
长时间的开发经验,完全向下兼容。得到广泛的应用。完全没有风险。

---------------------------------------------------------------

Oracle可以建立位图索引,SQLServer不能。
Oracle可以建立函数索引,SQLServer不能。
SQLServer不支持前触发器,所有都是后触发器。

关于Oracle分区表,SQLServer 2000可以使用分区视图,原理也是一样,把不同物理空间的表联系在一起。
SQLServer能支持嵌套事务,事务上加上名字就好,就是说能在主事务中操作子事务。
---------------------------------------------------------------

oracle:
length() lengthb()
sqlserver:
datalength()
---------------------------------------------------------------

不了解sql server
---------------------------------------------------------------

似乎SQLServer只是表级触发器,不支持行级触发器
---------------------------------------------------------------

SQL好象也有命令行的。SQL也支持JDBC的。

ORACLE备份方式比较多,有STANDBY、RMAN、IMP等,SQL就比较简单了。
ORACLE可是实现多个日志文件的镜象,而SQL只有一个日志文件。
ORACLE有很少但很多数量的归档日志,而SQL只有一个日志文件,经常会增加到很大。
ORACLE的BLOCK SIZE可以根据OLTP或者DSS不同的应用自己设置,而SQL只能为8K。
ORACLE的内存是在数据库启动时就由参数文件决定了的,而SQL可以根据应用自动改变。

---------------------------------------------------------------

ORACLE有专门实现树形查询的语法,而SQL没有。
---------------------------------------------------------------

ORACLE可以修改字符集
SQLSERVER不能,必須重新安裝

---------------------------------------------------------------

ORACLE可以安裝各种平台
SQLSERVER不行

---------------------------------------------------------------

ORACLE可以卖的很贵却还有人买
SQLSERVER不行

---------------------------------------------------------------

也不太了解sqlserver。
它有Orcle中的分析函数和锁吗?

---------------------------------------------------------------

TO:ccbzzp(ccbzzp)
ORACLE可以修改字符集
SQLSERVER不能,必須重新安裝

有问题,在SQL SERVER6.5是不可以的,在SQLSERVER2000已经完全可以
EXAMPLE:ALTER DATABSE DB_NAME COLLATE CHINESE_PRC_CI_AS
---------------------------------------------------------------

TO:OldMan0516(凡人0516)
MSSQL SERVER2000是完全可以行触发的!!!

如果大家有和问题可以到SQLSERVER板块去看看:-)
---------------------------------------------------------------

跟本不是一个量级上的东西,没什么可比性。
sql server也没说要和oracle比呀,人家在windowns平台自我完善呢。
---------------------------------------------------------------

http://expert.csdn.net/Expert/topic/1810/1810360.xml?temp=.4442407
---------------------------------------------------------------

ORACLE可以修改字符集
SQLSERVER不能,必須重新安裝更改排序规则。

-------------------------------------
alter database 数据库 collate 排序规格

其中,某些排序规则指定CI 不区分大小写,CS 指定区分大小写。

如:alter database 数据库 COLLATE Chinese_PRC_CI_AS
不区分大小写,而
alter database 数据库 COLLATE Chinese_PRC_CS_AS
使之区分大小写。

使用如下命令,可以获得更多的规则:
SELECT *
FROM ::fn_helpcollations()

---------------------------------------------------------------

oracle可以有java过程sqlserver没有,而sqlserver可以用dll。
oracle9i有分析函数,sqlserver没有
oracle有rownum等伪列,sqlserver没有
sqlserver有full join,oracle9i才有

---------------------------------------------------------------

to DJMPH(冷开水)
不是吧,你不会sql?哈。自己去看触发器吧
---------------------------------------------------------------

up
---------------------------------------------------------------

to bzszp(SongZip):
你关于SQL Server的认识已经很outdata了,哈哈,看看这吧,关于c2,SQL Server早就拿到了.http://www.microsoft.com/china/sql/evaluation/overview/2000/fastfacts.asp
虽然在大系统上还是喜欢用Oracle,毕竟用多了,习惯了,不过只会Oracle的也别小看SQL Server,SQL Server亦非昔日阿蒙,很多Oracel能做的,SQL Server也能了,有些甚至做得更好,像Oracle的数据库碎片,实在是讨厌,不知道9i是不是好些了,反正9i以前的版本实在是臭不可闻,这方面SQL Server就感觉好多了。
to black_snail(●龙飞虎○) ,关于嵌套事务:

begin tran t1
insert into table1(f1) values(10)
save tran mark1
update table1 set f1=100000 where f1=10
rollback tran mark1
insert into table1(f1) values(100)
update table1 set f1=100000 where f1=100
commit tran t1

---------------------------------------------------------------

update table1 set f1=100000 where f1=10被rollback :-)凑热闹
---------------------------------------------------------------

暂时来说,不是一个级别的东西。毕竟对于Oracle,数据库命根子。
中期来说,不管性能,单单依照M$的小气,不大可能支持别的平台。所以,是并存。
长期来说,那就要看小丽(Linux)了,如果能够在桌面上断了M$的财路。本来就是半桶水的SQL server就会和它的老祖宗Sybase一样,在数据库领域,逐渐退出我们的视野了。
---------------------------------------------------------------

楼上的,你看到MS最新的WINDOWS SERVER 2003 FOR 64BIT,在加上SQL SERVER2003 FOR 64BIT速度已经完全超过小型机+ORACLE的速度,成本还要低很多.

我最讨厌某些人似乎会ORACLE就是高级,懂MS就是低端的态度!!!

至于小丽(Linux)要断MS的财路,我看你又在做梦了.....zzzzzz
在桌面系统MS的地位很难动摇.
---------------------------------------------------------------

to: bzszp(SongZip)
性能
SQL Server
多用户时性能不佳
--这应该和数据库的设计又很大的关系,不知你的比较的标准是什么?

Oracle
性能最高, 保持windowsNT下的TPC-D和TPC-C的世界记录。
--现在好向不是这样的,你可以到TPC的网站上去看看.
---------------------------------------------------------------

客户端支持及应用模式
SQL Server
C/S结构,只支持windows客户,可以用ADO,DAO,OLEDB,ODBC连接.
--有免费的FOR LINUX的client

Oracle
多层次网络计算,支持多种工业标准,可以用ODBC,JDBC,OCI等网络客户连接

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

Oracle
较复杂, 同时提供GUI和命令行,在windowsNT和unix下操作相同

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

Oracle
长时间的开发经验,完全向下兼容。得到广泛的应用。完全没有风险
--------------------------------------------------------------
ORACLE可以修改字符集
SQLSERVER不能,必須重新安裝更改排序规则。

-------------------------------------
alter database 数据库 collate 排序规格

其中,某些排序规则指定CI 不区分大小写,CS 指定区分大小写。

如:alter database 数据库 COLLATE Chinese_PRC_CI_AS
不区分大小写,而
alter database 数据库 COLLATE Chinese_PRC_CS_AS
使之区分大小写。

使用如下命令,可以获得更多的规则:
SELECT *
FROM ::fn_helpcollations()
------------------------------------------------------
但是SQL server从来就没有行触发的概念,因为sybase已经定好了。它必须通过inserted和deleted表来获得。显然,如果你要编写一个考虑周全的触发器,就要注意有。但是sql server绝对没有系统触发器的概念。
------------------------------------------------------

1 ORACLE在配置上支持MTS的结构,就是可以有数据库连接池的概念。而sql server就没有。
2 ORACLE的网络配置,用同一个LISTENER来集中管理连接的请求,还可以做到多个LISTENER的FAILOVER配置。
3 ORACLE中有同义词的概念,我觉得非常方便,而sql server怎么办呢,sql server逻辑上是iinstance/database/table的概念。如果,我只能用[database].[user].[table]来访问表。
4 oracle可以对实例运行的不同配置,修改内存的分配策略。sql server的设置项简单地就不用设了(没什么好设的)。
5 oracle可以支持每个表的存储参数,让你调整每个表的存储空间的增长。sql server没有,也许microsoft认为没有必要。
------------------------------------------------------

你用Weblogic+Oracle看看,不知道要比iis+asp+sqlserver的系统稳定多少倍,面向internet的应用,关键是可用性,稳定性。对于大并发量的访问,iis的体系根本就不行。
还有iis的话,用oracle的ole object for visual basic,可以比ado快,应为直接同sqlnet通讯,用oledb provider的多了一层(ado->data provider->sqlnet),你说能不慢么。
------------------------------------------------------

再说说SQL Server有的,oracle没有的
1 SQL Server有Link Server的概念,而且可以是异种库,oracle尽管有database link的概念,但是必须是oracle,这一点还是Microsoft考虑的周全。
2 SQL Server的DTS包在实际应用中,相当的有用;oracle没有。
3 SQL Server 2000用索引视图来对抗oracle的partition的概念,还算过的过去。
4 SQL Server到了2000才支持多实例,算是可以和oracle在的多实例一样吧。
5 SQL Server有扩展存储过程可以调用AcitveX空件,Oracle 8i开始可以调用Java类,大家算打个平手吧。
6 SQL Server的日志文件并不重要,因为只要mdf在,只要sp_attach_single_file_db,可以重建日志文件,oracle要是丢了online redolog,那可就麻烦了,慢慢地恢复吧。
7 SQL Server可以支持级联的触发器(最多32级),而且可以修改触发的自身表,oracle就瞪着报错吧。
8 在oracle中可以写1局非常复杂SQL语句(符合标准SQL),在SQL Server中,会报"结构过于复杂",Microsoft还真能找个台阶下。看来SQL Server的SQL Parser器还要好好整修一下。

就我个人的经验,自从好好地把oracle的一套student book看了一遍(为了考ocp),就是觉得SQL Server比起oracle,从体系上就差了一大截。可能Sybase当时就是为了减化oracle复杂性,能够更好地取悦最终用户才出了SQL server,microsoft当然也不会去改变这一点,只是在面向最终用户的管理方面下了大功夫。
反正,对于最终用户来说,越是能够方便的产品,越是能吸引自己。

再说说,SQL Server的价格和Oracle的价格。
1 SQL Server是便宜,因为它更本不值那么高的价格。
2 SQL Server的许可是按服务许可+客户端许可和cpu许可两种的概念来算,你的客户端数目上去了,对不起,掏钱。当你觉得不合算,怎么办,改成cpu(Unlimited)吧,Microsoft会退钱么?而且,别忘了,SQL server是装在NT/2000 Server上的,你SQL Server按CPU买,你的Win2K得按Unlimited买,你就傻眼吧。
3 Oracle的计算很简单,把你的服务器CPU(Interl芯片还是RISC芯片)赫兹数和个数报出来,套个公式一算,就可以知道要买多少个license数。而且,你可以和oracle谈价钱的,以前我参与的一个项目,就最终和oracle谈好了买500个并发license数。就好了。Microsoft会和你谈么。别天真地认为Microsoft便宜,因为中国很多的企业都是在盗版(或者偷用License),还有,就Microsoft查的最厉害,给他差到,飞让你给个几十万才了,那是你就傻眼吧。
4 Oracle 有Linux的,找个公司会做维护的谈个价铬,不知道比SQL server便宜多少。Microsoft有么,它最反对Open Source。

如果大家做过方案规划,才知道其中的猫腻,别以为Microsoft的便宜,如果你的应用大的话,价格最低oracle的2/3,而且还得考虑以后再付钱。如果你的应用小,为什么不用Interbase(比SQL Server不知道要便宜多少)呢。
------------------------------------------------------
SQL Server的确不能很好地解决这个问题。
如果采用嵌套事务的做法,主事务的commit和rollback都会自动将所有子事务进行commit和rollback,而采用存储点,只能rollback到一个存储点,不能commit到一个存储点。的确,不好办。

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus