已知问题和解决方案:
(1)在某些情况下,在删除了原先的instance以后,不能创建同名的instance。
错误是sqllib目录已经存在,即使删除也不管用.可以把instance用户的home目录设成不可读不可写,然后再创建instance有时可以成功。
rsh必须在每台机器的instance用户下都要配置。
这样要保证从环境中的任何一台机器的instance用户都可以通过rsh访问其他任何一台机器的instance用户的命令。
rsh的配置参见SMP中配置rsh
db2nodes.cfg是配置多partition的关键配置文件.位置一般在instance用户的$HOME/sqllib/.文件格式是:
<logic port> <hostname> <logic port>
<logic port> <hostname> <logic port>
<logic port> <hostname> <logic port>
...
建立几个partition的MPP或SMP Cluster环境,就在里面配几行。
示例:
0 volvo 0
1 volvo 1
2 toyota 0
3 acadia 0
4 acadia 1
5 acadia 2
这是一个DB2 SMP Cluster的db2nodes.cfg,其中volvo,toyota,acadia都是环境中的机器名。
这个文件在volvo上2个 partition,在toyota上1个partition,在acadia上3个partition。
第一列的数字是整个环境的logic port不能重复。第三列的数字是在那台机器的instance上的logic port可以重复。
每台机器上的配置都必须相同。
假使一个4个partition的instance。
至少需要使用root用户在/etc/services中配置以下端口:
DB2c_<instance name> 61000/tcp
DB2_<instance name> 61001/tcp
DB2_<instance name>_1 61002/tcp
DB2_<instance name>_2 61003/tcp
DB2_<instance name>_3 61004/tcp
DB2_<instance name>_4 61005/tcp
DB2_<instance name>_END 61008/tcp
其中,DB2c_<instance name>是定义给db manager用的.还需要使用:
db2 update dbm cfg using SVCENAME DB2c_<instance name>
定义到数据库的dbm的参数中.
而DB2_<instance name>到DB2_<instance name>_END,是用来给每个partition用的.后一个必须是前一个加1。
每台机器上都要配置
使用db2 instance用户:
db2set DB2COMM=TCPIP
配置完以上的选项,数据库至少应该可以正常启动。
[instpt@acadia script]$ db2start
06/28/2007 22:32:57 1 0 SQL1063N DB2START processing was successful.
06/28/2007 22:32:58 3 0 SQL1063N DB2START processing was successful.
06/28/2007 22:32:58 0 0 SQL1063N DB2START processing was successful.
06/28/2007 22:32:58 2 0 SQL1063N DB2START processing was successful.
SQL1063N DB2START processing was successful.
配置DPF考虑若干场景:
1 一台物理机单个分区 最简单的单机单数据库环境。
2 一台物理机两个分区
3 两台物理机四个分区 配置同2。
4 三台物理机六个分区 配置同2。
所以介绍配置场景2和3的方法。
===============================
准备工作:
1、检查系统配置
补丁升级、系统时间设置。
每台机器的操作系统必须完全相同,包括位数、小版本号和补丁,如果有任何一台机的操作系统版本不同,即使是细微不同,都有可能造成许多奇怪的错误。
每台机器都必须安装完全相同的DB2版本。
2、启用远程shell程序
对于数据库分区环境,DB2需要一个远程shell程序来在远程分区上执行命令。
在DB28.2之前,rsh被默认为远程shell机制,用于分区间的通信。OPENSSH用于替代rsh,以便在不安全的通道上提供有安全保障的通信。为支持一个受安全保障的环境,在数据库分区环境中,应该使用openSSH,而不是rsh。
检测rsh服务:使用实例用户运行 rsh <hostname> date #hostname是机器名 正常情况下返回机器时间。
3、设置NFS
对于一个数据分区配置,必须有一个可供所有参与分区数据库系统的机器使用的文件系统。
这个文件系统将用于DB2实例的home目录。容纳DB2实例的机器被称为instance-owning机器。为了共享该文件系统,必须配置NFS。NFS盘需要mouont到所有机器上。
4、创建新用户和组
4.1 instance用户和fenced用户的home目录必须建立在NFS盘上,而且必须是NFS盘上的同一个目录。
推荐创建新的DB2 instance用户和组,而不用安装DB2时默认创建的用户 组,至少创建2个用户和2个组。
4.2 在所有机器上,建立db2 admin server : dascrt -u <db2 admin user>
启动 db2 admin server:db2admin start
4.3 在node0所在机器上,创建fenced user和instance user:db2icrt -u <fenced user> <instance user>
可能的问题和解决方法:
(1)在某些情况下,删除了原先的instance以后,不能创建同名的instance,错误时sqllib目录已经存在。几时删除也不管用。
可以把instance用户的home目录设成不可读不可写,然后再创建instance有时可以成功。
(2)rhs必须在每台机的instance用户下都要配置,保证从环境中的任何一台机器的instance用户都可以通过rsh访问其他任何一台机器的instance用户的命令。
场景2的配置(一台物理机两个分区)
1、查看系统配置
prtconf|more
如:power6, 4processors, 内核64bit,内存15G,主机名***,vg有rootvg/datavg/dbvg。
oslevel -s
如:6100-04-01-0944
2、查看NFS是否运行(对于一台机的环境其实不需要)
lssrc -g nfs
rpc.statd active
rpc.lockd active
3、查看已有用户
cat /etc/passwd
db2fenc1,db2inst1,db2inst2,db2inst3
4、查看DB2版本
su - db2inst1
db2level
DB2 v9.5.0.5
5、用smit去掉用户db2inst2,用rm -r删除目录/db2home/db2inst2
6、用smit重建实例用户db2inst2
userID:212
primary group:db2udb
group set:db2udb,staff,dasadm1
home directory:/db2home/db2inst2(创建实例时自动认为该目录为实例目录)
记得设置密码!(passwd db2inst2)
7、用root用户新建实例
#/opt/IBM/db2/V9.5/db2icrt -u db2fenc1 db2inst2
8、验证可用端口
cat /etc/services
DB2_db2inst2 60008/tcp
DB2_db2inst2_1 60009/tcp
DB2_db2inst2_2 60010/tcp
DB2_db2inst2_END 60011/tcp
9、配置远程rsh,哪个用户需要远程执行rsh命令就在自己的home目录下建立.rhosts文件。
例如对db2inst2用户,用db2inst2创建:vi /db2home/db2inst2/.rhosts
添加:hostname instance_owner_user_name
但用rsh hostname date检验说permission denied。改为+。但在生产环境中不得用这个。
10、配置节点,用db2inst2更改/db2home/db2inst2/sqllib/db2nodes.cfg为:
0 hostname 0
1 hostname 1
11、设置tcp/ip通信
root用户修改/etc/services: db2_conn 50000/tcp
db2set DB2COMM=tcpip
db2 terminate
db2 update dbm cfg using svcename db2_conn
12、启动实例,创建分区的数据库
db2start
db2 "create db reportdb on /db2data(数据库目录) using codeset gbk territory cn pagesize 16 k"
则在/db2data下创建db2inst2目录,里面有两个节点NODE0000、NODE0001,每个节点里有一个数据库的分区REPORTDB,里面有三个系统自建的表空间。