DB2运维手册
- 安装
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
- 客户端与编目
服务器上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 密码
- 运维
- 表空间
查看表空间,
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(表空间名)
- 事务日志
查看事务日志使用率
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。
- 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
- 查看未提交事务
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)