DB2数据库安装

安装DB2数据库

环境

CentOS 7
DB2 Express-C v10.1 (db2_v101_linuxx64_expc.tar.gz)

安装DB2

1. 解压安装包

1
tar -zxvf db2_v101_linuxx64_expc.tar.gz -C /opt

2. 执行安装
db2_install 默认安装目录为 /opt/ibm/db2, 可以通过 -b指定安装目录, -h 帮助

1
2
3
su -              # root用户
cd /opt/expc # 进入安装目录
./db2_install # 以root用户安装DB2

安装实例

1. 创建实例相关用户
在Linux/Unix上创建实例时必须有与实例同名用户存在;
实例用户的home目录,是创建实例的位置;
受防护用户(db2fenc1)与应用开发相关,但是作为创建实例却是必须的。

1
2
3
4
5
# root用户执行以下命令
groupadd -g 2000 db2iadm1 # 实例用户组
groupadd -g 2001 db2fadm1 # 受防护组
useradd -m -u 2000 -g db2iadm1 db2inst1 # 实例用户
useradd -m -u 2001 -g db2fadm1 db2fenc1 # 受防护用户

2. 实例安装
可以直接键入 ./db2icrt 获取命令帮助信息;
Linux/Unix下 /home/实例用户/sqllib/ 目录为实例目录,实例目录一旦创建不能更改其位置。

1
2
3
# root用户执行以下命令
cd /opt/ibm/db2/V10.1/instance # 实例安装目录
./db2icrt -p 50000 -u db2fenc1 db2inst1 # 实例安装-p <端口号> -u <受防护用户> <实例用户>

安装数据库

使用db2实例用户创建数据库
1. 创建数据库目录

1
2
3
4
su -                                    # root用户
mkdir /data/db2/data # 创建数据库目录
mkdir /data/db2/log # 创建数据库事物日志目录
chown -R db2inst1:db2inst1 /data/db2/ # 赋权给 db2实例用户

2. 创建数据库

1
2
3
4
5
6
7
8
9
su - db2inst1                           # db2inst1用户   
db2start # 启动实例
# 创建数据库
db2 "create database test
automatic storage yes on /data/db2/data
dbpath on /data/db2/log
using codeset utf-8
territory CN
pagesize 8 k"

配置 DB2运行环境

可以通过引用 InstanceHome/sqllib/db2profile 文件来配置其他用户 DB2 运行环境
在用户目录下 .bash_profile 文件中加入如下配置

1
2
3
if [ -f /home/db2inst1/sqllib/db2profile ]; then
. /home/db2inst1/sqllib/db2profile
fi

配置 DB2服务器的 TCP/IP通信

1. 标识 “服务名称”和 “连接端口” 或 仅标识 ”连接端口”

  • 方式一: 标识 ”连接服务名称” 和 “连接端口”

在 数据库管理器配置文件 中的 SVCENAME(服务名)指定 “服务名称”

1
2
db2 get dbm cfg | grep SVCENAME #获取当前数据库管理器配置文件中服务名
db2 update dbm cfg using SVCENAME db2inst1 #设置数据库管理器配置文件中服务名为: db2inst1

在 /etc/services 配置文件中添加与修改后服务名称一致的对应端口号

1
db2inst1    50000/tcp

  • 方式二: 仅标识 “连接端口”
1
db2 update dbm cfg using SVCENAME 50000

2. 设置服务器的通信协议

1
db2set DB2COMM=tcpip

配置 DB2 客户端通信

节点目录

1
2
3
4
5
6
-- 列出节点
db2 list node directory
-- 编目节点
db2 catalog tcpip node <node_name> remote <host_name | ip> server <port_name | port>
-- 删除节点
db2 uncatalog node <node_name>

数据库目录

1
2
3
4
5
6
-- 列出数据库
db2 list db directory
-- 编码数据库
db2 catalog db <db_name> as <db_alias> at node <node_name>
-- 删除数据库
db2 uncatalog db <db_alias>