说明:使用root用户进行操作。

资源规划

组件 LTSR001
OS centos7.6
DB2 db2

安装介质

版本:db2v10.5_linux_x86_64_expc.tar.gz
下载:https://www.yuque.com/polaris-docs/bigdata/db2-download

安装DB2

切换超级用户

  1. sudo su

解压

  1. cd /home/bigdata/software/
  2. tar -xvf db2v10.5_linux_x86_64_expc.tar.gz -C /usr/local/

依赖安装

  1. yum install -y librdmacm ibsim ibutils libcxgb3 libibmad libibumad libipathverbs libmthca libnes libibcm numactl

系统检测

进行系统检测,看有没有缺失的文件库。

  1. cd /usr/local/expc
  2. ./db2prereqcheck

问题1:“**Required minimum C++ library: “libstdc++.so.5”**”
解决方法:

  1. yum whatprovides libstdc++.so.5
  2. yum install compat-libstdc++-33

问题2:“DBT3514W The db2prereqcheck utility failed to find the following 32-bit library file: “/lib/libpam.so*”.
解决方法:

  1. find / -name libpam.so*
  2. yum install -y pam*

安装

  1. ./db2_install -f sysreq

db2的安装路径默认(/opt/ibm/db2/${DB2_VERSION}),输yes/是(保持默认)即可。

配置DB2

第1步:创建组和用户

注意:DB2并没有独立的用户管理系统,必须借用OS用户来提供安全性认证,所以这里需要创建LINUX用户和组。

  1. # 新增组
  2. groupadd -g 976 db2iadm1
  3. groupadd -g 975 db2fadm1
  4. groupadd -g 974 dasadm1
  5. groupadd -g 973 db2agrp
  6. # 新增用户
  7. useradd -u 670 -g db2iadm1 -m -d /home/db2inst1 db2inst1
  8. useradd -u 671 -g db2fadm1 -m -d /home/db2fenc1 db2fenc1
  9. useradd -u 672 -g dasadm1 -m -d /home/dasusr1 dasusr1
  10. useradd -g db2agrp -u 803 -d /home/db2das -m -s /bin/sh db2das
  11. # 删除组
  12. groupdel db2fadm1
  13. groupdel db2iadm1
  14. groupdel dasadm1
  15. groupdel db2agrp
  16. # 删除用户
  17. userdel db2inst1
  18. userdel db2fenc1
  19. userdel dasusr1
  20. userdel db2das

验证:

  1. # 创建完成后,执行如下命令,检查用户组和用户是否创建成功
  2. # 组
  3. more /etc/group |grep -E 'db2iadm1|db2fadm1|dasadm1|db2agrp'
  4. # 用户
  5. more /etc/passwd |grep -E 'db2inst1|db2fenc1|dasusr1|db2das'

设置用户密码:

  1. # db2inst1 (密码:db2inst1)
  2. passwd db2inst1
  3. # db2fenc1 (密码:db2fenc1)
  4. passwd db2fenc1
  5. # dasusr1 (密码:dasusr1)
  6. passwd dasusr1
  7. # db2das (密码:db2das)
  8. passwd db2das

第2步:创建实例

  1. cd /opt/ibm/db2/V10.5/instance
  2. ./dascrt -u db2das
  3. ./db2icrt -u db2fenc1 db2inst1
  4. # 查看实例
  5. ./db2ilist
  6. # 启动实例
  7. su - db2inst1
  8. db2start

第3步:配置DB2

1. 设置DB2开机自启动

  1. cd /opt/ibm/db2/V10.5/instance
  2. ./db2iauto -on db2inst1

2. 配置网络

  1. su - db2inst1
  2. # 修改DB2的服务端口为50000,默认端口50000
  3. db2 update dbm cfg using SVCENAME 50000
  4. # 查看SVCENAME
  5. db2 get dbm cfg|grep SVC

tcp服务设置:
查看db2是否开启tcp服务(默认没有开启) ,修改DB2连接方式为TCPIP,然后可通过JDBC、ODBC等访问本DB2服务器上的数据库,安装了DB2客户端的其它机器也可访问数据库。

  1. cat /etc/services | grep db2
  2. db2set DB2COMM=TCPIP

3. 参数配置

db2的参数非必选项,可以按照需求进行设置。(注意:修改完配置后需要重启数据库才能生效

  1. # 查看所有配置
  2. db2set -all
  3. # 开启扩展优化
  4. db2set DB2_EXTENDED_OPTIMIZATION=ON
  5. # 开启禁用刷新日志
  6. db2set DB2_DISABLE_FLUSH_LOG=ON
  7. # 开启自动启动
  8. db2set AUTOSTART=YES
  9. # 开启集装箱
  10. db2set DB2_STRIPED_CONTAINERS=ON
  11. # 开启哈希连接
  12. db2set DB2_HASH_JOIN=YES
  13. # 使用TCP/IP
  14. db2set DB2COMM=TCPIP
  15. # 所有的都启动并行IO
  16. db2set DB2_PARALLEL_IO=*
  17. # 二进制代码采用那个数值
  18. db2set DB2CODEPAGE=1208

常用操作

  • 切换实例用户

    1. su - db2inst1
  • 启动实例

    1. db2start
  • 关闭实例

    1. db2 terminate
    2. db2stop
    3. # 强行停止
    4. db2 force application all
  • 查看运行状态

    1. db2pd -
  • 查看数据库列表

    1. db2 list db directory
  • 查看数据库信息(补丁版本)

    1. db2level
  • 查看挂载

    1. df -h

    创建数据库

    1. su - db2inst1
    2. db2start
    3. db2 create database deskdb
    4. db2 create database deskdb using codeset utf-8 territory cn
    5. mkdir -p /data/db2
    6. chown db2inst1:db2iadm1 /data/db2
    7. db2 create db deskdb on /data/db2 dbpath on /home/db2inst1 using codeset utf-8 territory cn
    8. # 激活数据库(显式激活)
    9. db2 "list active databases"
    10. db2 activate db deskdb

    设置数据库密码

  • 创建数据库用户

    1. # 切换到root用户
    2. groupadd -g 694 db2odesk
  • 分配权限

    1. useradd -g db2odesk -u 594 -d /home/db2odesk -m -s /bin/sh db2odesk
    2. more /etc/group |grep db2odesk
    3. more /etc/passwd |grep db2odesk
  • 设置密码

    1. # db2odesk (密码:531.Desk)
    2. passwd db2odesk
  • 数据库用户权限赋值

    1. su - db2inst1
    2. db2 connect to deskdb
    3. db2 grant dbadm on database to group db2odesk
  • root权限赋值

    1. # 切换到root用户
    2. vi /etc/group

    修改如下:

    1. db2iadm1:x:976:root
    2. db2fadm1:x:975:root
    3. dasadm1:x:974:root
    4. 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