数据库技术是一个不断发展的知识领域。利用对某种产品目前所具有的知识并将它应用到另一种相似的产品,这种方法使您能够跟上不断更新的技术的脚步。这篇文章演示了如何使用从 Informix 或 DB2 9 中获得的技术来学习这两种技术中的另外一种,并对 IBM® Informix® Dynamic Server (IDS) 10 和 IBM DB2® 9 中使用的技术进行了比较。

Suma C. Shastry (suma.chakrabarti@in.ibm.com), 高级软件工程师, EMC

Suma Shastry 是位于印度 IBM 软件实验室 Information Management 团队的一名项目主管。她在 DB2 方面拥有六年的工作经验,主要从事 DB2 工具的开发。她是 IBM 认证的 DB2 DBA,并且在 SVT、FVT、回归和测试自动化方面具有丰富的专业知识。



Mohan Kumar (mohankumarsp@in.ibm.com), 系统软件工程师, IBM

Mohan 是位于印度 IBM 软件实验室的一名 DB2 应用程序开发人员。他主要从事 DB2 样例开发工作,是经过认证的 IBM DB2 高级 DBA,应用程序开发人员以及 DB2 Problem Determination Master。他还在 SVT 和 FVT方面具有丰富的工作经验。



Prasad Srinivasachar (srprasad@in.ibm.com), 顾问软件工程师, IBM

Prasad 是位于 ISL 的 IBM Informix Development 团队的一名顾问软件工程师,从事 Informix Classics 产品的开发。他在 Informix 产品开发方面具有多年的丰富工作经验,他是一名数据库管理员,同时还是一位应用程序开发人员。



2007 年 1 月 25 日

简介

DB2 9 和 IDS 10 的战略定位是使数据库的管理更加便捷,具有众多内置的特性。其中一些常见特性包括自治管理、对透明的 “静默” 安装的支持、对众多开发范例的支持、最小化磁盘空间需求以及范围分区。表 1 突出显示了这些产品的主要特性。关于这两种产品的更多信息,可参考 参考资料 一节。

表 1. 主要特性
DB2 9IDS 10
pureXML 和混合数据服务
DB2 9 包含了提供 pureXML 服务的技术,该服务不仅用于数据服务器外部接口,更准确地说它扩展到了 DB2 引擎的核心。DB2 9 中的 XML 和关系型服务被紧密集成,从而提供了业界内第一个 pureXML 和关系型混合数据服务器。
安全性增强
IBM IDS 10 在数据库服务器的安全性、加密、身份验证和可用性方面做了很大程度的改进。
数据压缩
DB2 9 中的数据行压缩技术为压缩数据记录提供了一种基于字典的算法。就是说,DB2 9 通过反复扫描表对数据库表中的数据进行行压缩,复制数据,并且构建为这些重复条目分配短数字键的字典。由于重复出现的字符串以及具有大量重复字符或字符串前后空格的数据,因此文本数据的压缩效果也很好。
服务器可用性增强
服务器可用性增强包括易管理性、可伸缩性和高可用性。
自调优内存
DB2 中的自调优内存管理器使用智能控制以及反馈机制,能够跟踪内存的消耗情况以及对数据库中各种共享资源的需求的变化,并根据需要动态调整它们对内存的使用。
性能增强
性能增强包括查询性能和恢复时间方面的改进。除了下面要讨论的主题以外,还在以下方面做出了增强以提升性能:
  • XA 事务
  • 嵌套的与 ANSI 兼容的左外连接
  • 子查询
  • 全外连接
基于标签的访问控制(Label Based Access Control,LBAC)安全性
LBAC 是 DB2 中的一个安全特性,它提供了对单个行和列级的粒度读写访问。DB2 9 提供了一个新的具有特殊安全性权限的 DB2 安全管理员角色(SECADM)。 SECADM 用户可以被授予与安全性相关的权限,甚至是系统管理员(SYSADM)都不具备这些权限。
SQL 增强
SQL 增强改善了数据库的可用性。可以在无需锁定表的情况下创建和删除索引。
表分区
表分区(有时也称为范围分区)是一种数据组织模式,此模式中,根据一个或多个表列的值,表数据被分到多个称为数据分区的存储对象中。这些存储对象可位于不同的表空间、相同的表空间或两种情况的组合。
企业复制增强
企业复制增强简化了管理工作,提高了数据的完整性并允许执行额外的 SQL 操作。
应用程序开发增强
DB2 9 中对应用程序的开发增强包括一个新的 Developer Workbench、与 .NET 环境更具深度的集成、对 XML 的丰富支持、用于 PHP 和 Ruby 接口的新的驱动器和适配器以及新的应用程序样例。
备份和恢复增强
备份和恢复增强改善了性能和错误调试。
存储增强
存储增强改善了使用的简易性。长标识符和 High-Performance Loader 有助于进行存储。Tivoli Storage Manager 的 Informix 界面有助于高效数据存储。
可扩展性增强
可扩展性增强在分布式事务、从执行触发器操作中获取信息以及 Java 支持方面做出了改进。
安装增强
安装增强改善了可用性。
互操作性增强
互操作性增强改善了 Informix 和 DB2 产品之间的通信。

版本和平台支持

DB2 9 和 Informix IDS 10 为任何种类的业务提供了正确的数据管理解决方案。这两种产品都提供了包装了众多特性和功能的不同产品版本,以适应大量来自客户的不同需求。中小型企业可以选择 Express Editions,而 Workgroup 和 Enterprise Editions 则适合大型企业。连同这些版本,DB2 9 另外提供了两个版本:Personal Edition 和 Developer Edition,以及一个免费版 DB2 Express-C。表 2 描述了 DB 9 和 Informix IDS 10 中可用的版本。

表 2. 版本和平台支持
DB2 9IDS 10
DB2 Express Edition 9 for Linux, UNIX, and Windows
DB2 Express 9 是一个功能完备的 DB2 数据服务器,它为中小企业(Small and Medium Business,SMB)市场提供了极具吸引力的入门级价格。该版本提供了经简化的程序包,可在应用程序内轻松进行透明安装。DB2 Express 9 可以轻松升级到 DB2 9 的其他版本,它还具有和其他可伸缩性更高的版本相同的自主管理特性。
IDS Express Edition 10 for Linux, UNIX, and Windows

IDS Express Edition 适合于中型企业。它是一个功能完备的对象关系型数据库服务器。IDS Express Edition 包括诸如自治管理和简化安装这样的特性。几乎不需要为其管理的特性支持大量开发范例。最小的磁盘空间需求支持可扩展性。

DB2 Workgroup Server Edition 9 for Linux, UNIX, and Windows
若要在一个部门、工作组和中型企业环境中进行部署,DB2 Workgroup 9 是作为数据服务器的完美选择。它为中型安装提供了极具吸引力的价格,同时提供了功能完备的数据服务器。
IDS Workgroup Edition 10 for Linux, UNIX and Windows
IDS Workgroup Edition 适用于大型企业中的部门以及中型企业。这个版本提供了 IDS Express Edition 的所有特性。此外,它还支持并行数据查询、并行备份和恢复、高性能加载器和高可用性数据复制(可作为增件购买)。
DB2 Enterprise Server Edition (ESE) 9 for Linux, UNIX, and Windows
DB2 ESE 9 被设计为可以满足中到大型企业的数据服务器需求。DB2 ESE 9 是构建随需应变企业级解决方案(如下所示)的理想基础:
  • 多个千兆规模的大型数据仓库
  • 高性能、24x7 可用、大容量事务处理业务解决方案
  • 基于 Web 的解决方案
此外,DB2 ESE 9 还提供了与其他 Enterprise DB2 和 IDS 数据源的连通性、兼容性以及集成。
IDS Enterprise Edition 10 for Linux, UNIX, and Windows
IDS Enterprise Edition 被设计为可满足大型企业的需求。它包括 IDS Workgroup Edition 的所有特性,以及为处理高负载和 24x7 可用性提供可伸缩性所需的特性。该版本包括以下特性:
  • 企业数据复制
  • 高可用性数据复制
DB2 Personal Edition for Linux, UNIX, and Windows
DB2 Personal 9 是一个单用户、功能完备、具有内置复制的关系型数据库。对于基于桌面和膝上型电脑的部署是一个理想选择。DB2 Personal 9 可以进行远程管理,这使其成为在不要求多用户能力的不定期连接或远程办公实现中的最佳部署选择。
Database Enterprise Developer Edition
此版本为单一应用程序开发人员提供软件包,用于设计、构建和原型化应用程序,以在任意 IBM 信息管理客户端或服务器平台上部署。这一全面的开发人员产品包括 DB2 Workgroup 9、DB2 Enterprise 9、IDS Enterprise Edition V10、Cloudscape V10.1、DB2 Connect Unlimited Edition for zSeries 和所有 DB2 9 特性,允许客户构建利用最新数据服务器技术的解决方案。
DB2 Express-C
DB2 Express-C 是为社区提供的 DB2 Express Edition(DB2 Express)的一个版本。DB2 Express-C 是一个免费的数据服务器,可用于开发和部署 XML、C/C++、Java、.NET 和 PHP 应用程序。DB2 Express-C 最多可运行在双核 CPU、4 GB 内存的服务器上,以及对数据库规模或其他人为限制没有要求的任何存储系统。

体系结构概述 —— 比较 DB2 9 ESE 和 IDS 10

在 DB2 中,一个实例就提供了一个独立的环境,在其中可以创建数据库,并在数据库中运行应用程序。

由于存在这些独立的环境,两个或更多实例可以具有相同名称的数据库。图 1 中,数据库 MYDB2 和实例 DB2 相关联,而另一个数据库 MYDB2 和一个不同的实例 MYINST 相关联。

实例允许用户拥有独立自主的环境,用于生产、测试和开发。 在 DB2 安装过程中会创建一个默认实例。在 Windows 中该默认实例被称为 DB2,而在 Linux 和 UNIX 中被称为 db2inst1。同样,可以使用 db2icrt 命令创建一个实例。

每一个 DB2 实例可具有一个或多个数据库。每一个实例具有一个数据库管理配置文件。此外,每一个数据库可拥有自己的数据库配置文件、目录表、日志、保留的缓冲池区域和表空间。表空间包括常规表空间、长表空间(用于 LOB 数据)、用户临时表空间和系统临时表空间。对于每个数据库来说,调优参数、资源管理和日志会有所不同,并且可以在数据库级别上对其进行控制。

图 1. DB2 体系结构概览
DB2 体系结构概览

和 DB2 相似,IDS 实例也提供了一个独立的环境,在其中创建数据库,并在数据库中运行应用程序。每一个实例具有一个默认的 dbspace(rootdbspace)、配置文件、三个系统目录数据库(SysMaster、SysUtils 和 SysUsers)、日志和缓冲池。此外,可以在创建实例的同时选择创建一个 tempdbspace。一个实例可以具有多于一个的 dbspace。dbspace 的类型有常规 dbspace、临时 dbspace、blobspace、sbspace 和 extspace。与 DB2 不同的是,IDS 数据库在实例级别上共享日志、缓冲池和临时 dbspace。此外,每一个数据库拥有自己的目录表和用户表。图 2显示了两个 IDS 实例。

可以使用 oninit -i 命令对 IDS 实例进行实例化。实例名称由环境变量 INFORMIXSERVER 指定。与 DB2 不同,IDS 没有删除实例的显式命令 。然而,可以改变诸如根路径的配置参数和服务器编号,然后再使用 oninit -i 命令。这个命令实例化所有和环境相关联的实例。因此,使用该命令时应该非常谨慎。在 IDS 中创建实例要使用一组环境变量和配置参数,这些内容都在 ONCONFIG 环境变量指定的文件中做了定义。因此,在发出 oninit -i 命令之前设置所有相关的配置参数非常重要。可以使用 Informix 实用工具 onmonitor 或使用任何的编辑器定义配置参数。下面介绍了其中一些配置参数。

ROOTNAMErootdbs# 根 dbspace 名称
ROOTPATH/dev/online_root# 包含根 dbspace 的设备的路径
SERVERNUM0# 与 OnLine 实例相对应的惟一 ID
DBSERVERNAME# 默认数据库服务器的名称
LOGFILES6# 逻辑日志文件的编号
TAPEDEV/dev/tapedev # Tape 设备路径
LTAPEDEV/dev/tapedev # Log tape 设备路径
LOCKS2000# 锁的最大值
图 2. IDS 体系结构概览
IDS 体系结构概览

进程模型

有关 DB2 进程模型的知识可以帮助确定问题的性质,这是因为这些知识可以帮助理解数据库管理器与其相关的组件如何相互作用。基于 UNIX 的环境使用基于系统进程的体系结构。例如,将 DB2 通信侦听器作为系统进程进行创建。诸如 Windows 之类的 Intel 操作系统,使用基于线程的体系结构以达到性能最大化。

代理

代理可以被看作是代表应用程序执行所有数据库操作的工人。有两种主要类型的 DB2 代理:

  • 协调代理程序(db2agent): 协调代理程序代表应用程序协调工作,并使用进程间通信(IPC)或远程通信协议与其它代理程序进行通信。所有来自客户机应用程序的连接请求,无论是本地还是远程的,都分配了相应的协调代理程序。
  • 子代理程序(db2agntp): 如果启用了 intra_parallel 数据库管理器配置参数,协调代理程序就会把数据库请求分发给子代理程序(db2agntp)。这些代理程序执行应用程序的请求。一旦创建了协调代理程序,通过协调对数据库执行请求的子代理程序(db2agent),协调代理程序代表其应用程序处理所有数据库请求。

当某个代理程序或子代理程序完成其任务时,它就转为空闲状态。当子代理程序处于空闲状态时,其名称从 db2agntp 变为 db2agnta。空闲代理程序驻留在代理程序池中。这些代理程序可用于来自代表客户机程序进行操作的协调代理程序,或来自代表现有协调代理程序进行操作的子代理程序的请求。可用的代理程序数取决于数据库管理器配置参数 maxagents和 num_poolagents。图 3 显示了 DB2 进程模型。

图 3. DB2 进程模型(用于非分区数据库)
DB2 进程模型

上图中的每一个圆圈代表示引擎分派单元(EDU),在 Linux/UNIX 平台上称为进程,而在 Windows 上称为线程。

db2fmp 是一个受防护的进程。用于在防火墙之外执行受防护的存储过程和用户定义的函数。db2fmp 始终是独立的进程,但是根据它执行的例程类型,也可能是多线程的。

下面列出了一些每个数据库系统使用的重要线程或进程:

  • db2pclnr:缓冲池页面清除程序。
  • db2logmgr:日志管理器。该进程为可恢复的数据库管理日志文件。
  • db2loggr:该进程操作日志文件用于处理事务进程和恢复。
  • db2dlock:用于检测死锁。
  • db2taskd:用于后台数据库任务的分发。进程通过调用 db2taskp 执行该任务。

为了使数据库服务器能发挥作用,必须具备系统控制器(db2sysc)。同样,启动其他众多线程和进程来执行不同任务。下面列出了其中一些。在 参考资料 一节中参考 DB2 信息中心,了解更多关于 DB2 进程的信息。

  • db2resync:resync 代理,可以扫描全局的 resync 列表。
  • db2gds:基于 UNIX 系统的全局守护进程衍生程序(Global Daemon Spawner)进程,它将启动新的进程。
  • db2wdog:基于 UNIX 系统的看守程序,处理异常终止。
  • db2pdbc:它处理来自远程节点的并行请求。(只用于分区数据库环境中)。
  • db2fmd:默认的监视器守护进程。
  • db2disp:客户连接集中分派器。
图 4. IDS 内存体系结构和后台进程
IDS 内存体系结构

IDS 由三个主要组件组成:进程,内存和磁盘。刚刚讨论了进程组件,本文稍后将讨论内存和磁盘组件。

IDS 是一个多线程数据库服务器。该多线程体系结构使用了很少的进程来执行数据库活动。通过使用线程,一个进程可以为一个以上的应用程序工作。如果需要的话可以为数据库服务器动态分配进程,因此才有了动态服务器(Dynamic Server)这个术语。IDS 允许增加可伸缩性。这种多线程实现可以容纳大量的事务而只占用较少的额外资源。

虚拟进程(VP)

oninit 进程又称为虚拟处理器,组成了 IDS。每个 VP 属于一个 VP 类。一个 VP 类负责执行一组特定任务集。oninit 进程被映射到数据库服务器使用的不同 VP 类。 下面对每一种 VP 类进行了简要说明:

  • CPU VP:该类执行大多数进程,它的目的就是执行数据库服务器进程的所有 CPU 密集型任务。管理员可以根据需要通过数据库服务器增加或减少 CPU VP 类的数量。
  • KAIO VP:Kernel Asynchronous I/O VP 运行内部线程来对原始设备执行 I/O。
  • AIO VP:该类用来执行 I/O 从而操作系统文件(也称为成熟文件)。
  • LIO VP: 运行内部线程从而写入磁盘上的逻辑日志。
  • PIO VP: 运行内部线程从而写入磁盘上的物理日志。
  • SHM VP: 当应用程序正在使用通信的共享内存方法时,该类将为新连接处理轮询任务。
  • SOC VP: 为通信的 TCP/IP Berkeley 套接字方法处理轮询任务。
  • TLI VP: 为 Transport Library Interface (TLI) 编程接口处理轮询任务,该接口用于 TCP/IP 或 Internetwork Packet Exchange (IPX)/Sequenced Packet Exchange (SPX) 和应用程序之间的通信。
  • MSC VP: 为其他混合的任务运行线程。

内存模型

图 5. DB2 内存结构
DB2 内存结构

本文将介绍实例共享内存和数据库共享内存。

实例共享内存

每个 DB2 实例都有一个实例共享内存。实例共享内存是在数据库管理器启动(db2start)时分配的,并随着数据库管理器的停止(db2stop)而释放。这种内存集用于实例级的任务,例如监控、审计和节点间通信。下面的数据库管理器配置(dbm cfg)参数控制着对实例共享内存以及其中个别内存池的限制:

  • 实例内存(instance_memory): 这个参数指定了应该为实例管理保留的内存数量。包括描述实例数据库的内存区。
  • 监视器堆(mon_heap_sz): 该参数确定了页面中的内存数量,用于分配给数据库系统监视数据。当执行数据库监视活动时,将从监视堆分配内存,这些活动包括拍摄快照、打开监视器开关、重置监视器或激活一个事件监视器。
  • 审计缓冲区大小(audit_buf_sz): 该参数指定审计数据库时使用的缓冲区的大小。这将用于 db2audit 实用工具。
  • 快速通信缓冲区(fcm_num_buffers): 该参数指定了 4 KB 大小的缓冲区的数量,这些缓冲区用于数据库服务器内部以及数据库服务器之间的内部通信,还用于分区和代理之间的节点间通信。分区实例或具有 INTRA_PARALLEL 的实例设置为 ON。

数据库内存模型

图中的完整绿色方框意味着,在数据库启动的时候,该内存池是完全分配的,否则,就只分配部分的内存。例如,当一个数据库第一次启动时,不管 util_heap_sz 的值是多少,只有大约 16 KB 的内存被分配给实用工具堆。当一个数据库实用工具(例如备份、恢复、导出、导入和装载)启动时,才会按 util_heap_sz 指定的大小分配全额的内存。

图 6. DB2 数据库共享内存
DB2 数据库共享内存

数据库缓冲池 通常是数据库共享内存中最大的一块内存。DB2 在其中操纵所有常规数据和索引数据。一个数据库必须至少有一个缓冲池,并且可以有多个缓冲池,具体要视工作负载的特征、数据库中使用的数据库页面大小等因素而定。

IDS 的共享内存组件 属于实例级,被分为三个部分,如上面图 4 所示。

  • 常驻内存段:也被称为常驻区,包含用于从数据库缓存页面的缓冲区、最近最少使用(LRU)的队列、逻辑日志缓冲区,并包含了大量结构用于跟踪服务器使用的资源。这将有助于更加快速地访问。
  • 虚拟内存段:虚拟区用于维护和控制进程所需的资源。虚拟段包含关于线程和会话信息以及它们所使用的数据。这些信息总是在不断变化(增加或减少)。数据库服务器在虚拟区中管理内存的分配和解除分配。虚拟内存段还包含字典缓存器,存储过程缓存器,以及在向磁盘一次性写入大块页面时使用到的较大的缓冲池。当对数据进行分类时,这个区也会增长,例如通过服务器构建大索引。
  • 通信段:共享内存通信区,也被称为消息区,被作为客户机和服务器进程的一种通信机制。在客户机和服务器通过共享内存进行通信时,消息区将用作两者之间的消息缓冲区。

磁盘组件 是一个或多个被分配到数据库服务器的磁盘空间单元的集合。包括所有维护服务器系统的系统信息,以及所有存储在磁盘组件内的数据库数据。IDS 在一个单个计算机上可具有从 1 到 256 个实例,与 DB2 相同。

图 7. 高级 IDS 实例体系结构
高级 IDS 实例体系结构

DB2 在四个不同内存集(memory set)拆分和管理内存,这四个内存集是:

  • 实例共享内存(instance shared memory)
  • 数据库共享内存(Database shared memory)
  • 应用程序组共享内存(application group shared memory)
  • 代理私有内存(agent private memory)

每种内存集由各种不同的内存池(亦称堆)组成。图 1 也给出了各内存池的名称。例如,lock list 是属于数据库共享内存集的一个内存池。sort heap 是属于代理私有内存集的一个内存池。


数据库创建和存储模型

在 DB2 中,可以使用数据库创建命令或使用控制中心工具创建数据库。本文将介绍如何使用命令创建数据库和数据库对象。在探讨这些命令之前,先来了解一下什么是表空间。

表空间

表空间是一个包含表、索引、大对象和长数据的存储结构。表空间谓语数据库内。它允许您直接将数据库和表数据的位置分配到容器上。(一个容器可以是一个目录名、一个设备名或一个文件名。)这种机制可以提供改善的性能和更加灵活的配置。一个数据库可以具有多于一个的表空间,而一个表空间不能同时属于多个数据库。

表空间管理

在 DB2 中,可以有两种不同的方式管理表空间:, table spaces are managed in two different ways:

  • 系统管理的空间(SMS):SMS 表空间由操作系统进行管理。容器被定义成常规操作系统文件,并且是通过操作系统调用访问的。这意味着所有的常规操作系统功能将处理以下内容:操作系统将缓冲 I/O;根据操作系统约定分配空间;如有必要就自动扩展表空间。但是,不能从 SMS 表空间删除容器,并且仅限于将新的容器添加到分区的数据库。前一节中所说明的那三个缺省表空间都是 SMS。
  • 数据库管理的空间(DMS):DMS 表空间是由 DB2 管理的。可以将容器定义成文件(在创建表空间时将把给定的大小全部分配给它们)或设备。分配方法和操作系统允许多少 I/O,DB2 就可以管理多少 I/O。可以通过使用 ALTER TABLESPACE 命令来扩展容器。还可以释放未使用的那部分 DMS 容器(从 Version 8 开始)。 当创建数据库时,将创建三个表空间(SYSCATSPACE、TEMPSPACE1 和 USERSPACE1)。

根据表空间的用途和管理方式将它们分类。根据用途有五种不同的表空间:

  • 目录表空间:每个数据库只有一个目录表空间,它是在发出 CREATE DATABASE 命令时创建的。目录表空间被 DB2 命名为 SYSCATSPACE,它保存了系统目录表。总是在创建数据库时创建该表空间。
  • 常规表空间:常规表空间保存表数据和索引。它还可以保存诸如大对象(Large Object,LOB)之类的长数据,除非这些数据显式地存储在长表空间中。如果某些表空间是数据库管理的空间(Database Managed Space,DMS),则可以将表及其索引分别放到单独的常规表空间中。我们将在本文后面定义 DMS 和系统管理的空间(System Managed Space,SMS)之间的区别。每个数据库中必须至少有一个常规表空间。创建数据库时指定该表空间的默认名为 USERSPACE1。
  • 长表空间: 长表空间用于存储长型或 LOB 表列,它们必须驻留在 DMS 表空间中。它们还可以存储结构化类型的列或索引数据。如果没有定义长表空间,那么将把 LOB 存储在常规表空间中。长表空间是可选的,缺省情况不会创建长表空间。
  • 系统临时表空间: 系统临时表空间用于存储执行 SQL 操作(比如排序、重组表、创建索引和连接表)期间所需的内部临时数据。每个数据库必须至少有一个系统临时表空间。随数据库创建的系统临时表空间的默认名为 TEMPSPACE1。
  • 用户临时表空间: 用户临时表空间存储已声明的全局临时表。创建数据库时不存在用户临时表空间。至少应当创建一个用户临时表空间以允许定义已声明的临时表。用户临时表空间是可选的,默认情况下不会创建用户临时表空间。

图 8 显示了一个具有五个表空间的数据库:一个目录表空间、两个常规表空间、一个长表空间和一个系统临时表空间。没有创建用户临时表空间。其中有 8 个容器。

图 8. 具有表空间和缓冲池的 DB2 数据库
具有表空间和缓冲池的 DB2 数据库

可使用以下命令创建此类数据库和表空间。

create database sample
connect to sample
create bufferpool BP1 size 1000 pagesize 4 K
create bufferpool BP2 size 1000 pagesize 8 K
create bufferpool BP3 size 1000 pagesize 32 K

create regular tablespace userspace1 pagesize 8 k managed by database
using (file 'C1U1' 1000, file 'C2U1' 1000) bufferpool BP2 

create regular tablespace userspace2 pagesize 4 k managed by database
using (file 'C1U2' 1000) bufferpool BP1 

create large tablespace largespace1 pagesize 32 k managed by database
using (file 'C1L1' 1000, file 'C2L1' 1000, file 'C3L1' 1000) bufferpool BP3

create temporary tablespace systemp1 pagesize 32 k managed by system 
using (path '/db1/C1T1') bufferpool BP3

使用上面这组命令将创建缓冲池和表空间。现在来看一下 DB2 中的容器和缓冲池是什么。

容器

每个表空间都有一个或多个容器。重申一次,您可以认为容器是孩子,而表空间是其父母。每个容器只能属于一个表空间,但是一个表空间可以拥有许多容器。可以将容器添加到 DMS 表空间,或者从 DMS 表空间中删除容器,而且可以更改容器的大小。只能将容器添加到某个分区中分区数据库上的 SMS 表空间,在添加之前该分区还未给表空间分配容器。添加新的容器时,将启动一个自动的重新均衡操作以便将数据分布到所有容器上。要了解更多关于容器和重新均衡操作的内容,请参考 DB2 9 Information Center

缓冲池

一个缓冲池是与单个数据库相关联的,可以被多个表空间使用。当考虑将缓冲池用于一个或多个表空间时,必须保证表空间页大小和缓冲池页面大小对于缓冲池所 “服务” 的所有表空间而言都是一样的。一个表空间只能使用一个缓冲池。创建数据库时,会创建一个名为 IBMDEFAULTBP 的默认缓冲池,所有的表空间都共享该缓冲池。可以使用 CREATE BUFFERPOOL 语句添加更多的缓冲池。大型缓冲池还会对查询优化产生影响,因为更多的工作可在内存中完成。要了解更多关于缓冲池的内容,请参考 DB2 9 Information Center

IDS 中的数据库创建

现在您已经了解了 DB2 中数据库是如何创建的以及 如何对表空间进行管理,现在来看一下在 IDS 中 dbspaces 和数据库是如何彼此相关的。

dbspaces

dbspace 是由一个或多个块组成的逻辑单元。Chunk 表示存储的物理单元。数据库服务器可以使用成熟的(cooked)文件或原始(raw)设备来存储数据。数据库是被创建在常规 dbspace 中的,因此在创建数据库之前必须已经存在一个常规 dbspace。默认的常规 dbspace 称为 rootdbs,它是在创建 IDS 实例时被创建的。除非 create database 命令中说明要使用另一个常规 dbspace,否则将使用默认 dbspace 创建数据库。系统目录表和数据库本身位于同一个 dbspace 中。同一个 Informix 实例中的任何其他数据库都可以使用所有的 dbspace。IDS 具有大量的 dbspace,下面将做简要介绍。

  • 常规 dbspace: 常规 dbspace 用来存放数据库对象,如系统目录表、用户表和索引。
  • 临时 dbspace:临时 dbspace 属于常规 dbspace,数据库服务器在存储临时表时将使用到它。当使用临时 Blobspace 时,数据库服务器并不记录日志。由于这样做减少了 I/O 和检查点操作因而改善了数据库性能。
  • Blobspaces: blobspace 是由一个或多个块组成的逻辑单元。blobspace 用来存储文本和字节数据。数据库服务器将存储在 blobspace 中的数据直接写入到磁盘。不会对 blobspace 对象记录日志。
  • Sbspaces: sbspace 是由一个或多个块组成的逻辑单元。sbspace 用来存储智能大对象。智能大对象由字符大对象(CLOBs)和二进制大对象(BLOBs)数据类型组成。可以对存储在 sbspace 中的数据库对象记录日志。使用 Informix API(一个应用程序)可以存储或检索存储在 sbspace 中的智能 LOB。
  • Extspaces: extspace 是与一个字符串相关联的逻辑名称,该字符串表示外部数据的位置。在对数据库进行开发时(扩展 IDS 的功能)将用到 extspace。可以使用相应的用户定义的访问方法来访问 extspace 中的内容。

举例来说,如果运行下面的数据定义语言(data definition language,DDL),首先会创建 2 GB 大小的 dbspace Dbdbspace,然后在 dbspace Dbdbspace 中创建数据库 sampledb。sampledb 的数据库目录表位于 Dbdbspace 中。

Onspaces -c   -d  Dbdbspace -p /work/database/chunk1 -o 0 -s 20480000 

where,
	c  For Creating Dbspace
	p  path name for the physical unit
	o  offset in K bytes
	s  size of dbspace in Kbytes
	a  for adding chunk to a dbspace

Create database sampledb in Dbdbspace;
图 9. 具有 Dbspace 和块的 IDS 数据库
具有 Dbspace 和块的 IDS 数据库

如图 9 所示,数据库中的所有数据库对象可以被存储在一些 dbspace 中。这个例子具有一个默认的 Root Dbspace、三个称为 Root Dbspace 的常规 dbspace、User Dbspace、Index Dbspace、一个 Temporary Dbspace、一个 Blobspace、一个智能 LOB sbspace 和一个 extspace。上面这个例子中 Database 1 中的数据库对象跨越了所有可用的 dbspace。表和索引可以驻留在不同的 dbspace 中。为了更好地理解,一个常规 dbspace 被命名为 Index Dbspace,您可以选择在这个 dbspace 中创建索引。您还可以选择在根 dbspace 中创建数据库(尽管这不是一个很好的应用)。在图 9 中,Database 2 驻留在 Root Dbspace 中。

下面的代码将向 userDbSpace 添加一个块: Onspaces -a -d UserdbSpace -p /work/database/chunk3 -o 0 -s 4096000 . 关于 dbspaces 和向 dbspaces 添加块(chunk)的更多信息,请参见 IDS v10.0 Information Center


备份和恢复

DB2 中的备份是一个数据库以及控制信息的副本,可以用于恢复错误事件。数据库备份可以最小化数据的损失并使您能够使用恢复进程从备份副本中重新构建错误的数据库。IDS 中的备份复制了一个或多个 dbspace、blobspace、spspace 和 Informix 实例的逻辑日志和物理日志。

在 DB2 中使用 BACKUP 命令进行数据库备份:

BACKUP DATABASE sample ONLINE TO /dev/rdir1, /dev/rdir2

在 IDS 中,有两种名为 ontape 和 onbar 的实用工具。

ontape 实用工具是 Informix 备份和恢复实用工具的较老版本,后者被设计为和两个本地连接备份设备一起使用(一个用于实例备份,另一个用于逻辑日志备份)。从 IDS v10 开始,ontape 操作可以被定向到标准输入或标准输出设备( “standard in” 或 “standard out”,STDIO),因此为很多选项提供了支持。

onbar 备份实用工具有两个组件:onbar API 和存储管理器。Onbar API 是由 X/Open Organization 定义的 Open Systems Backup Services Data Movement (XBSA) API 客户机组件的 Informix 实现。

ontape 实用工具可以串行化备份 dbspace,而 onbar 可以并行备份 dbspace。

图 10. IDS 中的备份实用工具
IDS 中的备份实用工具

日志类型

  • 活动日志:只要满足下列两个条件中的任意一个,则可认为日志是活动的:
    • 该日志包含该日志包含没有提交或回滚的事务
    • 该日志包含已提交但尚未刷新到数据库磁盘(外部化)的事务。
  • 联机归档日志; 这些日志包含已提交并外部化的事务的信息。和活动日志位于同一目录。
  • 脱机归档日志: 归档日志从活动日志所在目录移动到其他目录或媒体中即为脱机归档日志。可以手工或自动进行移动。

除了上面讨论的日志,IDS 还把日志分类为逻辑日志和物理日志。可是使用 DB2 中的 LOGPRIMARY 和 LOGSECONDARY 数据库配置参数定义日志文件的数量。在 IDS 中,可以通过设置配置参数 LOGFILES 完成此操作。和 DB2 中的 LOGSECONDARY 相似,IDS 提供了动态记录日志选项。可以通过设置配置参数 DYNAMIC_LOGS 启用该选择。要了解更多关于日志类型的内容,请参考 参考资料 一节中的 DB2 和 IDS 信息中心。

日志机制

IDS 和 DB2 具有相似的日志机制。下面将简要介绍这两种类型的机制:

  • 循环日志: 循环日志是 DB2 的默认日志模式。正如其名字所暗示的一样,这种类型的日志可以以循环模式重用日志。例如,如果具有 4 种主要日志,将按照这样的顺序使用:Log #1、Log #2、Log #3、Log #4、Log #1、Log #2 等等。只要日志中包含关于已经提交并外部化到数据库磁盘上的事务的信息,就可以以循环日志的形式重用该日志。换而言之,如果日志仍然是活动日志,那么就不能重用该日志。 在 IDS 中,始终以循环的方式使用逻辑文件。然而,可以对这些逻辑文件进行备份以用于日后恢复。可以将逻辑文件备份到 LTAPEDEV 配置参数中说明的路径。
  • 归档日志: 当使用归档日志时,将对日志进行归档(保留)操作。然而在循环日志中将改写被提交和外部化的事务,以及为它们保留的归档日志。例如,如果具有 4 个主要日志,可能按这样的顺序使用:Log #1、Log #2、Log #3、Log #4、(如果 Log #1 的所有事务都被提交并外部化,那么将对 Log #1 归档)、Log #5、(如果 Log #2 的所有事务都被提交并外部化,那么将对 Log #2 归档)、Log #6 等等。通过将数据库配置参数 LOGRETAIN 设置为 ON 可启用归档日志。 IDS 将日志文件归档到包内,配置参数 LTAPEDEV 为之指定一个有效的路径或设备。如果该参数值为空,则表示日志没有被归档。

备份机制

现在了解一下 DB2 和 IDS 中不同类型的备份机制。

  • 离线备份: 离线备份是 DB2 9 和 IDS 中最简单的一种备份形式。如果使用离线备份,当数据库离线时,将对整个数据库备份。换而言之,在离线备份期间,不允许用户访问数据库。在 IDS 的离线备份中,数据库服务器切换到 Quiescent 模式。在此模式下,用户不能够访问数据库服务器。下面给出了在 DB2 中进行离线备份,以及在 IDS 中的 Quiescent 模式下备份的例子:
    In DB2(windows)
    backup database sample to c:\backup
    
    In IDS 
    ontape -s -L 0 (Level 0 backup)
    onbar -b -L 0
  • 在线备份: 即使应用程序和数据库处于连接状态,也可进行在线备份。为了实现在线备份,在 DB2 中必须启用归档日志。在 IDS 中,即使在循环日志机制下,对在线备份也没有严格的要求。除了对数据库备份外,在 DB2 中还可进行表空间级的备份,在 IDS 中可以进行 dbspace 备份。在 IDS 中,对整个数据库进行备份被称为 0 级备份,而在 DB2 中称为完全备份。在 DB2 中,完全备份应该是一个离线备份。而在 IDS 中,甚至在在线状态下也可进行 0 级备份。

    In DB2 
    backup database sample tablespace( syscatspace, userspace1,userspace2 ) 
    online to /db2tbsp/backup1, /db2tbsp/backup2
    In IDs onbar -b rootdbs, userdbs1, userdbs5
  • 增量备份: DB2 和 IDS 都支持增量备份。增量备份就是对最近一次数据库全备份以来所有修改了的数据进行备份。在 IDS 中,增量备份又被称作 1 级备份。
    图 11. 增量备份
    增量备份
    In DB2
    (Sun) backup db mydb from c:\backup
    (Mon) backup db mydb online incremental from c:\backup
    (Tue) backup db mydb online incremental from c:\backup
    
    In IDS 
    ontape -s -L 1 (Level 1 backup)
    onbar -b -L 1
  • Delta 备份: Delta 备份是对最近一次成功的备份(包括全备份、增量备份和 delta 备份)以来被修改了的数据的备份。delta 备份也被称为 2 级备份。
    Figure 12. Delta 备份
    Delta 备份
    In DB2
    (Sun) backup db mydb from c:\backup
    (Mon) backup db mydb online incremental delta from c:\backup
    (Tue) backup db mydb online incremental delta from c:\backup
    
    In IDS 
    ontape -s -L 2 (Level 2 backup)
    onbar -b -L 2

数据库恢复

在 DB2 中,可以使用恢复实用工具进行数据库恢复。在 IDS 中,可以使用 ontape 或 onbar 实用工具以及 -r 选项。恢复实用工具使用一个备份文件作为输入,并使用一个新的或现有的数据库作为输出。在 DB2 和 IDS 中,可以对完整的数据库进行恢复,也可以对表空间(在 IDS 中为 dbspace )进行恢复。在 IDS 中,可以恢复 dbspace、物理日志和逻辑日志。要省略从备份中恢复的逻辑文件,需要使用 -p 选项。如果只对逻辑文件进行恢复,需要使用 -l 选项。IDS 和 DB2 都允许增量恢复。

下面给出了完全恢复、增量恢复、表级和 dbspace 级恢复的例子。

完全恢复
In DB2
restore database sample from c:\backup taken at 20060314131259 
without rolling forward without prompting

In IDS
ontape -r  
onbar -r
增量恢复
In DB2
restore database mydb incremental taken at 20060414131259

In IDS 
In case of ontape, it would prompt the user to insert any 
incremental or delta backups to be restored.
表空间和 dbspace 级恢复
In DB2
restore database sample tablespace( mytblspace1 ) online from 
/db2tbsp/backup1, /db2tbsp/backup2

In IDS
Onbar  -r   userdbs1,  userdbs5

数据库前滚

前滚 命令允许指定时间点(point-in-time)恢复。这意味着该命令可以使您遍历 DB2 日志,并且可以重做/取消日志中记录的操作,从而恢复到特定的时间点。在 IDS 中要做到这一点,可通过使用 -p 选项只对 dbspace 和物理日志进行恢复。然后再使用 -l 选项进行其他恢复。注意这些操作需要按照一定顺序进行。如果使用 onbar 实用工具,可以回滚到某个时间点或任何一个特定的日志。在 IDS 中,onbar 实用程序支持指定时间点回滚恢复和指定日志恢复。

In DB2

rollforward  database sample to end of logs and complete
rollforward  database sample to timestamp and complete 
rollforward  database sample to timestamp using local time and complete 

In IDS
onbar   -r    -t     time  
onbar   -r    -l     logid

安全特性

DB2 和 IDS 安全模型都由两个主要组件组成:身份验证和授权。

图 13. DB2 安全模型
DB2 安全模型

DB2 身份验证

身份验证就是使用一种安全机制验证所提供的用户 ID 和密码的过程。用户和组的身份验证是使用一种 DB2 之外的设施进行管理的,例如操作系统、域控制器或者 Kerberos 安全系统,这种身份验证方式与其他数据库管理系统(DBMS)如 Oracle 和 SQL Server 不同,在其他数据库管理系统中,数据库本身以及诸如操作系统等外部设施对用户帐户进行定义和身份验证。在连接时如果没有提供用户凭证,DB2 将使用用来登录到发出请求的工作站的用户 ID 和密码。

默认情况下,建立一个实例,它将使用用于所有实例级和连接级请求的一种身份验证类型。数据库管理器配置参数 AUTHENTICATION 对此做了指定。Version 9 中引入了数据库管理器参数 SRVCON_AUTH。该参数专门处理与数据库的连接。所以,举例来说,如果在 DBM CFG 中具有如下设置:

DB2 GET DBM CFG
Server Connection Authentication (SRVCON_AUTH) = KERBEROS
Database manager authentication (AUTHENTICATION) = SERVER_ENCRYPT

连接到该实例将使用 SERVER_ENCRYPT。然而,与数据库的连接将使用 KERBEROS 身份验证。如果没有为服务器正确地初始化 KERBEROS,但是提供了一个有效的用户 ID 和密码,那么将允许用户连接到实例,但是不允许连接到数据库。

下面的表总结了 DB2 中可以的身份验证类型。在一个客户机-网关-主机环境中,这些身份验证选项是在客户机和网关上设置的,而不是在主机上设置的。

表 3. DB2 中的身份验证类型
类型描述
SERVER在服务器上进行身份验证。
SERVER_ENCRYPT在服务器上进行身份验证。密码在发送到服务器之前先在客户机上进行加密。
CLIENT在客户机上进行身份验证。
*KERBEROSKerberos 安全软件执行身份验证。
*KRB_SERVER_ENCRYPT如果客户机设置为 KERBEROS,则使用 Kerberos 安全软件执行身份验证。否则使用 SERVER_ENCRYPT 进行身份验证。
DATA_ENCRYPT在服务器上进行身份验证。服务器接收加密过的用户 ID 和密码,并且对数据进行加密。除了还要对数据进行加密外,其操作和 SERVER_ENCRYPT 相同。
DATA_ENCRYPT_CMP这种身份验证方式和 DATA_ENCRYPT 相同,唯一不同的是这种模式允许不支持 DATA_ENCRYPT 模式的较老用户使用 SERVER_ENCRYPT 身份验证进行连接。这种情况下数据没有被加密。如果客户机连接支持 DATA_ENCRYPT ,将强制加密数据,并且不会退回到 SERVER_ENCRYPT 认证。这种认证类型只在服务器的数据库管理器配置文件中是有效的,当在客户机或网关实例的 CATALOG DATABASE 命令中使用是无效的。
GSSPLUGIN可以使用一个外部 GSS-API 插件对身份验证进行控制。
GSS_SERVER_ENCRYPT可以使用一个外部 GSS-API 插件对身份验证进行控制。如果客户机不支持服务器的 GSS-API 插件中的一种,将使用 SERVER_ENCRYPT 身份验证类型。

*这些设置只有在 Windows 2000、AIX、Solaris 和 Linux 操作系统下是有效的。

IDS 安全机制

图 14. IDS 安全模型
IDS 安全模型

IDS 认证

在 IDS 中,有 4 个用于身份验证的选项,如图 4 所示。下面对每一种选项进行了简要说明:

表 4. IDS 安全机制
方法属性说明
OS 用户 ID 不进行加密,使用 OS 密码查找 IDS 始终使用这种基本的身份验证。这种技术为每一个连接到 DBMS 的用户使用 OS 用户 ID 和密码。用户或应用程序提交用户 ID 和密码,DBMS 使用一个 OS 库函数验证密码。如果 OS 函数表明 OS 的用户 ID 和密码集中没有该用户 ID 和/或密码,那么将拒绝用户连接到 DBMS。
密码加密使用 OS 用户 ID ,但是在传输过程对密码进行加密。IDS 支持从应用程序向数据库服务器传输密码时对密码进行加密。要实现此目的,需要对客户机和服务器各自的 SQLHOSTS 文件或注册表以及 conscm.cfg 文件配置密码加密。
Pluggable Authentication Model (PAM) 用户提供的身份验证方法使用 PAM 的身份验证使您能够编写自己的方法来对用户进行认证。可以从来自第三方的可用模块中选择 PAM。组成 PAM 的库文件通常驻留在 $INFORMIXDIR/lib 中,PAM 的配置文件位于 $INFORMIXDIR/etc 中。concsm.cfg 文件都对这些文件进行了引用。
Lightweight Directory Access Protocol (LDAP)用户提供的对 LDAP 目录的访问LDAP 使您能够在 LDAP 服务器上集中管理用户帐户。使用 LDAP 将不再需要在数据库服务器机器上创建用户帐户。

权限和特权

授权是这样一个过程:它为提供的用户 ID 确定关于特定数据库对象和操作的访问和权限信息。DB2 在内部存储和维护用户和组的授权信息。每次提交一个命令时,DB2 将执行授权检查以确保您具有正确的权限集来执行操作。

DB2 使用五种不同级别的权限来控制用户对实例或数据库执行管理和维护操作。这五种级别是:

  • System Administrator (SYSADM) 权限
  • System Control (SYSCTRL) 权限
  • System Control (SYSCTRL) 权限
  • System Maintenance (SYSMAINT) 权限
  • Database Administrator (DBADM) 权限
  • Load (LOAD) 权限

特权是用来将在特定数据库资源上执行某种操作的权利授予单个用户或组用户。DB2 中,有两种不同的特权类型:数据库特权和对象特权。

数据库特权应用在整个数据库中,对于大多数用户来说,其行为如同在第二个安全检查点通过验证的标识,在提供对数据的访问之前必须要清除该检查点。和应用于整体数据库的数据库特权不同,对象特权只应用在数据库内特定的对象。这些对象包括模式、表空间、表、索引、视图、包、例程、序列、服务器和昵称。

IDS 不同于 DB2,它包含预定义的权限。在数据库级别上授予这些权限。如果一个用户被授予这些权限中的一种,该用户将获得一组特权。下面列出了这些权限。

  • 连接特权
  • 资源特权
  • DBA 特权

DBA 特权将授予所以资源特权以及维护数据库系统所需的所有其他特权。这和 DB2 中的 DBADM 权限有些相像。这是 IDS 中数据库访问的最高特权级别。

为易于理解,下面列出了其中一些 DB2 和 IDS 特权。想要了解更详尽的列表,请参考 DB2 Information Center

表 5. 特权
DB2IDSRemarks
CONNECT连接特权允许用户访问数据库。要对数据库进行任何访问,用户至少要有一个连接特权。
CREATETAB
CREATE_EXTERNAL_ROUTINE
CREATEIN
资源特权 授权所有连接特权,并且允许用户创建新表、索引和过程。
CREATETAB
LBAC
表级和列级特权可以访问特定表并且数据库管理员可以控制表内的列。表的创建者或具有资源特权或 DBA 权限的用户可以创建表。数据库管理员可以授权所有不同表级的特权,如选择、插入、删除、更新、索引、更改、引用等。

除此之外,IDS 还允许用户创建特定于数据库的用户组,称之为 角色。当创建角色后,将用户分配到该角色并进一步授予角色权限。在 IDS 中,在数据库级别定义角色。


锁机制

为改善并发性,DB2 和 IDS 结合使用了锁和隔离级别。

锁是一种用来将数据资源与单个事务关联起来的机制,其用途是当某个资源与拥有它的事务关联在一起时,控制其它事务如何与该资源交互。(我们称与被锁定的资源关联的事务持有或拥有该锁。)DB2 数据库管理器和 IDS 用锁来禁止事务访问其它事务写入的未提交数据(除非使用了未提交的读隔离级别),并禁止其它事务在拥有锁的事务使用限制性隔离级别时对这些行进行更新。事务一旦获取了锁,则在终止之前,就一直持有该锁;该事务终止时释放锁,其它事务就可以使用被解锁的数据资源了。

在 DB2 中,锁可以放置在数据库对象如表空间、表和行中。IDS 允许应用程序开发人员将锁放在不同的对象上,如数据库、表、页或行、以及索引。

锁类型

锁具有几种不同的类型,下面列出了其中一些。要了解更多关于锁的内容,请参考 参考资料 一节中的 DB2 和 Informix 信息中心。

  • Intent None (IN)
  • Exclusive (X)
  • Update (U)
  • Super Exclusive (Z)

锁属性

所有锁具有如下的基本属性:

  • 对象: 标识被锁定的数据资源。DB2 数据库管理器在需要时锁定数据资源(如表空间、表和行)。
  • 大小: 指定要锁定的数据资源部分的物理大小。锁并不总是必须控制整个数 据资源。例如,DB2 数据库管理器可以让应用程序独占地控制表中的特定行,而不是 让该应用程序独占地控制整个表。
  • 持续时间: 指定了锁被持有的时间长度。事务的隔离级别通常控制了锁 的持续时间。
  • 方式: 指定了锁的拥有者所允许的访问类型,以及对锁定数据资源的并发用 户许可的访问类型。这个属性通常称为锁状态。

锁定升级

所有的锁都要求存储空间。因为可用的存储空间不是无限制的,DB2 数据库管理器必须限制可用于锁的空间数量。可以通过 maxlock 数据库配置参数实现此目的。在 IDS 中,可以通过设置 LOCKS 配置参数进行控制。为了防止某个特定的数据库代理超出设置的锁空间限制,当获得大量锁时,将自动执行称为锁定升级的进程。IDS 还提供了一个选项动态增加获得的锁的数量。


工具和实用程序

包含在 DB2 和 IDS 中的工具提供了既省时又可减少错误发生的图形化界面。大量的工具可以帮助 DBA 和应用程序开发人员完成各自的任务。这里只重点介绍其中一些工具:常见的数据移动和数据维护实用工具。

DB2 Control Center

Control Center 是用来管理 DB2 服务器的。它为您提供了实例和数据库的概观,并允许您在 DB2 中执行大部分的数据库操作。正如在图 15 中看到的一样,左面的面板(对象窗格)展示了本地和远程系统中的三种结构,右面的面板(内容窗格)提供了所选的具体项的更多详细内容。

图 15. DB2 Control Center
DB2 Control Center

Informix Server Administrator (ISA)

ISA 是基于 Web 的跨平台的数据库服务器管理工具,用于监视多个 Informix 服务器。ISA 可以用来检查 Informix 实例配置、显示 Informix 实例的存储信息、显示 VP 的信息,还可以用来添加和创建 dbspace,以及监视 Informix 服务器的性能。

图 16. Informix Server Administrator (ISA)
Informix Server Administrator (ISA)

更多工具

下面将对其他工具进行简要说明:

  • Configuration Assistant: 一个 DB2 工具,可用于建立客户机/服务器之间的通信并维护注册表变量,除此之外它还可以执行更多工作。
  • Configuration Advisor: 对数据库进行调整以获得最佳性能是一个非常困难的任务。DB2 配置参数在决定性能方面起到非常重要的作用,它们可以影响数据库或数据库管理器的操作特性。DB2 Configuration Advisor 向导为数据库管理员提供了一个很好的起点,对能够做出改善的配置参数进行初始设置(如果需要的话)。要了解该主题的更多文章,请参考 参考资料 一节。
  • Developer Workbench: DB2 9 引入了一种全新的免费应用程序开发工具,这个工具叫做 DB2 Developer Workbench (DWB),它是基于 Eclipse 框架的。DWB 是用于创建、编辑、调试、部署和测试 DB2 存储过程和用户定义函数的一站式中心。还可以使用 DWB 开发 SQLJ 应用程序,并创建、编辑和运行 SQL 语句和 XML 查询。
  • Onmonitor: IDS 中的 Onmonitor 实用工具可用来创建一个 Informix 实例、修改或查看 Informix 实例的配置、创建 dbspaces、向 dbspace 添加块以及检查数据库信息。
  • Onperf: IDS 中的图形化监视工具。Onperf 实用工具可以用来执行例程系统监视和性能监视。

数据移动实用工具

数据移动工具是用来将数据从一个数据库移动到另一个数据库,或将数据从一个环境中移动到另一个环境(比如从测试环境移动到生产环境)。可以从一个数据库卸载或导出数据,然后再将数据导入或加载到另一个数据库。DB2 的 EXPORT、IMPORT 和 LOADData 实用工具可用于此目的。在 IDS 中,这些工具分别被称为 dbexport、dbimport 和 dbload 实用工具。

和上面提到的实用工具不同,DB2 提供了 db2move 实用工具来将全部数据从一个数据库移动到另一个数据库,db2look 实用工具可以生成 DDL 和统计信息。DDL 可被用来在另一个数据库中创建数据库对象,从而复制数据库结构。和这些工具不同,IDS 提供了 High Performance Loader (HPL) 使用工具,可以从 ASCII 文件中卸载和加载数据。

数据维护实用工具

数据被物理地分布到跨多个表空间容器,这种方式对访问数据的应用程序执行方式产生重大影响。DB2 和 IDS 使用目录表中的统计信息来制定最佳访问计划。

要对 DB2 中所有表或一组表的统计信息进行更新,可使用 REORGCHK 命令以及 UPDATE STATISTICS 选项。在 IDS 中,使用 UPDATE STATISTICS 命令更新统计信息。

db2pd 和 onstat

DB2 提供了一个名为 db2pd 的实用工具,用于收集 DB2 实例和数据库的统计信息。db2pd 提供了 20 多个选项显示关于数据库事务、表空间、表统计信息、动态 SQL、数据库配置和其他很多数据库细节的信息。单个 db2pd 命令可以检索多个领域的信息,并把结果保存到文件中。也可以在特定时期内调用该工具一定的次数,帮助您了解随着时间的变化数据库中的变动情况。该工具可用于故障检修、问题确定、数据库监控、性能调优和帮助应用程序的开发设计。要了解更多信息,请参考 参考资料 一节。

Onstat 是一个 IDS 实用工具,当执行此命令时,可读取共享内存结构或片段并打印和 IDS 相关的诊断信息。onstat 实用工具可用来监视 IDS 的性能,它提供了很多选项可用于查看磁盘读写操作、缓冲区使用情况的信息、用户级监视信息、CPU 统计信息、和 LRU 队列相关的信息、网络级统计信息,还可用于分析锁。

结束语

本文简要讨论了 DB2 和 Informix 的不同方面,例如编辑、体系结构、进程、内存模型、数据库和存储模型。您还了解了如何在 DB2 和 Informix 中进行备份和恢复。现在您应该能够开始利用 RDBM 技能深入研究 DB2 和 Informix ,并对其进行实验。建议您阅读更多不同的文章并使用这两种产品来获得更深层次的知识。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=203883
ArticleTitle=如何综合掌握 DB2 和 Informix
publish-date=01252007