网站首页 > 技术文章 正文
概述
今天主要总结一下db2数据库日常维护的一些命令,虽然目前生产环境只剩一台db2了,但毕竟还在用,所以还是得做一下日常维护的~
1、数据库的启动、停止、激活
db2 list active databases
db2 active db 数据库名
db2start --启动
db2stop [force] --停止
2、数据库的连接、断开
db2 CONNECT TO DBName [user UserID using PWD]--建立连接
db2 CONNECT reset /db2 disconnect CURRENT --断开连接
db2 terminate --断开与数据库的连接
3、实例的创建、删除
db2icrt < 实例名称 > --创建 db2 实例
db2idrop < 实例名称 >--删除 db2 实例
set db2intance=db2 --设置当前 db2 实例
db2ilist --显示 db2 拥有的实例
4、节点、数据库的编目
db2 list db directory --查看本地节点目录
db2 catalog tcpip node <node_name> remote <hostname|ip_address> <svcname|port_number> ostype <OS2|AIX|WIN95|NT|HPUX|SUN|MVS|OS400|VM|VSE|SCO|SGI|LINUX|DYNIX>--编目一个
TCP/IP节点
db2 uncatalog node <node_name> --取消节点编目
db2 catalog DATABASE <db_name> AS <db_alias> AT node <node_name>--编目数据库
db2 uncatalog DATABASE <db_name> --取消数据库编目
5、检查DB2实例是否已经启动
用ps命令查看是否有db2sysc后台进程
#ps -ef | grep db2sysc
也可以以DB2实例所有者登录,通过发出db2start命令来确保启动了实例(如果实例已经启动,则会告知SQL1026N 数据库管理器已激活;否则,将把实例启动起来)
6、 查看表空间状态是否正常
以db2实例所有者登录
db2 list tablespaces show detail //在单分区上查看表空间的状态,正常返回0x0000
db2_all list tablespaces show detail //在所有分区上查看表空间的状态
可以使用LIST TABLESPACES 命令确定连接数据库中表空间的当前状态,可以使用SHOW DETAIL选项查看表空间的详细信息。
7、 查看表的状态
查询系统目录视图以获得关于数据库的表的状态信息。例如,下面的语句将返回在 SYSCAT.TABLES 中有项的所有表的名称,以及每个表的列数和表的状态(N = 正常;C = 待审核(check pending))
#db2 select tabname, colcount, status FROM syscat.tables ORDER BY tabname
8、 查看磁盘空间
查看数据库活动日志目录是否已满,活动日志目录的位置可以使用db2 get db cfg查看,注意一定不要手工删除活动日志
#df -k
查看DMS表空间中是否还有可用页
#db2 list tablespaces show detail //在单分区上查看表空间的是否还有可用页
# db2_all list tablespaces show detail //在所有分区上查看表空间是否还有可用页
9、 检查数据库备份是否正常
请查看TSM或第三方存储管理软件,看备份映像文件是否完整的保存到了磁带机上了,想在DB2上查看备份情况,可以使用LIST命令
?# db2 list history backup all for 数据库名
10、 查看当前运行最频繁的SQL,其命中率是否正常
# db2 get snapshot for bufferpools on 数据库名 > log.txt
#db2 "select * from SYSCAT.BUFFERPOOLS" 查缓冲池大小信息
命中率计算:
(1- ((Buffer pool data physical reads + Buffer pool index physical reads) /
(Buffer pool data logical reads + Buffer pool index logical reads))) * 100%
用grep命令查看" Number of executions"执行次数最频繁的语句,看其命中率是否正常。
比如:
grep -n " Number of executions" log.txt | grep -v "= 0" | sort -k 5,5rn | more
11、 查看当前连接的应用程序,有没有非法连接
?#db2 list applications show detail
看这些连接的情况,看有没有不合适的IP连上来,或者不被允许的第三方工具连上来,比如一些第三方工具连上来会对表进行锁定,影响业务系统正常运行,这个时候可以用db2 "force application(应用程序句柄号)" 将某个单独的句柄停下来。
12、 检查有没有死锁
# db2 get snapshot for all on 数据库名 > log.txt
用grep命令查看输出的文件中是否有死锁的记录,比如
grep -n "Deadlocks detected" log.txt | grep -v "= 0" | more
13、数据库的备份、恢复
--离线备份
db2 force applications all--断开所有连接
db2 force application(h1,h2……)--杀死与数据库相连接的某个进程
db2 backup db DBName [to /backup] [use TSM]--离线备份
--在线、增量备份
--前提:更改数据库参数 logretain, userexit, trackmod 为 on,之后数据库处于backup pending状态,要完全离线备份数据库一次,之后就可以进行在线、在线增量备份了。
db2 update db cfg using logretain on userexit on trackmod on--启用相关参数
--归档路径
DB2 UPDATE DATABASE CONFIGURATION USING LOGARCHMETH1 DISK:/backup
--LOGARCHMETH1参数改成TSM
DB2 UPDATE DATABASE CONFIGURATION USING LOGARCHMETH1 TSM IMMEDIATE
db2 backup db DBName [to /backup] [use TSM]--离线备份
db2 backup db DBName online [to /backup] [use TSM] include logs --在线线备份
db2 backup db DBName online incremental [to /backup] [use TSM]--在线增量备份
--数据库恢复
db2 restore db DBname [incremental] [FROM /backup][use TSM] taken AT YYYYMMDDHHMMSS
--恢复 (时间戳记:YYYYMMDDHHMMSS)
db2 list history backup [since YYYYMMDDHHMMSS] ALL FOR DBName
--查看 [从YYYYMMDDHHMMSS] 对DBName的备份情况
db2 ROLLFORWARD DATABASE DBName TO END OF LOGS AND COMPLETE NORETRIEVE--将暂挂的数据恢复到前滚状态
db2 ROLLFORWARD DATABASE DBName TO END OF LOGS AND COMPLETE OVERFLOW LOG PATH ("/home/db2inst1/SQLOGDIR")
14、数据的导出、导入
--导出
db2 EXPORT TO D:\TableName.txt OF del SELECT * FROM SCHEMA.TableName--文本格式
db2 EXPORT TO D:\TableName.csv OF del SELECT * FROM SCHEMA.TableName--csv可转为excel
db2 EXPORT TO D:\TableName.ixf OF ixf SELECT * FROM SCHEMA.TableName
--导出数据(IXF 集成通用交换格式)
db2 EXPORT TO "D:\TableName.data" OF IXF MESSAGES "D:\TableName.msg" SELECT * FROM SCHEMA.TableName;
--导入
db2 IMPORT FROM D:\TableName.txt OF del INSERT INTO SCHEMA.TableName
db2 IMPORT FROM "D:\TableName.data" OF IXF [MESSAGES "D:\TableName.msg"] [COMMITCOUNT 1000] INSERT/CREATE INTO SCHEMA.TableName;
db2 IMPORT FROM "D:\TableName.ixf" OF IXF [COMMITCOUNT 1000] INSERT/INSERT_UPDATE/CREATE/REPLACE/REPLACE_CREATE INTO SCHEMA.TableName;
15、查看DB2日志
请至少每天查看一次db2diag.log文件,看其中是否有异常。
16、 数据库补丁级别
# db2level
觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~
猜你喜欢
- 2024-09-10 oracle实用sql分享:杀进程、长时间操作等等
- 2024-09-10 走在前沿的弄潮儿,怎能不会Git的那些奇技淫巧
- 2024-09-10 TCP“三次握手,四次挥手”你真的懂吗?
- 2024-09-10 制作 deb 软件包(如何制作deb包)
- 2024-09-10 详解虚拟化之KVM概念、架构、功能、常用工具及部署
- 2024-09-10 Linux find命令一定要知道这些(linux find命令的使用)
- 2024-09-10 inux 文本处理三剑客--grep/sed/awk
- 2024-09-10 浅谈Linux中的&&和ll(linux中atime)
- 2024-09-10 浅谈Linux中的&&和ll,补充&和l
- 2024-09-10 使用grep搜索多个字符串(grep命令查找多个字段)
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)