oracle是rdbms,sql是数据库语言。它们不可以放在一起比较。
oracle的sql是PL/SQL,它支持ansi和iso92标准的产品。
pl/sql是对sql语言存储过程的扩展。

解决方案 »

  1.   

    为了活跃气氛,让我们向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  
      

  2.   

    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  1  
    update  table1  set  f1=100000  where  f1=10  
    rollback  tran  1  
    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快,应为直接同sql*net通讯,用oledb  provider的多了一层(ado->data  provider->sql*net),你说能不慢么。  
    ------------------------------------------------------  
     
    再说说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到一个存储点。的确,不好办。  
      

  3.   

    语法上是有区别,但十分相以,sql server有的功能,oracle基本上有,反之,oracle是没有的
      

  4.   

    是不是ORACLE比SQL强在数据库方面的应用
    GUI是什么意思?