独辟蹊径:在 UNIX 平台上安装 DB2 V8.1 的另一种方法
作者:Philip Nelson
摘自:IDUG Journal
2004 年 1 月
本文描述在不使用“db2setup”命令的情况下(“DB2 Quick Beginnings”手册中就是使用这个命令),如何在 UNIX 平台上安装和配置 DB2 Version 8.1。为什么不使用标准方法呢?至少有两个很好的理由:
Version 8.1 中的“db2setup”实用程序要求具有 X 窗口环境,因为该实用程序是一个图形化的、基于 Java 的应用程序。您也许不想只是因为要安装数据库就在数据库服务器上安装 X。或者可以像我那样,为那些使用 SSH(secure shell)命令行接口的客户机安装远程的数据库软件。这样虽然可以通过 SSH 远程地运行 X,但是速度非常慢。
“db2setup”实用程序要处理安装的方方面面。因此,如果想安装一个稍微有点不同的组件,或者换一种安装实用程序,那么就不能使用“db2setup”了。在 Linux 环境中更是如此,因为这种环境中并不是所有的发布都使用 Red Hat Package Manager(RPM)安装系统。
虽然这里介绍的安装过程要复杂得多,但是毕竟这种方法提供了一定程度的灵活性,这是使用“db2setup”时不可能达到的。这种方法还带来了另一大好处,那就是允许我们洞察 DB2 基础的工作原理。
在本文中,我们将重点关注在 Linux 上安装 DB2 V8.1 Personal Edition,这里的 Linux 发行版本既有 Mandrake 9 (基于 RPM),也有 Debian “Woody”(基于 DEB)。但是,要转换这些安装说明,以便用于其他的 UNIX 平台或者其他版本的 DB2,也是相当容易的事情。
而如果使用的是 Microsoft Windows,会怎么样呢?我想您肯定会问这样的问题。如果这样,那么对于标准的图形化安装程序是没有替代方法的。
软件安装
为 UNIX 系统安装 DB2 的第一个任务是安装系统软件。这里有两种选择:
如果我们有一个基于 RPM 的 Linux 系统(或者想在其他平台上使用标准的安装实用程序),并且喜欢纯英语的系统,那么我们可以使用“db2_install”命令。
如果我们没有基于 RPM 的 Linux 系统(或者想在其他平台上使用非标准的安装工具),或者您需要非英语版本的系统,那么必须手动地安装每个 DB2 包。
使用“db2_install”
“db2_install”脚本位于安装介质的根目录下(与“db2setup”在同一个目录)。这是一个基于文本的安装过程,用于安装一套标准的(纯英语)组件。输入下列一行,以便从其所在位置运行该脚本:
./db2_install
此脚本首先检测操作系统的类型,然后从目录 db2/<os>>(例如 db2/linux)运行一个特定于操作系统的“db2_install”。接着,该脚本请求输入一个给定列表中的适当字符串,以选择 DB2 版本。在这里,我们选择 DB2.PE。之后该脚本将完成系统软件的安装。
我们可以控制安装过程的某些方面,例如安装的位置,方法是更改这个特定于操作系统的脚本。通过更改默认的位置,我们还可以安装非英语版本的系统。不过一般来说,除非有绝对的必要去作更改,否则最好还是使用脚本中的默认设置。
手动的包安装
如前所述,如果我们想要使用非标准的安装实用程序,或者想要安装非英语版本的系统,那么就必须手动地安装各个包。
所有供安装的包都存放在特定于操作系统的目录下(例如 db2/linux)。对于所有的语言来说,大部分包都是标准的,不过还是有三套包有其独特的语言版本:Control Center Help、Java Help 和 Product Messages。这些包的包文件格式为:
IBM_db2chxx81-8.1.0-0.i386.rpm : Control Center Help
IBM_db2jhxx81-8.1.0-0.i386.rpm : Java Help
IBM_db2msxx81-8.1.0-0.i386.rpm : Product Messages
其中 xx 是语言代号(例如,en 表示英语,es 表示西班牙语,等等)。
如果使用的是标准的 RPM 安装实用程序,那么使用标准的 RPM 安装命令(rpm -Uvh rpmfile)来安装与语言无关的包和其中一个特定于语言的包。
如果要在一个非 RPM Linux 的系统(例如 Debian)上进行安装,那么使用“alien”命令将 RPM 转换为 Debian 包。这一过程可能要花费较长的时间,因此明智的做法是只转换那些想要安装的包(即,不是转换所有特定于语言的文件)。最简单的方法是将想要安装的包复制到一个临时目录中,然后运行以下脚本:
#!/bin/bash
cd /
for f in /temp/directory/*.rpm
do
alien -d $f
done
这将产生一套 .deb (Debian 安装)文件,接着可以使用以下面的命令来安装这些文件:
dpkg -i filename.deb
虽然可以直接使用 alien 命令转换和安装所有的文件(通过在上述脚本中指定一个附加的 -i 选项),但更安全的做法是首先转换所有的文件,然后手动地安装每个文件。一旦这一过程完全通过了测试,并且确信在将 .rpm 转换为 .deb 格式的过程当中没有错误发生,那么整个过程就可以自动运行了。
这样便结束了系统软件的安装。
配置数据库服务器
一旦安装好了系统软件,我们就需要执行大量的配置任务,这些任务通常都是由“db2setup”在“幕后”完成的:
创建实例和管理服务器用户 ID 。
创建实例和管理服务器。
创建到 DB2 共享库的链接。
在系统启动时自动启动实例。
在本文中,我们假设已经将系统软件安装到标准安装目录中,并且想要创建一个实例 db2inst1 和一个管理服务器。
创建用户 ID
我们使用以下标准操作系统命令来创建用户 ID 及其相关的组:
groupadd db2grp1
groupadd db2fgrp1
groupadd dasadm1
useradd -g db2grp1 -m -d /home/db2inst1 -p password db2inst1
useradd -g db2fgrp1 -m -d /home/db2fenc1 -p password db2fenc1
useradd -g dasadm1 -m -d /home/dasusr1 -p password dasusr1
当然,我们不会将密码设置为像“password”(或“ibmdb2”,或者其他类似的内容)这样明显的内容。
创建实例
首先我们使用以下命令创建管理服务器实例:
/opt/IBM/db2/V8.1/instance/dascrt -u dasusr1
接着使用以下命令创建数据库实例 db2inst1:
/opt/IBM/db2/V8.1/instance/db2icrt -u db2fenc1 db2inst1
这个命令有一些可选的参数。特别地,-a 选项允许我们指定一个不同于缺省的“SERVER”的认证机制。
创建共享库链接
这一步通过在标准库路径内产生到 DB2 共享库的链接,使得这些 DB2 共享库在系统范围内可用。如果在服务器上安装了 DB2 的早期版本,那么在这一步应该小心一点,因为这一步将替换到早期版本的链接。这些链接主要是用于应用程序开发。但是我们发现,如果没有正确地设置这些链接的话,就会碰到与某些附带软件有关的问题。我们还特别发现,除非对这些链接进行了设置,否则用 TSM(Tivoli Storage Manager)来进行备份和恢复并不会像正常情况下那样有效。
要设置库链接,可以使用以下命令:
/opt/IBM/db2/V8.1/cfg/db2ln
安排自动的实例启动
与 DB2 的早期版本相比,在系统启动阶段自动启动 DB2 实例的过程已经发生了改变。先前是通过使用 inittab 运行一个名为 /etc/rc.db2 的脚本来按要求启动实例。而现在不这样了。相反,现在是从 inittab 运行一个名为“DB2 Fault Monitor Coordinator”(db2fmcd)的守护程序(daemon):下面一行应该放在 /etc/inittab 的底部:
fmc:2345:respawn:/opt/IBM/db2/V8.1/bi n/db2fmcd # DB2 Fault Monitor Coordinator
这本身并不会启动任何实例。要启动实例,必须以 DB2 实例所有者的身份运行以下命令来设置每个 DB2 实例的实例变量:
db2set DB2AUTOSTART=YES
这样就完成了 DB2 服务器的基本配置。如果您不想只是因为要启动新创建的实例就重新启动计算机,那么只需使用“db2start”从命令行启动新实例。
结束语
我们已经看到,在没有图形化工具,甚至不使用标准包管理器的情况下,仍然可以在 UNIX 平台上安装可以运行的 DB2 服务器。在实现了使 DB2 在标准安装情况下不可用的地方变为可用这一主要目标的同时,我们还得以洞察 DB2 安装过程的内部工作原理,而在以前这么有用的洞察我们都只能白白错过。
到页首
关于作者
Philip Nelson 是 Scottish Widows PLC 公司的高级 DBA,Scottish Widows PLC 是英国一家金融服务公司。他在公司里负责 z/OS 和 DB2 UDB(在 AIX 和 Solaris 平台上)的 DB2 日常管理工作。他还是 ScotDB Limited 的一名负责人,ScotDB Limited 是一家数据库咨询公司,专门从事 DB2 UDB 这一块,尤其是 Linux 下的 DB2 UDB。他从 1989 年就开始使用 DB2,并且从 1995 年开始与分布式平台上的 DB2 UDB 打交道。可以通过 teamdba@scotdb.com 或 www.scotdb.com 与他联系