DB2的数据库分区DPF(Database Partitioning Feature)功能是shared nothing架构的数据处理方案,它可以有效地利用单机多核,多机MPP的并行处理能力,是面向数据仓库和商业智能方面应用的最佳选择。
本文介绍在单机内创建多分区数据库的方法,多机的环境稍有不同,它需要所有节点共享一个实例用户的home目录。
1、创建实例
使用/opt/ibm/db2/<version>/instance/db2isetup图形向导创建实例db2inst1时,指定多分区,然后下一步指定分区数量,这里定义最多八个分区。
创建完后,查看/etc/services文件,能看到对应的端口范围:
DB2_db2inst1 60000/tcp
DB2_db2inst1_1 60001/tcp
DB2_db2inst1_2 60002/tcp
DB2_db2inst1_3 60003/tcp
DB2_db2inst1_4 60004/tcp
DB2_db2inst1_5 60005/tcp
DB2_db2inst1_6 60006/tcp
DB2_db2inst1_END 60007/tcp
2、配置本机用户db2inst1的ssh无密码登录
$ ssh-keygen -t rsa
$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys
3、设定DB2环境变量DB2RSHCMD
$ db2set DB2RSHCMD=/usr/bin/ssh -i
4、编辑$HOME/sqllib/db2nodes.cfg
0 db2serv 0
1 db2serv 1
这里只定义了两个分区
5、启动实例
[db2inst1@db2serv ~]$ db2start
01/11/2015 17:37:58 1 0 SQL1063N DB2START processing was successful.
01/11/2015 17:37:59 0 0 SQL1063N DB2START processing was successful.
SQL1063N DB2START processing was successful.
从提示信息可以看到有两个DB2START成功了。
6、创建数据库
$ mkdir /home/db2inst1/testdb
$ db2 create database testdb on /home/db2inst1/testdb
7、访问数据库
访问数据库前,请务必设置DB2NODE变量,如果没有缺省为第一个分区
[db2inst1@db2serv ~]$ export DB2NODE=1
[db2inst1@db2serv ~]$ db2
db2 => connect to testdb
Database Connection Information
Database server = DB2/LINUXX8664 10.5.3
SQL authorization ID = DB2INST1
Local database alias = TESTDB
db2 => list tablespace containers for 2
Tablespace Containers for Tablespace 2
Container ID = 0
Name = /home/db2inst1/testdb/db2inst1/NODE0001/TESTDB/T0000002/C0000000.LRG
Type = File
对比一下DB2NODE=0的表空间容器信息:
db2 => list tablespace containers for 2
Tablespace Containers for Tablespace 2
Container ID = 0
Name = /home/db2inst1/testdb/db2inst1/NODE0000/TESTDB/T0000002/C0000000.LRG
Type = File
区别在于NODE0000和NODE0001两个目录
[db2inst1@db2serv db2inst1]$ pwd
/home/db2inst1/testdb/db2inst1
[db2inst1@db2serv db2inst1]$ ls
NODE0000 NODE0001
[db2inst1@db2serv db2inst1]$