|
前段时间用vmware加linux配置了db2的多分区环境来作一些试验和研究,顺便把安装过程也记录下来了,供有兴趣的同志们参考。
如果没有充足的硬件资源,其实用vmware来配置多分区环境作研究和学习是个不错的选择,而且vmware还可以很容易的克隆出另外一台机,省去了很多安装和配置过程,你还可以把你的虚拟机拷贝到移动硬盘上带着到处走,方便的很啊。
Linux我用了redhat 9和redhat el as4,都可以,而且还可以一个分区用redhat9,一个分区用redhat el as4,没问题,只是redhat el as4的配置要稍微麻烦点。
以下用两台虚拟机都是redhat 9为例来说明:
环境
Host OS:Windows XP SP2 (P42.5G,1G mem)
Vmware Workstation 5.5.1 build-19175
虚拟机Linux:
redhat1(192.168.49.128):Redhat 9(Linux redhat1 2.4.20-8 #1 Thu Mar 13 17:54:28 EST 2003 i686 i686 i386 GNU/Linux)
redhat2(192.168.49.129):Redhat 9(Linux redhat1 2.4.20-8 #1 Thu Mar 13 17:54:28 EST 2003 i686 i686 i386 GNU/Linux)
操作步骤:
0.在Windows上安装vmware workstation,并创建一个Redhat Linux的虚拟机redhat1,网络选Bridge方式,内存配了512M。
1.安装虚拟机上安装OS。
2.将rsh和nfs服务改为自动启动
vi /etc/xinetd.d/rsh,将disable改为no
vi /etc/xinetd.d/rlogin,将disable改为no
vi /etc/hosts
127.0.0.1 localhost.localdomain localhost (不能包含redhat1,缺省是有的,千万记得改这里,偶可是折腾了半天才找到这里的问题,详见后面注意事项)
192.168.49.128 redhat1
192.168.49.129 redhat2
service xinetd restart
3.新增用户和组
[root@redhat1 root]# groupadd -g 1000 db2grp1
[root@redhat1 root]# groupadd -g 2000 db2fenc1
[root@redhat1 root]# groupadd -g 3000 dasgrp1
[root@redhat1 root]# useradd -u 1001 -g db2grp1 -m -d /home/db2inst1 db2inst1 -p password
[root@redhat1 root]# useradd -u 2001 -g db2fenc1 -m -d /home/db2fenc1 db2fenc1 -p password
[root@redhat1 root]# useradd -u 3001 -g dasgrp1 -m -d /home/dasusr1 dasusr1 -p password
[root@redhat1 root]# passwd db2inst1
[root@redhat1 root]# passwd db2fenc1
[root@redhat1 root]# passwd dasusr1
4.安装DB2产品,若有补丁,则打补丁
[root@redhat1 root]# ./db2_install
此安装将以rpm方式安装db2产品,但不做任何配置(偶推荐这种方式,简单快捷),安装目录是/opt/IBM/db2/V8.1
添加license(自己找哦):
[root@redhat1 root]$ /opt/IBM/db2/V8.1/adm/db2licm -a /mnt/cdrom/db2/license/db2ese.lic
5.克隆另一台虚拟机
利用vmware的克隆功能克隆出另一台虚拟机redhat2,ip地址改为192.168.49.129,主机名改为redhat2
6.在redhat1上创建实例和配置db2inst1
[root@redhat1 root]# /opt/IBM/db2/V8.1/instance/db2icrt -a SERVER -s ese -u db2fenc1 db2inst1
[root@redhat1 root]# /opt/IBM/db2/V8.1/cfg/db2ln
在/etc/service文件中添加一行:
db2c_db2inst1 50000/tcp #DB2 connection service port
[root@redhat1 root]# su - db2inst1
[db2inst1@redhat1 db2inst1]$ db2 "update dbm cfg using SVCENAME db2c_db2inst1"
[db2inst1@redhat1 db2inst1]$ db2 "update dbm cfg using dftdbpath /db2data/database"
[db2inst1@redhat1 db2inst1]$ db2set DB2COMM=TCPIP
[root@redhat1 root]# /opt/IBM/db2/V8.1/instance/dascrt -u dasusr1
SQL4406W The DB2 Administration Server was started successfully.
DBI1070I Program dascrt completed successfully.
[root@redhat1 root]# xhost +
access control disabled, clients can connect from any host
[root@redhat1 root]# su - db2inst1
[db2inst1@redhat1 db2inst1]$ db2cc
控制中心可正常运行
7.配置NFS:
在redhat1(NFS server):
vi /etc/exports,添加一行:
/home/db2inst1 redhat2(rw,no_root_squash,sync)
service nfs restart
在redhat2(NFS client):
vi /etc/fstab,添加一行:
redhat1:/home/db2inst1 /home/db2inst1 nfs rw,timeo=300,retrans=5,hard,intr,bg,suid
测试NFS:
在redhat2上:
[root@redhat2 root]# showmount -e redhat1
Export list for redhat1:
/home/db2inst1 redhat2
[root@redhat2 root]# mount /home/db2inst1
8.配置rsh:
在redhat1上:
su - db2inst1
vi $HOME/.rhosts
redhat1 db2inst1
redhat2 db2inst1
在redhat2上:
su - db2inst1
vi $HOME/.rhosts
redhat1 db2inst1
redhat2 db2inst1
测试rsh:
rsh redhat1 date
rsh redhat2 date
rlogin redhat1
rlogin redhat2
9.配置redhat2的DB2环境
redhat2的db2是通过NFS共享redhat1的/home/db2inst1实例目录,故redhat2不用创建db2实例,只要
修改/etc/services文件:
DB2_db2inst1 60000/tcp
DB2_db2inst1_1 60001/tcp
DB2_db2inst1_2 60002/tcp
DB2_db2inst1_END 60003/tcp
db2c_db2inst1 50000/tcp
10.配置多分区
vi /home/db2inst1/sqllib/db2nodes.cfg
0 redhat1 0
1 redhat1 1
2 redhat2 0
3 redhat2 1
创建了共4个分区,每台机两个逻辑分区。
vi /home/db2inst1/.profile,添加如下一行:
. /home/db2inst1/sqllib/db2profile
验证db2_all:
db2_all date
11.启动实例
db2start
12.创建数据库
db2 create database test
注意事项:
1、缺省在db2inst1的home目录下没有.profile文件,但是db2_all脚本会找$HOME/.profile文件设置db2环境,所以要手工创建这个文件,内容就是:
. /home/db2inst1/sqllib/db2profile
2、一定要将/etc/hosts文件中127.0.0.1中对应的主机名去掉(缺省是有的)
[db2inst1@redhat1 ~]$ netstat -an|egrep "6000|5000"
tcp 0 0 192.168.49.128:60000 0.0.0.0:* LISTEN
tcp 0 0 192.168.49.128:60001 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:50000 0.0.0.0:* LISTEN
确保60000和60001端口前是对外的IP地址而非localhost或127.0.0.1
这个非常重要,我就是因为hosts中127.0.0.1包含了redhat1,所以此处侦听的是127.0.0.1:60000,创建多分区数据库时失败,报错:
SQL1229N The current transaction has been rolled back because of a system error. SQLSTATE=40504
在db2diag.log中有fcm的错,郁闷了好久,直觉上应该是分区间通讯的问题,第二天不知哪里来的灵感,将redhat1从127.0.0.1这行中去掉,搞定。 |
|