12、管理的差异
12.1、优化
为了保证数据库高速的运行,SQL优化是很重要的一部分工作。每个数据库都有它们各自不同的SQL优化器,其确定如何从数据库中检索数据满足查询的方式各有不同。
Oracle:你可以选择使用rules-based 或者cost-based来做优化。然而,你必须注意rules-based优化在10g版本中已经没有了。
DB2:IBM的优化比Oracle更高明,这已经历了很长时间的争论。DB2的优化是严格地使用cost-based来做的,对于复杂的查询,你也有为它指定优化级别的选择权。
此外,Oracle和DB2都可以通过EXPAIN命令在相关的表上增加包含访问路径信息的行数据。 Oracle利用Plan_Table,这和运行在z/OS上的DB2很类似。DB2的解释输出包含在七个表中,记录非常详细。
每一个供应商都会为这些访问路径信息提供格式化的工具。Oracle在OEM中有基本解释工具,或者你也可以使用OEM中调整包里的SQL功能。DB2则通过控制中心提供了易使用的Visual Explain.
12.2、并行
并行这个概念在这些上有很大不同。Oracle中的并行需要特殊的硬件配置,开始于其产品Oracle Parallel Server(OPS-8i)。后来9i版本中变成RAC,这里Oracle中并行的概念与在DB2 z/OS中的SYSPLEX并行的概念非常相似。DB2的并行要求要使用带DPF(数据分区部件)的ESE(企业服务器版),它们有两种不同的配置:
MPP(大规模平行处理)---多台机器组成集群,每一台机器都有各自单独的。
SMP(对称多处理)---一台机器上有多个处理器。
12.3、监控
为了保证应用程序的请求能及时得到响应而不延迟,监控数据库的任务也是必要的。
Oracle:它提供一套性能动态视图工具,我们通常所说的V $ Views。标准SQL通常用于数据库性能信息的监测,比如内存、硬盘空间使用情况,用户和会话信息以及锁等。
DB2:它提供了两种不同的监控选项。第一,快照监控,顾名思义,它提供某一时刻性能的信息。大量被收集的数据被6个系列的监听器所控制。事件监听,通常是用于特殊事件的跟踪,比如死锁或完成的事务。事件监听是一种实际的数据库对象,它必须要通过DDL来创建,事件监听的输出会写到一个目录或者指定的通道。
12.4、工具
每一个数据库都有它们各自的命令和工具集,用来数据库中的数据。
(1)重组数据
Oracle:它给你重组数据以很多灵活性,你可以使用Import/Export命令来实现,或在9i企业版里使用Online Redefinition Package(重定义包)进行联机重组。
DB2:你可以重组一个表或者一个索引。也可以使用一个很不错命令REORGCHK,这个命令将产生需要重组的表的报告。
(2).装载数据
Oracle:将数据导入表中可以使用SQL*LOADER。它有很多选项,比如:插入,追加,替换数据,多个输入文件等等。
DB2:对于DB2来说,DBA有两个选择来导入数据:装载工具或者导入命令。装载工具一般用于装载大量的数据时使用,而导入命令则有益于快速地做插入少量的数据的操作。无论是导入命令还是装载工具,它们都提供添加或替换数据的选项。
12.5、备份和恢复
做备份和恢复的策略计划是DBA的关键职责。根据其运行的具体应用,每一个数据库都有很不同的需求。
第一个决定是使用日志文件的。你的应用程序需要时间点的恢复吗?如果是,对于Oracle来说,你可以选择Archive mode方式的日志,对于DB2 UDB而言,你可以选择Log Retain。如果你的应用程序没有问题,只是想恢复到最近的备份,在Oracle中你可以选择No Archive mode, 对于DB2 UDB,你可以选择Circular logging(default)。
(1)备份类型
Oracle:冷备份-是指数据库在离线的情况下做整个数据库的备份,包括、数据文件,控制文件,在线重做日志文件,Init.ora。
热备份-是指联机情况下做的备份。
RMAN-恢复管理器,
导出数据库
DB2:
数据库-在线/离线
表空间
(2)恢复类型
Oracle:
实例恢复-从失败的实例中用重做日志来恢复
非归档模式(整个数据库的恢复)
归档模式(基于时间点的恢复)
导入-逻辑恢复
DB2:
崩溃—从异常终止或突然断电中用日志来恢复
前滚—映像拷贝+日志或本地时间(V8)
版本-使用映像拷贝
导入/装载-逻辑恢复
还要做很多其他决定,如备份的类型和频率,逻辑备份还是物理备份,备份文件保留多长时间,用户是否会中断备份等。每个数据库都应该就所有的这些问题有个明确的程序,这与应用和操作环境有关。
13、结束语
管理数据库是一件复杂而又很费时间的工作。DBA越来越多地被要求管理各种关系型数据库,可能来自不同的厂商,可能运行在不同的操作系统上。
DBA懂得关系数据库的原理是绝对必要的,但对于在一个有不同种类的数据库的环境下这是不够的。你也需要知道它们的细微差别以及每种数据库的不同的处理。没有什么可以替代这些经验和知识。但有了标准化的实用工具后,对于DBA而言,可以使工作过程实现效率的最大化,并且可以帮助减少导致应用程序出现停机的问题。