DB2运维手册

  1. 安装

1.上传 tar.gz安装文件——通过FTP或者Lszrz上传工具(通过SecureCRT,使用rz命令上传)

2.解压缩到对应目录,并运行db2_install程序

遇到问题:1. Selinux不支持——解决方法:vi /etc/selinux/config 中如下修改:selinux=disabled

          2. 关闭防火墙 iptables 或 firewall

Redhat安装选择keyword :WSE(workgroup)

3. 创建用户组及用户

   groupadd -g 1000 db2iadm1    实例管理组

   groupadd -g 1001 db2fadm1    fencing管理组(受防护的用户)

   groupadd -g 1002 dasadm1     数据库管理员用户组

   useradd -g db2iadm1 -d /home/db2inst1 db2inst1    实例用户

   useradd -g db2iadm1 -d /home/db2fenc1 db2fenc1    受访户用户

   useradd -g dasuser1 -d /home/dasadm1 dasadm1   数据库管理员用户

4. 更改目录权限

mkdir /db2data
   chown -R db2inst1:db2iadm1 /home/db2inst1
   chown -R db2fenc1:db2fgrp1 /home/db2fenc1
   chown -R db2inst1:db2iadm1 /db2data

5. 创建实例

cd /opt/ibm/db2/V10.5/instance/
   ./db2icrt -u db2fenc1 db2inst1    -u指定创建的受保护的用户名称db2fenc1

可能遇到问题:1.db2相关命令不识别——解决方法:修改对应用户的/home/db2inst1/.bashrc目录 做如下修改:

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

6. 激活:

   1)拷贝安装文件中db2aese_t.lic至程序目录中  安装目录:/opt/expc/server_t/db2/license/程序目录:/opt/expc/db2/V10.5/license/

      进入/opt/expc/db2/V10.5/adm/  运行db2licm db2aese_t.lic

   2)通过db2wse_u.lic无可文件激活,上传该许可文件到db2inst1用户下“/home/db2inst1/” 通过db2licm -a db2wse-u.lic运行

   查看激活状态  db2licm -l

   3) db2licm -u db2wse 20(用户数)

7. 开启关闭DB2

   开启 db2start

   关闭 db2stop

8. DB2自启动

   在程序目录下:/opt/ibm/db2/V9.7/instance

   运行./db2iauto -on db2inst1

9. 新建数据库

   DB2 CREATE DATABASE ADP AUTOMATIC STORAGE YES  ON '/home/db2inst1' DBPATH ON '/home/db2inst1' USING CODESET UTF-8 TERRITORY CN COLLATE USING SYSTEM    PAGESIZE 32768;

10. 修改数据库名及端口

   db2 get dbm cfg | grep -i SVCENAME  通过该命令查看TCP服务名称

   db2 upadte database manager configuration using svcename "TCP服务名称" (和 /etc/services中的名称一致)  重启db2服务

11. 创建表空间

   db2 "create tablespace TS_NAME pagesize 32k managed by automatic storage"

   查看表空间信息: db2 list tablespaces show detail

   查看数据库空间使用情况:db2 list tablespaces show detail

12. 授权数据库用户

   db2 grant connect on database to user DBNAME  (建表:createtab)

    测试: db2 connect to DBNAME user USERNAME using PASSWD

13.连接数据库配置

   关闭防火墙

   检查/etc/service中是否配置了数据库通讯信息 DB2_db2inst1 60000/tcp   (DB2_实例名)

   配置DB2全局变量(通信模式)  db2set db2comm=tcpip  

   配置TCP/IP服务名称 db2 update dbm using svcename DB2_db2inst1   (根据/etc/service中实例对应的名称)

   重启DB2

   DB2关联新用户 db2 grant connect on database to user gzuser

13. DB2查看

   查看数据库:db2 list database directory

   列出所有活动的数据库:db2 list active databases

   数据库详细信息查看: db2 get db cfg for ADP

   查看连接  db2 list applications

   清除连接  db2 force applications all

   查看DB2 配置文件注册库  db2set -all

   查看数据库管理器配置参数db2 get dbm cfg

14.变更各类变量或配置

   更新数据库管理器配置参数(实例级)db2 update dbm cfg using 参数内容 参数值

   更新全局注册表配置变量 db2set 参数内容=参数值

15.注册远程数据库到本地(客户端配置)

     添加node catalog:  db2 catalog tcpip node 节点名 remote 数据库服务器IP server  端口号

     关闭DB2: db2 terminate

     添加db catalog:  db2 catalog db 数据库名 as 数据库别名 at node 节点名

     关闭DB2: db2 terminate

     设置后登出DB2用户 重新登入

     连接测试:db2 connect to db2test user db2itest using password

     取消catalog: db2 uncatalog node <node_name>

                             db2 uncatalog database <db_name>

16.删除数据库:db2 drop db TEST(首先需要运行数据库,断开所有连接)

     删除实例:到实例目录下执行删除命令 cd /opt/ibm/db2/V10.5/instance/

     需要root用户

     运行删除命令:./db2idrop db2inst

     删除das用户: ./dasdrop dasuser

     删除DB2主体:./db2_deinstall -a

  1. 客户端与编目

服务器上db2安装完成可以直接使用,Windows上可以通过安装相应数据库连接第三方工具,linux上需要安装DB2客户端,做好编目;

db2客户端(IBM 数据服务器客户机 V10.5修订包 10)

位置:/soft

解压:tar -zxvf 文件名

替换文件夹:mv  nlpack/ server_t/ (敲两次回车)

开始安装:cd server_t --> ./db2setup (大部分默认安装,选择定制安装,不需要新建实例)--> cd /opt/ibm/db2/V10.5/instance

---> ./db2icrt ap

切换用户:su ap --> db2  --> db2 catalog tcpip node dbsrv remote ip server 50000 -->db2 catalog database 数据库名 at node dbsrv

测试连接:connect to 数据库名 user 用户名 using 密码

  1. 运维
  2. 表空间

查看表空间,

db2 list tablespaces show detail

查看表空间文件路径

db2 list tablespace containers for 2

//查看具体表空间配置  -d 数据库名  -tablespace 表空间

db2pd -d mgfsp -tablespace USERSAPCE1

查询表空间剩余容量(百分比)

select substr(tbsp_name,1,20) as TABLESPACE_NAME,substr(tbsp_content_type,1,10) as TABLESPACE_TYPE,sum(tbsp_total_size_kb)/1024 as TOTAL_MB,
      sum(tbsp_used_size_kb)/1024 as USED_MB,sum(tbsp_free_size_kb)/1024 as FREE_MB,tbsp_page_size AS PAGE_SIZE
from SYSIBMADM.TBSP_UTILIZATION group by tbsp_name,tbsp_content_type,tbsp_page_size
         db2 表空间不够大(临时)
create bufferpool bp16k  size 1000 pagesize 16k;
create system temporary tablespace tempts16k pagesize 16k bufferpool bp16k;

db2系统表空间一般是自增长的,需要关注AS与AR属性,都为YES即可,查看方式:db2pd -d mgfsp -tablespace USERSAPCE1(表空间名)

  1. 事务日志

查看事务日志使用率

SELECT DB_NAME,
       LOG_UTILIZATION_PERCENT,
       TOTAL_LOG_USED_KB,
       TOTAL_LOG_AVAILABLE_KB,
       TOTAL_LOG_USED_TOP_KB,
       DBPARTITIONNUM
  FROM SYSIBMADM.LOG_UTILIZATION;
//db2查看日志属性配置
db2 get db cfg|grep LOG

避免单一进程异常导致数据库事务日志被占满,需要设置LOG中MAX_LOG这一属性,一般设置70即可,相关语句:db2 update db cfg using MAX_LOG 70 ;

db2事务日志扩容:

db2 update db cfg using LOGFILSIZ 20480
db2 update db cfg using LOGPRIMARY 50
db2 update db cfg using LOGSECOND 20

       执行完需要重启数据库,相关指令:db2 force applications all,db2stop,db2start。

  1. DB2DIALOG

DB2中有文件记录事务日志,事务日志是对数据库进行的系列操作,都会记录在该文件中,默认位置:/home/db2inst1/sqllib/db2dump/DIAG0000,这个日志文件会持续增长,直接打开会比较慢,可以用指令将段时间数据输入到指定文本中方便查看:db2diag -t 2021-01-31-18.00.01:2021-02-01-10.15.59 > 20210201.txt

db2diag -t 2022-04-21-02.30.01:2022-04-21-03.00.59 > 20220421.txt

  1. 查看未提交事务
SELECT m.MEMBER,
       substr (APPLICATION_ID, 1, 30) AS APPLICATION_ID,
       m.UOW_ID,
       substr (UOW_START_TIME, 1, 19) AS UOW_START_TIME,
       UOW_LOG_SPACE_USED / 1024.0 / 1024.0 AS LOG_USED_MB,
       substr (STMT_TEXT, 1, 50) AS STMT_TEXT
  FROM    TABLE (MON_GET_UNIT_OF_WORK (NULL, -1)) AS m
       LEFT OUTER JOIN
          TABLE (MON_GET_PKG_CACHE_STMT (NULL,
                                         NULL,
                                         NULL,
                                         -2)) AS n
       ON m.LAST_EXECUTABLE_ID = n.EXECUTABLE_ID
 WHERE UOW_STOP_TIME IS NULL
ORDER BY UOW_START_TIME;

可以通过查询出来的异常句柄id,进一步断开这一连接:db2 force application (id)