zoukankan      html  css  js  c++  java
  • Docker打DB2 9.7镜像采坑相关

    概况:以centos:7.2.1511镜像为基础镜像,使用docker commit方式进行构建
     
    步骤:
    1. 运行centos7.2.1511镜像(以特权模式运行,后续内核参数修改必需参数)
        docker run -it --privileged centos:7.2.1511 /bin/bash
            2.拷贝db2安装包进镜像中
        docker cp v9.7_linuxx64_server.tar.gz 容器id:/usr/local
            3.镜像内操作
    • 解压安装包
        tar -xzvf v9.7_linuxx64_server.tar.gz
    • 进入解压后目录server
        cd server
    • 检查安装环境
        ./db2prereqcheck
    • 环境缺失信息
        * WARNING:
        *    The 32 bit library file libstdc++.so.6 is not found on the system.
        *    32-bit applications may be affected.  
        * ERROR:
        *    The required library file libaio.so.1 is not found on the system.
        *    Check the following web site for the up-to-date system requirements
        *    of IBM DB2 9.7
    • 解决方法
        * yum install -y libstdc++
        * yum install -y libstdc++.so.6
        * yum install -y libaio
    • 安装db2
        ./db2_install
     
        要选择另一个目录用于安装吗?[yes/no]
        --输入no默认安装opt下,选择yes自己输入安装目录
        指定下列其中一个关键字以安装 DB2 产品
        --输入ESE
        ESE
        正在初始化 DB2 安装。……
        • 出错点,共48步,安装到第41步或第36步Hangup
              Task #41 start
              Description: Starting DB2 Fault Monitor
              Estimated time 10 second(s)
              Hangup
        • PS:若47步左右出现一个小error可以忽略,不影响
        • 解决方法(修改内核参数):
          • 带--privileged运行容器,然后修改内核参数
            docker run -t -i --net=host -v /db2disk:/db2disk --privileged centos_db2ese_v1.1 /bin/bash
            vi /etc/sysctl.conf
            kernel.shmmni = 65536
            kernel.shmmax = 274877906944
            kernel.shmall = 134217728
            kernel.sem = 250 1024000 32 65536
            kernel.msgmni = 262144
            kernel.msgmax = 65536
            kernel.msgmnb = 65536
            vm.dirty_background_ratio = 5
            vm.dirty_ratio= 10
            vm.overcommit_memory= 0
            vm.swappiness= 0 #如果是redhat,建议设置为5,
            否则很有可能在内存不足时OOM killer可能会杀掉DB2进程
            执行sysctl -p使参数在线生效
            执行ipcs -l查看操作系统内核参数设置
             
            ------ Messages Limits --------
            max queues system wide = 668
            max size of message (bytes) = 8192
            default max size of queue (bytes) = 16384
             
            ------ Shared Memory Limits --------
            max number of segments = 4096
            max seg size (kbytes) = 18014398509465599
            max total shared memory (kbytes) = 18014398442373116
            min seg size (bytes) = 1
             
            ------ Semaphore Limits --------
            max number of arrays = 128
            max semaphores per array = 250
            max semaphores system wide = 32000
            max ops per semop call = 32
            semaphore max value = 32767
             
      • 查看注册信息,若出现试用期则安装成功,若出现
            /opt/ibm/db2/V9.7/adm/db2licm -l
        •   安装 license
          • db2licm -l命令可以查看到db2的license信息。可以找一个永久的license添加到db2数据库即可,把db2ese_c.lic放到一目录下: 
                /opt/ibm/db2/V9.7/license/db2ese_c.lic,在/opt/ibm/db2/V9.7/adm/目录下执行:./db2licm -a /opt/ibm/db2/V9.7/license/db2ese_c.lic
             
    • 创建实例用户
        groupadd -g 901 db2iadm1
        groupadd -g 902 db2fadm1
        groupadd -g 903 dasadm1
        useradd -g db2iadm1 -u 801 -d /home/db2inst1 -m  db2inst1
        useradd -g db2fadm1 -u 802 -d /home/db2fenc1 -m  db2fenc1
        useradd -g dasadm1 -u 803 -d /home/dasadm1 -m  dasusr1
    • 为db2inst1创建密码
        passwd db2inst1
    • 创建实例
        [root@server]#cd /opt/ibm/db2/V9.7/instance
        [root@instance]#./dascrt -u dasusr1 (创建DB2管理服务器)
        [root@instance]#./db2icrt -u db2inst1 db2inst1 (创建DB2实例)
     
    • 启动数据库实例
        [root@localhost instance]# su - db2inst1
        [db2inst1@localhost ~]$ db2start
     
    • 创建一个用于连接的数据库
        [db2inst1@localhost ~]$ db2 create database KHYX_YS using codeset GBK territory CN
     
    • 设置端口
        查看db2是否开启tcp服务
        [root@localhost db2inst1]# db2set –all
        如果没有看到如下内容:DB2COMM=TCPIP,则需要对db2进行设置
        [root@localhost db2inst1]# db2set db2COMM=TCPIP
        查看是否配置db2 Tcp服务名称:
        [root@localhost db2inst1]# db2 get dbm cfg | grep -i SVCENAME
        如果SVCENAME 没有对应的值,则需要设置DB2的TCP服务名称或端口
        [root@localhost db2inst1]# db2 update dbm cfg using svcename db2AppName(自定义名称或端口号)
        查看/etc/services中是否已经将db2的tcp服务添加到系统服务中(端口号不需要这部)
        [root@localhost db2inst1]# cat /etc/services | grep db2
        如果没有找到任何内容或者没有db2AppName相关内容,则需要在services文件中加入db2AppName   50000/tcp,其中50000为 db2 tcp服务的端口号。使用vi     /etc/services命令进入编辑器添加内容,然后ESC键 :wq保存退出编辑器。
        重启db2服务,查看db2 tcp服务监听的端口是否已经启用
        [db2inst1@localhost ~]$ db2 force application all(强制停止数据库)
        [db2inst1@localhost ~]$ db2start
        [db2inst1@localhost ~]$ netstat -na | grep 50000
     
     
  • 相关阅读:
    CodeForces 219D Choosing Capital for Treeland (树形DP)
    POJ 3162 Walking Race (树的直径,单调队列)
    POJ 2152 Fire (树形DP,经典)
    POJ 1741 Tree (树的分治,树的重心)
    POJ 1655 Balancing Act (树的重心,常规)
    HDU 2196 Computer (树形DP)
    HDU 1520 Anniversary party (树形DP,入门)
    寒门子弟
    JQuery选择器(转)
    (四)Web应用开发---系统架构图
  • 原文地址:https://www.cnblogs.com/brucekun/p/9129235.html
Copyright © 2011-2022 走看看