(Oracle管理)db2与oracle差别

上传人:管****问 文档编号:118932073 上传时间:2019-12-30 格式:DOC 页数:9 大小:81.04KB
返回 下载 相关 举报
(Oracle管理)db2与oracle差别_第1页
第1页 / 共9页
(Oracle管理)db2与oracle差别_第2页
第2页 / 共9页
(Oracle管理)db2与oracle差别_第3页
第3页 / 共9页
(Oracle管理)db2与oracle差别_第4页
第4页 / 共9页
(Oracle管理)db2与oracle差别_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《(Oracle管理)db2与oracle差别》由会员分享,可在线阅读,更多相关《(Oracle管理)db2与oracle差别(9页珍藏版)》请在金锄头文库上搜索。

1、Oracle和DB2差别1: 并发机制 Oracle的默认隔离级是快照(Snapshot),写入事务不会阻塞读取事务,读取事务可以获取当前已提交值。DB2默认是游标稳定性(Cursor Stability),写入事务会阻塞读取事务。2: 数据类型 数据库的核心是数据,类型不匹配或者语义的不同都会影响应用是否可以同时在两种数据库中运行。Oracle支持一些非SQL标准的数据类型,例如VARCHAR2,这些是不被DB2支持的;另外,Oracle中的日期、时间格式和DB2中相应类型在语义上不完全一致;最后Oracle的PL/SQL存储过程所支持的一些标量数据类型在DB2中需要被映射才能被识别。 如右

2、:3: 隐式类型转换 Oracle使用弱类型转换,而DB2使用强类型转换。隐式类型转换能完成一种类型向另外一种类型的自动转换,对于不匹配的类型,如果数据类型能被合理解释,比较或者赋值时可以执行隐式类型转换;强类型转换规则,意味着字符串和数字类型之间不能直接进行比较,除非显式转换。4: SQL方言 DB2传统上坚持对SQL标准的支持,但Oracle实现了很多方言。例如:CONNECT BY 递归语句、(+)连接操作符、DUAL表、ROWNUM伪列、ROWID伪列、MINUS操作符、SELECT INTO FOR UPDATE语句、TRUNCATE TABLE等。如果要在DB2数据库上运行使用了上

3、述方言的应用,就需要进行代码级别的翻译,工作量较大。 5: PL/SQL语言 就存储过程和函数开发而言, DB2使用SQL PL语言来开发,Oracle使用PL/SQL语言来开发。SQL PL和PL/SQL差异巨大,这也是从Oracle到DB2转型最大的工作量所在。6: 内置包 为了方便应用程序开发的需要,Oracle数据库提供了很多内置包:DBMS_OUTPUT、DBMS_SQL、DBMS_ALERT、DBMS_PIPE、DBMS_JOB、DBMS_LOB、DBMS_UTILITY、UTL_FILE、UTL_MAIL和UTL_SMTP等。使用了这些包的应用程序要想在DB2上运行,就需要在DB

4、2中重新实现一遍,工作量巨大。7: 客户端编程接口 Oracle和DB2针对不同的编程语言提供了不同的编程接口或者驱动,但是编程接口和驱动在语法上存在较大差异,而且在语义上也有一定区别。例如,Oracle针对Java语言提供了JDBC扩展,这与DB2提供的驱动在语法上存在一定的差异;有些JDBC接口方法,像executeQuery方法,DB2只能通过这个方法执行查询操作,而Oracle除了查询外,还可以执行其他DML操作。另外针对C语言,Oracle提供了OCI接口,而DB2提供了ECI接口,这两种接口的语法差别非常大。8:框架 ORACLE基于share-disk架构,DB2是share-n

5、othing架构9: 数据库事故恢复能力 Oracle和DB2都具备分割镜像备份功能。不过,Oracle可以在数据库运行和磁盘写入的同时分割镜像。而DB2镜像分割时必须挂起数据库I/O,因此操作过程中,数据库是不能写入的。如果存档日志文件损坏,Oracle能够通过LogMiner工具翻阅损坏的日志文件,恢复日志文件中记录的交易。对于DB2来说,存档日志文件损坏意味着不仅特定日志文件中的交易全部丢失,而且损坏日志文件之后创建的存档日志文件也会丢失。采用Oracle的块级介质恢复功能,当只有一个块损坏时,只是这个块需要恢复,文件的其余部分,即含有这个块的表仍然可以在线访问,从而提高了数据的可用性。

6、DB2不能以块为单位恢复数据,因此需要将整个文件脱机、重建、恢复。10: 并行机制 Oracle可扩展的、并行决策支持战略以动态并行机制为核心。这种方法可以实现完全透明的并行,不需要静态表分区,大大减少了数据管理工作,最大限度地利用硬件的潜在能力。O在racle用于数据维护的分区选项中,也增加了分区间的并行处理支持,包括并行DML。Oracle还支持每个分区内查询和插入的并行处理。对比之下,IBM(DB2 UDB EEE)最初选择分区作为并行处理手段。IBM提出了“UNION ALL”工作区的建议。有趣的是,IBM基于OS/390(Z/OS)的DB2却并未选择这种方法,而是采用了Sysplex

7、共享磁盘,分区(范围)的方法只是用于管理。11: 分区分区可以将大型数据库结构(表、索引等)分解为比较小的,更加易于管理的结构单位,同时,可以提高查询的性能和资源利用率。DB2仅支持散列分区方法,与Oracle分区方法相比存在很大的局限性和明显的弱点。由于只能进行散列分区,因此DB2不支持“滚动窗口”,就管理性而言,这是一种严重的不足。“滚动窗口”可以使规定期间的数据(如一周、一个月)持续地由最新数据在线替换旧数据。DB2散列分区在加载新数据时,要求所有分区的数据重新分布,因此延长了加载时间,降低了数据的可用性,因为数据重新分布过程中,表呈锁定状态。同样,当旧数据存档或删除时会涉及到所有分区。

8、这样会干扰常规的插入操作,造成空间碎片。DB2的另一个缺点是要求表与索引之间均衡分区。这意味着,不能创建全局索引,包括分区的或非分区的。对于通常需要采用全局索引有效访问某个记录的OLAP环境来说,这是一个严重的问题。采用DB2,应用设计人员无法灵活地定义在分区中的索引策略。 DB2分区方法存在的这些局限,使得管理大量数据的工作变得十分复杂。在这方面,Oracle提供了丰富的选择方法,不仅提高了可管理性,而且改善了系统的性能。12: 数据加载与存档 Oracle数据库10g采用了Oracle数据泵(Data Pump),这是一种基于服务器的统一框架,可用于Oracle数据库系统之间快速传送批数据

9、和元数据。利用直接路径API,Oracle数据泵可以最快速地完成Oracle系统的数据加载和卸载。Oracle数据泵是企业级服务器基础架构,具备加载和卸载全并行功能、重启功能和监控功能。Oracle数据泵的所有接口全部外置,因此您可以编写自己的数据传送工具。利用数据泵输出(Export)和输入(Import)工具,可以在目标平台上卸载或重新加载任何数据对象的子集。如果在文件系统不同语法的平台间传送数据,现在可以改变某些对象输入时创建的定义,数据不会发生丢失。DB2输出功能一次仅允许传送一个表的数据。因此,假如模型中有20个表,就需要执行20次输出作业,一次完成一个表。除浪费时间和人力外,还会由

10、于表的依赖关系在不同时间传送造成输出数据不一致。因此,如果模型中含有ORDERS和ORDER_ITEMS两个表,由于ORDER_ITEMS在ORDERS表之后输出,ORDER_ITEMS的输出数据中可能含有ORDERS表的输出文件中不存在的项。这种不一致会造成输出文件根本无法使用,因为这样的文件不能用来重建完全一致的数据快照。而Oracle不仅可以让管理员在模型、表和数据库层输出数据,而且可在输出作业开始后,保证输出数据相对于时间点的一致性,不必考虑给定表的输出时间。因此,在上例中,管理员只需执行一次作业,输出完整的模型,不必担心输出数据出现不一致的问题。第二,由于DB2输出文件不能提取某些表

11、和模型属性,因此根本无法用来逻辑创建模型或数据库。据“DB2数据传送指南与参考”介绍,DB2 输出不支持带有类型列的表单,不能保留参照完整性约束、检验约束、物理空间分配设置、默认列、外部关键字定义和触发器等属性。同时,也不支持任何非表的其他数据库对象,如视图、存储过程等。因此,与随时用来执行逻辑备份、重建模型或数据库的Oracle输出/输入工具不同,DB2工具仅用于表输入输出数据。即使这种用途也不是随便可以执行,因为DB2输入不能用于重建LOB列定义大于1GB以上的表7。Oracle SQL 加载器(Oracle SQL Loader)是另一种由外部文件向Oracle数据库表加载数据的有力工具

12、。与DB2 Load不同,SQL Loader可以在同一次加载会话中,将数据装入多个表,从而使采用SQL函数操纵数据成为可能,数据在加载过程结束后可以进行访问。这对于DB2来说是无法实现的,除非管理员备份表空间,启动完整性约束8。除简单数据加载外,Oracle数据库10g还配备了成套服务器功能,可满足ETL处理要求(提取、转换、加载)。采用Oracle外部表功能,平面文件等外部源数据可以配置在数据库中,如同正常数据库表一样。这些“外部表”可通过SQL存取。这样,外部数据可以采用SQL、PL/SQL和Java直接查询,并行装入数据库。外部表在一个步骤中完成数据转换和装载,从而大大简化了ETL处理

13、过程。DB2则需要采用多个人工步骤。DB2首先需要将外部数据装入“分级表”,然后进行SQL转换,最后才能进行处理。因此,增加了DBA的工作量,延长了ETL的周期!13: 相同的术语,不同的含义存储过程Oracle:它是用基于SQL的一种专门语言PL/SQL编写的,存储在数据库中的一个程序。DB2:存储过程是一种最普通的程序,存储在数据库外部,并在数据库中注册,以标准编程语言编写,比如C,JAVA,COBOL等,DB2同样支持内部的存储过程,并提供了一种基于SQL的专门的过程式语言。包Oracle:一组PL/SQL语句块。DB2:一种预编译的访问计划。段(Segment)Oracle:是一个物理

14、对象,比如表或索引。DB2:表空间中的一组页面。14: 存储管理 从逻辑观点上来看,Oracle有一个包含多个表空间的数据库,表空间包含多个段(表,索引,回滚等),还包括由多个数据库块组成的扩展(Extent)。从物理意义上看,数据文件被分配给表空间,这些数据文件是由O/S块组成。DB2有两种不同的分配方法来定义表空间。它们一种是数据库管理的空间(DMS),另一种是系统管理的空间(SMS)。根据应用程序,它们各有优势:SMS(System Manages Space)-系统管理空间允许操作系统根据需要为表分配空间。不指定空间参数,这种方法对于存储管理来说非常容易。对于较小的表或短时间增长和收缩

15、的表都是有利的。DMS(Database Managed Space)-当表空间被创建时,数据库管理空间需要详细的空间说明。通过表空间,存储空间可以马上被分配和保留。15: 缓冲池 在Oracle中,缓冲池是在数据库启动文件init.ora中被定义的,这个文件可以动态地改变,它有下面的选项来定义不同的缓冲池:默认,循环,固定。在DB2 LUW中,缓冲池是在数据库中定义的,并可创建为指定的页面大小:4K,8K,16K 或者32K,它们是通过DDL来定义的,不同的表空间被分配不同的缓冲池。16:数据库 两个数据库管理系统处理数据库的方法是完全不同的,在Oracle中,你只有一个数据库,它包含所有的

16、数据文件,重做日志文件,控制文件等。在DB2中,你可以一个实例有多个数据库,然而,每个数据库是独立拥有它的实体的。每次一个新的数据库的创建都会有相应的编目被创建,以及缓冲池和日志文件被定义,数据库之间没有任何共享。在DB2数据库中有三个表空间将被创建:SYSCATSPACE,系统编目。TEMPSPACE,临时表空间,排序等。USERSPACE,应用数据的默认表空间。17: 数据字典/编目这两个RDBMS将与数据库相关的元数据存放在一组相关的表中。这些表在ORACLE中被称为数据字典,在DB2中被称为系统编目(System Catalog for DB2)。ORACLE在SYS模式中有一组数据字典的基

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 经营企划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号