从 Oracle DBA到DB2 DBA(上)
DBA懂得关系数据库的原理是绝对必要的,但对于在一个有不同种类的数据库的环境下这是不够的。你也需要知道它们的细微差别以及每种数据库的不同的处理。没有什么可以替代这些经验和知识。但有了标准化的实用工具后,对于DBA而言,可以使工作过程实现效率的最大化提高,并且可以帮助减少导致应用程序出现停机的问题。
1、简介
当今IT的环境正经历着剧烈的变化,依靠单一的关系型数据库管理系统(RDBMS)管理数据的公司开始逐渐减少。分析家的报告指出 ,今天超过90%的公司都拥有不只一种RDBMS。在现在紧张的经济情况下,实际的需求正在挑战IT机构人员的工作极限。一个公司为管理每种RDBMS而配备不同DBA的情况,越来越少见了。今天的DBA必须跨平台管理不同的RDBMS,这是非常普通的事。
“58%的DBA被要求管理一种以上的数据库平台。”―――来自:SearchDatabase.com的调查
通常,一个DBA不但掌握基本的关系理论知识,同时具备一种专门的RDBMS经验。数据库设计和管理的基本原理在所有RDBMS之间是相通的。成为一名成功的跨平台的DBA,关键是掌握对术语的真正理解和不同RDBMS的细微差别。本文将讨论多平台的Oracle和DB2 UDB之间的基本架构和管理的差异。
2、基本组件
在不同平台之间,大部分的对象类型和功能是非常相似的,一些很重要差异是存储过程的使用方式和日志生成方式。本文将详细讨论这些主题。
表1:基本数据库组件中的常用术语的差异
3、产品选项
当在安装任何一种数据库时,需要选择版本。为了满足你的 IT需求并做出正确的决定,了解各个数据库版本之间的差异是很重要的。
Oracle 10g:
Enterprise Edition
Standard Edition
Express Edition
企业版是使用最多的版本,如果你想使用OEM附加包,这个版本可以满足需要。
DB2 UDB for Linux/Unix/Windows(LUW) V 9.1:
数据仓库版
企业服务器版(ESE)
工作组版
简化版
个人版
通用开发版
个人开发版
在DB2 UDB V 8.1之前,在公司环境方面你有两种选择:企业版(Enterprise Edition-EE)和扩展企业版(Extended Enterprise Edition-EEE)。他们一般被分别称为Double E和 Triple E。EEE是并发式服务器类型环境,与Oracle中的RAC很相似,它通常是被应用于巨型数据仓库的安装,IBM把这些底层代码和V8.1融合到一起,就是现在大家知道的企业服务器版(ESE)。数据分区部件(DPF)是一个可供数据库分区使用的附加部件,这使得系统从EE类型的环境到EEE环境的迁移工作变得很容易。
4、数据类型
甚至每个品牌的数据库存储的数据格式都是不一样的,这对那些被分配在一个不熟悉的数据库上工作的DBA和开发人员来说是十分头疼的。
下面的表说明了数据库之间不同的数据类型:
5、数据字典/编目
这两个RDBMS将与数据库相关的元数据存放在一组相关的表中。这些表在ORACLE中被称为数据字典,在DB2中被称为系统编目(System Catalog for DB2)。
ORACLE在SYS模式中有一组数据字典的基本表,在这些基本表上面定义了一组存储系统信息和对象信息的视图。一组视图,即V$视图,可以访问动态性能信息。属于对象的静态信息可以从以ALL_ 、DBA_ 、和 USER_开头的视图中获得。
在DB2中,每个数据库包含的SYSIBM模式中,有一组基本表称为系统编目。在SYSCAT模式中,对象信息通常能在这些表之上定义的一组视图中获得。此外,DB2在SYSTAT模式中提供了可更新的和主要用于操作访问路径的一组视图。
6、访问数据库
每一个数据库供应商都自己提供一套唯一工具,来访问和管理他们自己的数据库。
6.1、Oracle 企业管理器(OEM)
OEM提供了一些基本的数据库管理功能,想使用更多高级的功能,必须购买附加的包:
- 变更管理包
- 诊断包
- 调整包
- 恢复管理包
- SQLPLUS,基本命令行接口
6.2、IBM控制中心(CC)
控制中心规定了基本的数据库管理的特征,比如创建/删除对象、工具/命令生成、以及一些接口:Command Center、 Script Center 、Visual Explain。
6.3、IBM健康中心(HC)
从DB2 LUW V8.1 开始,IBM就引入了自主计算思想,这是一个“自我修复”数据库中的概念。自主计算的概念还处于早期发展阶段,而健康中心允许你在数据库中为各种不同性能度量值定义阈值,如果超过阈值会自动报警。
7、相同的术语,不同的含义
管理不同类型的数据库的第一步就是要了解各个供应商使用的不同的术语。在很多情形下,相同的术语的含义或者稍有不同或者完全不同。
举例:
存储过程
Oracle:它是用基于SQL的一种专门语言PL/SQL编写的,存储在数据库中的一个程序。
DB2:存储过程是一种最普通的程序,存储在数据库外部,并在数据库中注册,以标准编程语言编写,比如C,JAVA,COBOL等,DB2同样支持内部的存储过程,并提供了一种基于SQL的专门的过程式语言。
包
Oracle:一组PL/SQL语句块
DB2:一种预编译的访问计划
段(Segment)
Oracle:是一个物理对象,比如表或索引
DB2:表空间中的一组页面
8、不同的术语,相似的含义
对于大部分而言,每种类型数据库都包含很多相似的组件,但它们命名不同,实现也不同。
9、实例(Instance)&数据库
大家知道每个DBMS的物理安装就是一个实例。然而,各自处理数据库的方式是明显的不同。
两个DBMS都把实例定义为一组进程,然而,DB2 LUW 允许一个或多个活动的数据库,Oracle每个实例仅仅只有一个数据库,在Oracle中,通常实例和数据库是可以互换的概念。
实例定义的差异: