资源规划
组件 | LTSR001 |
---|---|
OS | centos7.6 |
DB2 | db2 |
安装介质
版本:db2v10.5_linux_x86_64_expc.tar.gz
下载:https://www.yuque.com/polaris-docs/bigdata/db2-download
安装DB2
切换超级用户
sudo su
解压
cd /home/bigdata/software/
tar -xvf db2v10.5_linux_x86_64_expc.tar.gz -C /usr/local/
依赖安装
yum install -y librdmacm ibsim ibutils libcxgb3 libibmad libibumad libipathverbs libmthca libnes libibcm numactl
系统检测
进行系统检测,看有没有缺失的文件库。
cd /usr/local/expc
./db2prereqcheck
问题1:“**Required minimum C++ library: “libstdc++.so.5”**”
解决方法:
yum whatprovides libstdc++.so.5
yum install compat-libstdc++-33
问题2:“DBT3514W The db2prereqcheck utility failed to find the following 32-bit library file: “/lib/libpam.so*”.”
解决方法:
find / -name libpam.so*
yum install -y pam*
安装
./db2_install -f sysreq
db2的安装路径默认(/opt/ibm/db2/${DB2_VERSION}),输yes/是(保持默认)即可。
配置DB2
第1步:创建组和用户
注意:DB2并没有独立的用户管理系统,必须借用OS用户来提供安全性认证,所以这里需要创建LINUX用户和组。
# 新增组
groupadd -g 976 db2iadm1
groupadd -g 975 db2fadm1
groupadd -g 974 dasadm1
groupadd -g 973 db2agrp
# 新增用户
useradd -u 670 -g db2iadm1 -m -d /home/db2inst1 db2inst1
useradd -u 671 -g db2fadm1 -m -d /home/db2fenc1 db2fenc1
useradd -u 672 -g dasadm1 -m -d /home/dasusr1 dasusr1
useradd -g db2agrp -u 803 -d /home/db2das -m -s /bin/sh db2das
# 删除组
groupdel db2fadm1
groupdel db2iadm1
groupdel dasadm1
groupdel db2agrp
# 删除用户
userdel db2inst1
userdel db2fenc1
userdel dasusr1
userdel db2das
验证:
# 创建完成后,执行如下命令,检查用户组和用户是否创建成功
# 组
more /etc/group |grep -E 'db2iadm1|db2fadm1|dasadm1|db2agrp'
# 用户
more /etc/passwd |grep -E 'db2inst1|db2fenc1|dasusr1|db2das'
设置用户密码:
# db2inst1 (密码:db2inst1)
passwd db2inst1
# db2fenc1 (密码:db2fenc1)
passwd db2fenc1
# dasusr1 (密码:dasusr1)
passwd dasusr1
# db2das (密码:db2das)
passwd db2das
第2步:创建实例
cd /opt/ibm/db2/V10.5/instance
./dascrt -u db2das
./db2icrt -u db2fenc1 db2inst1
# 查看实例
./db2ilist
# 启动实例
su - db2inst1
db2start
第3步:配置DB2
1. 设置DB2开机自启动
cd /opt/ibm/db2/V10.5/instance
./db2iauto -on db2inst1
2. 配置网络
su - db2inst1
# 修改DB2的服务端口为50000,默认端口50000
db2 update dbm cfg using SVCENAME 50000
# 查看SVCENAME
db2 get dbm cfg|grep SVC
tcp服务设置:
查看db2是否开启tcp服务(默认没有开启) ,修改DB2连接方式为TCPIP,然后可通过JDBC、ODBC等访问本DB2服务器上的数据库,安装了DB2客户端的其它机器也可访问数据库。
cat /etc/services | grep db2
db2set DB2COMM=TCPIP
3. 参数配置
db2的参数非必选项,可以按照需求进行设置。(注意:修改完配置后需要重启数据库才能生效)
# 查看所有配置
db2set -all
# 开启扩展优化
db2set DB2_EXTENDED_OPTIMIZATION=ON
# 开启禁用刷新日志
db2set DB2_DISABLE_FLUSH_LOG=ON
# 开启自动启动
db2set AUTOSTART=YES
# 开启集装箱
db2set DB2_STRIPED_CONTAINERS=ON
# 开启哈希连接
db2set DB2_HASH_JOIN=YES
# 使用TCP/IP
db2set DB2COMM=TCPIP
# 所有的都启动并行IO
db2set DB2_PARALLEL_IO=*
# 二进制代码采用那个数值
db2set DB2CODEPAGE=1208
常用操作
切换实例用户
su - db2inst1
启动实例
db2start
关闭实例
db2 terminate
db2stop
# 强行停止
db2 force application all
查看运行状态
db2pd -
查看数据库列表
db2 list db directory
查看数据库信息(补丁版本)
db2level
查看挂载
df -h
创建数据库
su - db2inst1
db2start
db2 create database deskdb
db2 create database deskdb using codeset utf-8 territory cn
mkdir -p /data/db2
chown db2inst1:db2iadm1 /data/db2
db2 create db deskdb on /data/db2 dbpath on /home/db2inst1 using codeset utf-8 territory cn
# 激活数据库(显式激活)
db2 "list active databases"
db2 activate db deskdb
设置数据库密码
创建数据库用户
# 切换到root用户
groupadd -g 694 db2odesk
分配权限
useradd -g db2odesk -u 594 -d /home/db2odesk -m -s /bin/sh db2odesk
more /etc/group |grep db2odesk
more /etc/passwd |grep db2odesk
设置密码
# db2odesk (密码:531.Desk)
passwd db2odesk
数据库用户权限赋值
su - db2inst1
db2 connect to deskdb
db2 grant dbadm on database to group db2odesk
root权限赋值
# 切换到root用户
vi /etc/group
修改如下:
db2iadm1:x:976:root
db2fadm1:x:975:root
dasadm1:x:974:root
db2agrp:x:973:db2inst1,root
表空间管理
查看表空间
su - db2inst1 db2 connect to deskdb db2 list tablespaces show detail
创建表空间
# 创建表空间 db2 create tablespace TBS_OTH_DAT managed by automatic storage db2 create tablespace TBS_OTH_IDX managed by automatic storage # 删除表空间 db2 drop tablespace TBS_OTH_DAT db2 drop tablespace TBS_OTH_IDX
扩展页大小
# 创建缓冲池(size表示页数,pagesize表示页大小,size*pagesize就是缓冲池的内存大小) db2 create bufferpool bp16k size 1000 pagesize 16k # 先删除之前创建的表空间(注意:确保目录为空) rm -rf /data/db2/TBS_OTH_DAT rm -rf /data/db2/TBS_OTH_IDX rm -rf /data/db2/TBS_TEMP chown -R db2inst1:db2iadm1 /data/db2 db2 "create tablespace TBS_OTH_DAT pagesize 16k managed by database using(file '/data/db2/TBS_OTH_DAT' 10G) bufferpool bp16k" db2 "create tablespace TBS_OTH_IDX pagesize 16k managed by database using(file '/data/db2/TBS_OTH_IDX' 1G) bufferpool bp16k" db2 "create TEMPORARY tablespace TBS_TEMP pagesize 16k managed by database using(file '/data/db2/TBS_TEMP' 1G) bufferpool bp16k"
编目
# DB2编目也可以使用db2控制中心配置(db2ca,本地需安装DB2客户端并开启服务) db2 catalog tcpip node vpndb remote 10.8.0.101 server 50000 db2 catalog db deskdb as DESKVPN at node vpndb
验证
进入终端
su - db2inst1 db2start db2 connect to deskdb db2 connect to deskdb user db2odesk using 531.Desk
查看库表
# 查看有哪些数据库 db2 list db directory # 查看有哪些用户表 # 默认模式下(DB2ODESK) db2 list tables # 指定模式下 db2 list tables for schema BASE # 查看表结构 db2 describe table BASE.SINK_AIQACHS # 取前n行数据 db2 "select * from BASE.SINK_AIQACHS fetch first 10 rows only"
创建库表
-- 清理库表 DROP TABLE BASE.SINK_AIQACHS; -- 创建库表 CREATE TABLE BASE.SINK_AIQACHS ( aco_ac VARCHAR(32) NOT NULL, cus_ac VARCHAR(32), ac_nme VARCHAR(64), stl_typ VARCHAR(128), sac_typ VARCHAR(128) )in TBS_OTH_DAT; -- 设置主键 alter table BASE.SINK_AIQACHS add constraint aco_ac_pk primary key(aco_ac);
重命名表名
# 注意to后面的名称不能带模式名 db2 rename table BASE.SINK_AIQACHS to SINK_AIQACHS_NEW
执行脚本
db2 -tvf db2.sql
导出表结构
db2look -d deskdb -t BASE.SINK_AIQACHS -e -o BASE.SINK_AIQACHS.sql