IBM 多伦多实验室
2003 年 1 月
您习惯于通过图像进行直观学习吗?这篇有关 DB2 的图解简介将会使您在学习 DB2 环境的主要概念方面节省一些时间。
简介
如果对于 IBM® DB2® Universal Database™(UDB)for Linux、UNIX® 和 Windows®,您还是位新手,或者您正准备参加认证考试,那么本文可能会使您在设法掌握有关 DB2 环境的主要概念方面节省一些时间。
常言道:一图抵千言。尽管 DB2 认证指南(Certification Guide)为您备考作了大量工作,但是它没有为您提供图解形式的 DB2 概述。请在阅读认证指南之前先阅读本文,我相信这会大大地缩短您的准备时间。
在本文中,我使用 DB2 来指代 DB2 通用数据库 V8.1 for UNIX、Linux 和 Windows。我建议您打印本文(使用彩色打印机!)而不要联机阅读,因为我将一直引用下面这张图。首先会简略地说明一下概念,然后在最后一节中我们会使用 案例研究把这些概念都串起来。
在 图中,我们使用蓝色来表示用于查询配置文件内容的命令,用黑色来表示更改这些内容的语法,并用紫色来显示有关如何使用命令的示例。
图 1 - DB2 V8 环境在 DB2 中, 实例提供了独立的环境,可在其中创建数据库对象并针对这些对象运行应用程序。由于这些环境是独立的,所以两个或更多的单独实例的对象可以有相同的名称。在 图 1中,有一个名为“MYDB2”的数据库,它与实例“DB2”相关;还有一个同名的数据库,但它与实例“MyInst”相关。实例允许用户具有用于生产、测试和开发目的的不同环境。
以下是一些与实例相关的命令:
- 通过从命令行处理器(CLP)发出下列命令来显式地创建实例:
db2icrt <instance name>在 Windows 平台上首次安装 DB2 时,缺省情况下会创建一个称为“DB2”的实例。在 UNIX 环境中,如果您选择创建实例,那么缺省的实例名称为“db2inst1”。
- 要删除实例,请使用这条命令:
db2idrop <instance name> - 要启动实例,请使用这条命令:
db2start - 要停止实例,请使用这条命令:
db2stop
创建了实例后,就会生成到 DB2 代码的链接。对于 图 1中的示例而言,已创建了实例“DB2”和实例“MyInst”,两者都链接至同一段 DB2 代码。
V8 之前,曾有两种实例类型:“DB2”类型和“DAS”类型。V8 中已经除去了 DAS 类型的实例;它的功能已经被作为服务器进程集成到产品中了。
和许多其它关系数据库管理系统(RDBMS)一样,DB2 使用不同的机制来管理、监视和控制 DB2 系统的行为。这些机制包括:
环境变量
环境变量是在操作系统级别上定义的变量。例如,在 Windows 2000® 平台中,您可以为一个变量创建新的项,或者通过选择 Control Panel --> System --> Advanced Tab --> Environment Variables
来编辑现有变量的值。在 UNIX 中,您通常可以将安装了 DB2 之后所提供的脚本 db2profile (Bourne 或 Korn shell)或 db2cshrc (C shell)添加到 .login 或 .profile UNIX 初始化文件中。 db2profile/db2cshrc 文件包含了“export”UNIX 命令,这些命令能确保每次调用 shell 时就传递一个 UNIX 环境变量。
最常使用的 DB2 环境变量是“DB2INSTANCE”变量。该环境变量允许您指定当前活动实例,所有命令都将应用于该实例。对于本例而言,如果将 DB2INSTANCE 设置成“MyInst”,那么发出命令“ create database mydb ”会创建出与实例“MyInst”相关的数据库。但是如果您想创建与实例“DB2”相关的该数据库,那么首先您必须将 DB2INSTANCE 变量的值更改成“DB2”。
使用控制面板(在 Windows 中)/db2profile(在 UNIX 中)来设置环境变量的值,将保证您下次打开窗口/会话时该值不变;但是,如果您想在给定的窗口/会话中临时更改该值,那么在 Windows 中您可以使用操作系统的“ set ”命令,或者在 UNIX 中使用“export”命令。例如,在 Windows 平台中,下面这个命令:
set DB2INSTANCE=DB2
会将环境变量 DB2INSTANCE 的值设置成“DB2”。使用 set 命令时常犯的错误是在等号(=)前后留有空格。绝对不能有空格!
要查看该变量的当前设置,您可以使用下面三个方法中的任何一个:
echo %DB2INSTANCE% (Windows only) set DB2INSTANCE db2 get instance
要获取系统中您可以执行的所有可用实例的列表,请发出下面这个命令:
db2ilist
DB2 概要注册表
在 Windows 平台上使用 DB2 时,单词“注册表(Registry)”的使用往往会造成混淆。DB2 概要注册表(Profile Registry)变量与 Windows 注册表变量没有任何关系。过去,对某些环境变量进行更改时,会要求用户重新引导机器。如果所有 DB2 变量都已被定义成环境变量,那么对变量值进行更改将会很麻烦。因此,当时决定将大多数 DB2 变量组成一个专门的 DB2 注册表,在其中进行更改无需重新引导机器。
DB2 概要注册表分成四类;但是下面这两个是最常用的:
- DB2 全局级概要注册表(Global-Level Profile Registry)
- DB2 实例级概要注册表(Instance-Level Profile Registry)
两者的主要区别(您从它们的名称就可以看出)是变量适用的级别。全局级概要注册表变量的值适用于所有实例。因此,可以从图中看到,该注册表画在了两个实例框的外面。实例级概要注册表变量的值适用于特定的实例。因此,您可以看到 图中那两个实例每个内部都有单独的“Instance-Level Profile Registry”框。
要查看所设置的当前注册表变量,请从 CLP 发出下面这个命令:
db2set -all
您可能会得到类似下面这样的输出:
[i] DB2INSTPROF=C:\PROGRAM FILES\SQLLIB [g] DB2SYSTEM=RAULCHONG
正如您可能已经猜测到的那样,[i] 表明该变量是在实例级上定义的,而 [g] 表明它是在全局级上定义的。以下是一些与变量相关的命令:
- 要查看可以在 DB2 中进行定义的所有注册表变量,请使用这个命令:
db2set -lr - 要在全局级上设置特定变量(在这个示例中为
DB2INSTPROF)的值,请使用:db2set DB2INSTPROF="C:\PROGRAM FILES\SQLLIB" -g - 要在实例级上为实例“MyInst”设置变量,请使用:
db2set DB2INSTPROF="C:\MY FILES\SQLLIB" -i MyInst

