oracle与sqlserver区别

 我来答
华源网络
2022-11-13 · TA获得超过5595个赞
知道小有建树答主
回答量:2486
采纳率:100%
帮助的人:147万
展开全部

  体系结构

  ORACLE的文件体系结构为

  数据文件 DBF (真实数据)

  日志文件 RDO

  控制文件 CTL

  参数文件 ORA

  SQL SERVER的文件体系结构为

   MDF (数据字典)

   NDF (数据文件)

   LDF (日志文件)

  ORACLE存储结构

  在ORACLE里有两个块参数PCTFREE(填充因子)和PCTUSED(复用因子) 可控制块确定块本身何时有 何时没有足够的空间接受新信息(对块的存储情况的分析机制)

  这样可降低数据行连接与行迁移的可能性 块的大小可设置(OLTP块和DSS块)

  在ORACLE中 将连续的块组成区 可动态分配区(区的分配可以是等额的也可以是自增长的)可减少空间分配次数

  在ORACLEl里表可以分为多个段 段由多个区组成 每个段可指定分配在哪个表空间里(段的类型分为 数据段 索引段 回滚段 临时段 CASH段 ORACLE里还可对表进行分区 可按照用户定义的业务规则 条件或规范 物理的分开磁盘上的数据

  这样大大降低了磁盘争用的可能性

  ORACLE有七个基本表空间

  ·SYSTEM表空间(存放数据字典和数据管理自身所需的信息)

  ·RBS回滚表空间

  ·TEMP临时表空间

  ·TOOLS交互式表空间

  ·USERS用户默认表空间

  ·INDX索引表空间

  ·DBSYS福数据表空间

  不同的数据分别放在不同的表空间(数据字典与真实数据分开存放) 在ORACLE里基表(存储系统参数信息)是加密存储 任何人都无法访问 只能通过用户可视视图查看

  SQL SERVER 存储结构

  以页为最小分配单位 每个页为 K(不可控制 缺乏对页的存储情况的分析机制)

  可将 个连续的页的组成一个 扩展 以进一步减少分配时所耗用的资源 (分配缺乏灵活性) 在SQL SERVER里数据以表的方式存放 而表是存放在数据库里

  SQL SERVER有五个基本数据库

  ·master(数据字典)

  ·mode(存放样版)

  ·tempdb(临时数据库)

  ·msdb(存放调度信息和日志信息)

  ·pubs(示例数据库)

  真实数据与数据字典存放在一起 对系统参数信息无安全机制

  ORACLE登入管理

  ·SYSTEM/MANAGER (初始帐户)

  ·SYS/CHANGE_ON_NSTALL

  ·INSTALL/ORACLE(安装帐户)

  ·SCOTT/TIGER(示例数据库 测试用)

  在ORACLE里默认只有三个系统用户 ORACLE是通过用户登入

  SQL SERVER登入管理

  ·SQL SERVER身份验证

  ·WINDOWS 身份验证

  在SQL SERVER里是通过WINDOWS用户帐户或是用SQL SERVER身份验证连接数据库的

  SQL不是一种语言 而是对ORACLE数据库传输指令的一种方式

  SQL中NULL既不是字符也不是数字 它是缺省数据 ORACLE提供了NVL函数来解决

  ORACLE中的字符串连接为 string ‖string SQL中为string +string

  集合操作 在SQL中只有UNION(并操作) ORACLE中包含MINUS(差操作)

  INTERECT(交操作) UNION(并操作)

  索引 SQL的索引分为聚集索引和非聚集索引 还包括全文索引

  ORACLE的索引包括 B+树索引 Bitmap位图索引 函数索引 反序索引

  主键索引 散列索引 本地索引

  ORACLE的数据类型比较复杂 有基本数据类型 衍生型 列对象型 表对象型 结构体型 SQL中的数据比较简单 只有一些简单的基本数据类型无法提供事务操作

  在SQL中如果一个事务从开始执行到结束时了错了 它就会回滚到开始之前

  在ORACLE中它采用的是定点回滚 就是该事务函数化和精确错误定位 用savepoint标记保存点 用Rollback标记回滚错误的保存点

  在SQL中循环只有WHILE一种这用起来不灵活 在ORACLE中有多种循环(LOOP循环 WHILE循环 FOR循环)

  在SQL中游标的使用比较复杂 不能同时打开一个以上的游标 因为它只有一个全局变量@@Fast_statues而且声明游标也麻烦 关闭游标时也不清除内存的 ORACLE中游标是以提高速度全部统一的单项游标 可以允许多用户异步读取 而且声明比较简单 就一句declare cursor游标名 is select 语句就可以了

  容错机制 SQL中的错误机制比较复杂 没有提供错误描述 ORACLE中容错类型有三种 一个是预定义错误 一个是非预定义错误 一个是用户自定义 其中在自定义错误中它有两个是在SQL中不有的 那就是SQLCODE 错误号 SQLERRM错误描述

  文件体系结构 SQL中有 MDF(主要数据文件) NDF(扩展文件 可以有多个)

   LDF(日志文件 可以有多个 存放在联机重做日志数据 这里的日志文件有一个缺点就是如果日志文件已填小巧玲珑的话 SQL将自动停止运行并等待人工干预 所以要经常监控日志的情况保证系统的稳定运行) ORACLE中有 DBF(主要数据文件) RDO(日志文件 用来做灾难性的数据备份) CTL(控制文件 将数据库的物理文件映射到了数据字典中的逻辑表空间和连机重做日志文件上去 确保数据的一致性) ORA(参数文件)

   SQL只能是本机备份本机的数据库 无法联机备份 而且备份压缩很低 占用了大量空间 ORACLE提供了 种备份机制 具有联机备份功能 有志门的备份机子

  Oracle的日志默认有 个 先写入 号日志 满了后再写入 号日志 号满了再写入 号日志 号满了后Oracle将自动备分 号日志的内容 然后清空后写入新的日志信息 且Oracle的日志有多路复用功能 我们可以为日志创建多个镜像 把相同的日志信息同时写入多个日志文件中 这样可以防止磁盘损坏造成的数据丢失

  SQL Server对每个数据库只能分配一个日志文件 且当日志填满后 日志将停止工作 等待人工干预 而无法自动重用

  Oracle的控制文件记录了数据库文件的物理位置和有效性 在每次打开Oracle系统都将自动对数据进行验证 查看其有效性 防止数据的丢失 这体现了Oracle对数据管理的严密性

  SQL Server无此安全机制 只用在使用到了数据库的信息后 系统才去查找数据是否存在

  Oracle的参数文件init ora是可调的 既我们可以根据数据库的规模调整Oracle对系统资源的使用情况 以达到最合理的资源分配 让Oracle达到最佳的性能

  SQL Server的配置参数是内定的不可调整 它对系统资源的分配是固定的 不受拥护控制 因此无法同时处理大量用户的需求 这限制了它只能作为中 小型数据库

  Oracle以块为最小存储单位 以区为单位分配空间 用户可以根据需要自己定义块的大小 且区可以按等额或递增进行分配 这可以大大减少系统的I/O操作提高数据库的性能

  SQL Server中以页为单位或使用扩展类型以 页为一单位进行空间分配而无法人工干预 当遇到频繁存储或大数据量存储时 系统将频繁进行I/O操作使工作效率低下

  Oracle中的SQL语句书写规范且提供了完整的函数和数据类型 Oracle提供了健全的错误机制 用户可以轻松的获得错误位置和错误原因而加以修改 用户还可以自己定义所须的错误类型 用以检查逻辑错误 Oracle中对数据类型的转换和游标的定义也十分方便 因此 我们对代码的书写和维护也比SQL Server方便许多

  SQL Server使用类C语言 不易维护和查看代码 SQL Server包含的数据类型太少 无法定义结构体 数组 对象 SQL Server无法定义流程机制 类型转换也极不方便 SQL Server中对游标定义十分复杂 且当用户定义的多个游标同时打开时系统却只有一个游标变量 这是SQL SERVER中一个严重的缺陷

  ORACLE中用户可以根据数据需要在创建块时定义填充因子(空闲空间的百分比)和复用因子(当块的存储数据所占的空间下降到这个百分比之下时 块才重新标记为可用) 用户可以根据记录变化频率和数据量的大小设置合适的填充因子和空闲因子

  SQL SERVER只有填充因子 而它的定义与ORACLE刚好相反 它定义的是剩余可用空间的百分比 而SQL SERVER中没有复用因子 当页中数据低于填充因子 但剩余的空间已经不可能再插入新的数据 但页还是标记为可用的 当系统要写入新数据都要访问这个页而浪费时间 这种页称为废页 将使系统插入新数据时浪费大量时间查找可用的页

  ORACLE在创建表时用户可以精确定义数据存放的表空间 甚至可以把一张表分开存放在多个表空间中 这样可以将数据量庞大的表按某些字段分开存放 这将给查询带来极高的效率

  =========================================================================================

  随着信息技术的飞速发展 数据处理不仅在数量上要求越来越大 而且在质量上也要求越来越高

  操作系统的稳定对数据库来说是十分紧要的 在数据库可操作平台上 Oracle可在所有主流平台上运行 Oracle数据库采用开放的策略目标 它使得客户可以选择一种最适合他们特定需要的解决方案 客户可以利用很多种第三方应用程序 工具 对开发商来说是很大的支持 而SQL Server却只能在Windows上运行了 这个就显得比较单调了 但SQL Sever在Window平台上的表现 和Windows操作系统的整体结合程度 使用方便性 和Microsoft开发平台的整合性都比Oracle强的很多 但Windows操作系统的稳定性及可靠性大家是有目共睹的 再说Microsoft公司的策略目标是将客户都锁定到Windows平台的环境当中 只有随着Windows性能的改善 SQL Server才能进一步提高 从操作平台这点上Oracle是完全优胜于SQL Server的了

  从资料上可以看到 Oracle的安全认证获得最高认证级别的ISO标准认证 而SQL Server并没有获得什么安全认证 这方面证明了Oracle的安全性是高于SQL Server的

  购买一个产品 首先考虑的当然是产品的性能了 当考虑性能的同时当然少不了究竟要花多少钱在这产品也是个很关键的问题 要建立并运行一个数据库系统 不仅仅包含最初购置软件 硬件的费用 还包含了培训及以后维护的费用 Orcale数据库的价格是远比SQL Server数据库要高 为什么Oracle数据库比SQL Server数据库价格上要高出那么多 一方面Oracle的初始花费相对较高 特别是在考虑工具软件的时候 Oracle很多工具软件需要另外购买 与Microsoft提供免费的SQL Server工具软件相比 Oracle更显价格的不菲 但由于SQL Server只能在Windows下运行的原因 普遍认为SQL Server数据库的可靠性是比较差的 Oracle的性能优势体现在他的多用户上 而SQL Server的性能优势在多用户上就显得力不从心了

  操作上SQL Server明显要比Orcale简单 如果你用过Java和DOTNET的开发平台 区别的基本就是Oracle和SQL Server不同 Oracle的界面基本是基于Java的 大部分的工具是Dos界面的 甚至SQLPlus也是 SQL Server是跟VB一样 全图形界面 很少见到DOS窗口 SQL Server中的企业管理器给用户提供一个全图形界面的集成管理控制台来集中管理多个服务器 Oracle也有自己的企业管理器 而且它的性能在某些方面甚至超过了SQL Server的企业管理器 但它安装较为困难

  Orcale数据库和SQL Server数据库那个更快?其实是一个很难答的问题 因为存在许多不定因素 包括处理类型 数据分布以及硬件基础设施等

  SQL Server 是一个具备完全Web支持的数据库产品 提供了可扩展标记语言核心支持以及Internet上和防火墙外进行查询的能力 具有可伸缩性 灵活性 扩充性好 而且价格便宜等特点 而Oracle则有着可靠安全性 速度比SQL Server快上百倍 但其价格在实施中却比SQL Server它高出了几百倍

lishixinzhi/Article/program/Oracle/201311/18988

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式