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 | db2sysc
也可以以DB2实例所有者登录,通过发出db2start命令来确保启动了实例(如果实例已经启动,则会告知SQL1026N 数据库管理器已激活;否则,将把实例启动起来)
6、 查看表空间状态是否正常
以db2实例所有者登录
#db2 list tablespaces show detail //在单分区上查看表空间的状态,正常返回0x0000
# db2_all list tablespaces show detail //在所有分区上查看表空间的状态
可以使用LIST TABLESPACES 命令确定连接数据库中表空间的当前状态,可以使用SHOW DETAIL选项查看表空间的详细信息。比如,我们连上SAMPLE数据库,执行list tablespaces show detail ,可以看到状态返回值是0x0000,此时,使用db2tbst可以查看状态编号对于的状态含义,具体语法如下:
db2tbst <tablespace state> 可以查看编号所代表的状态
db2inst1@local:~> db2tbst 0x0000
State = Normal
db2tbst 命令接收十六进制的状态值,并返回相应的表空间状态。例如,命令 db2tbst 0x0008 返回 State = Load Pending 。而该十六进制的状态值反过来又是 LIST TABLESPACES 命令输出的组成部分。表空间的外部可见状态是由单个状态值的十六进制总和构成的。例如,如果表空间的状态是 Backup Pending和 Load in Progress,那么所返回的十六进制值就是 0x20020
(0x00020 + 0x20000)
7、 查看表的状态
查询系统目录视图以获得关于数据库的表的状态信息。例如,下面的语句将返回在 SYSCAT.TABLES 中有项的所有表的名称,以及每个表的列数和表的状态(N = 正常;C = 待审核(check pending))
#db2 select tabname, colcount, status FROM syscat.tables ORDER BY tabname
也可以使用load query命令查看单个表的状态,比如对表TEST1,我们可以发出如下命令:
#db2 load query table test1
8、 查看磁盘空间
查看数据库活动日志目录是否已满,活动日志目录的位置可以使用db2 get db cfg查看,注意一定不要手工删除活动日志
#df -k
查看SMS表空间对应的容器目录空间是否满了
#df -k
查看DMS表空间中是否还有可用页
#db2 list tablespaces show detail //在单分区上查看表空间的是否还有可用页
# db2_all list tablespaces show detail //在所有分区上查看表空间是否还有可用页
9、 检查存储管理软件是否正常
请检查TSM或其他存储管理软件是否正常,以及磁带机是否运行正常。
10、 检查数据库备份是否正常
请查看TSM或第三方存储管理软件,看备份映像文件是否完整的保存到了磁带机上了,想在DB2上查看备份情况,可以使用LIST命令
# db2 list history backup all for 数据库名
11、 检查归档日志是否正确归档了
请确保活动日志目录下没有的日志文件都已经正确归档到了带机上(查看TSM或第三方存储管理软件)。
12、 查看当前运行最频繁的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
13、 查看当前连接的应用程序,有没有非法连接
#db2 list applications show detail
看这些连接的情况,看有没有不合适的IP连上来,或者不被允许的第三方工具连上来,比如一些第三方工具连上来会对表进行锁定,影响业务系统正常运行,这个时候可以用db2 "force application(应用程序句柄号)" 将某个单独的句柄停下来。
14、 检查有没有死锁
# db2 get snapshot for all on 数据库名 > log.txt
用grep命令查看输出的文件中是否有死锁的记录,比如
grep -n "Deadlocks detected" log.txt | grep -v "= 0" | more
15、 对表和索引进行runstats
#db2 runstats on table 表名 and index all
对系统表以及变化比较频繁的表运行统计信息,建议写成shell脚本自动运行。
16、 检查表是否需要重组
使用REORGCHK命令,通过统计数据检查表是否需要重组,语法如下:
REORGCHK [UPDATE | CURRENT ]STATISTICS ON [TABLE SYSTEM| TABLE USER | TABLE ALL | TABLE table_name | SCHEMA schema_name]
UPDATE STATISTICS: 更新表的统计数据,根据该统计数据判断是否需要重组表
CURRENT STATISTICS:根据当前表统计数据判断是否需要重组表
TABLE table_name : 对单个表进行分析
TABLE ALL: 对数据库所有的表进行分析
TABLE SYSTEM: 对系统表进行分析
TABLE USER : 对当前用户模式下的所有表进行分析
#db2 reorgchk update statistics on table all
对需要重组的表进行重组
#db2 reorg table 表名 //通过重构行来消除“碎片”数据
#db2 reorg indexes all for table 表名 //只重组索引
比如:
reorg table db2inst1.org index by_id
将根据索引by_id,如果不加INDEX选项将重组表和所有的索引
reorg table db2inst1.org index by_id use tempspace1
使用指定的临时表空间重组表
表重组完成后需要进行RUNSTATS。另外,记住在分区数据库环境中,如果想在所有节点运行命令,需要使用db2_all命令。
17、数据库的备份、恢复
--离线备份
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")
db2 CONNECT TO DBName
db2 prune history YYYYMMDDHHMMSS--删除DBName YYYYMMDDHHMMSS之前的备份记录
18.数据的导出、导入
--导出
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;
19、查看DB2日志
请至少每天查看一次db2diag.log文件,看其中是否有异常。
20、 检查备份和日志是否都保存好了
通过TSM或第三方存储管理软件,查看备份和归档日志是否都保存好了,在数据库级别查看备份,可以使用:
# db2 list history backup all for 数据库名
21、通过快照监控器,查看系统性能如何
通过快照监控器,抓取数据库的信息,分析数据库性能是否合理:
# db2 get snapshot for all on 数据库名 > log.txt
22、 数据库补丁级别
# db2level
23、获取数据库的配置参数
查看现有数据库管理器配置文件中的配置参数的当前值,可以使用以下命令:
db2get database manager configuration
可简写为:db2 get dbm cfg
更新数据库管理器配置文件中的单个配置参数的值,可以使用以下命令:
db2update database manager configuration using <parameter name> <newvalue> <next parameter name> <new value>…
可简写为:db2 upadte dbm cfg using<parameter name> <new value> <next parameter name> <newvalue>…
查看数据库配置文件中的配置参数的当前取值,可以使用以下命令:
db2 get database configuration for 数据库名
可简写为:db2 get db cfg for 数据库名
更新数据库配置文件中的单个配置参数的取值,可以使用以下命令:
db2 update database configuration for 数据库名 using 参数名参数值…
可简写为:db2 upadte db cfg for 数据库名 using 参数名参数值…
24、查看设置的参数
$ db2set
DB2_INLIST_TO_NLJN=YES
DB2_EVALUNCOMMITTED=YES
DB2_RR_TO_RS=YES
DB2COUNTRY=86
DB2COMM=TCPIP
DB2CODEPAGE=1386
二、 DB2运维日常注意事项
1、 不要删除活动日志文件
DB2 的活动日志文件不能被删除。一旦 DB2 的活动日志文件被删除,或者所在的存储设备出现问题,则不可避免地造成 DB2 数据库系统宕机。
2、 注意交易日志存储空间
在归档日志模式下,如果没有使用自动归档方式,则存储的日志文件会不断增多,有可能造成日志所在的文件系统空间满。 当这种情况发生时,会根据参数 BLK_LOG_DSK_FUL 的配置而有不
同的现象:
1)如果该参数启用,则 DB2 数据库可继续读操作,但是写操作会挂起
2)如果该参数没有启用,则 DB2 数据库会停止工作
两种情况下,都需要到日志所在的文件系统添加了空间才恢复正常,避免出现事务日志满的问题。
3、 按照系统的实际工作量配置日志空间
DB2数据库通过日志文件维护数据的完整性和一致性。DB2 数据库的日志空间可通过如下公式计算:
日志空间 = (主日志文件 + 辅助日志文件) * 日志文件尺寸
其中:
1) 主日志文件由参数 LOGPRIMARY 控制,
2) 辅助日志文件由参数 LOGSECOND 控制
3) 日志文件尺寸由参数 LOGFILSIZ 控制
4) LOGPRIMARY + LOGSECOND < 256 (不同的 DB2 版本略有不同,请参看相同版本的 DB2 手册确认)
4、 设置正确数据库代码页
由于数据库的代码页在数据库创建之后是无法修改的,所以在创建数据库时一定要选择正确的代码页。
错误的数据库代码页会造成 JDBC/ODBC 访问时中文字段被截断(包括控制中心),这种情况需要重建数据库以修改数据库代码页。
从全局规划来说,如果应用需要访问多个数据库,那么这多个数据库的代码页应该是一致的。
5、 检查许可证(License)安装情况
许可证过期会造成不必要的服务中断,所以在 DB2 安装完毕后,建议检察许可的安装情况
检查license的内容
$db2licm -l
执行如下安装授权许可
#/opt/ibm/db2/V9.7/adm/db2licm -a /mnt/cdrom/db2/license/db2ese.lic
6、 创建数据库前调整好系统时间
在数据库创建好之后,调整系统时间会造成数据库内部时间戳的异常。数据库中一些对象和时间相关,一旦时间不准确要调整需要很小心。错误的时间调整可能会造成很多问题,如:
1)某些对象失效,例如 :
SQL0440N,找不到具有兼容自变量的类型为 “<例程类型>” 的名为 “<例程名>” 的已授权例程
2)数据库日志逻辑错误 -> 宕机
3)常见错误 – 只调整时间,未调整时区
7、 不要随便执行 chown (chmod) –R (UNIX/Linux)
在实例目录下chown (chmod) -R 会造成
1) 在数据库服务器上 db2 connect to <dbname> 能连接上数据库
2) db2 connect to <dbname> user ... using ...连接不上
8、 在归档日志模式下使用LOAD记得加NONRECOVERABLE参数
db2日常维护的更多相关文章
- DB2日常维护——REORG TABLE命令优化数据库性能(转)
[转]DB2日常维护——REORG TABLE命令优化数据库性能 一个完整的日常维护规范可以帮助 DBA 理顺每天需要的操作,以便更好的监控和维护数据库,保证数据库的正常.安全.高效运行,防止一些错误 ...
- DB2日常维护——REORG TABLE命令优化数据库性能
一个完整的日常维护规范可以帮助 DBA 理顺每天需要的操作,以便更好的监控和维护数据库,保证数据库的正常.安全.高效运行,防止一些错误重复发生. 由于DB2使用CBO作为数据库的优化器,数据库对象的状 ...
- DB2日常维护常用命令
1.检查是否有僵尸进程 ps -emo THREAD | grep -i Z | grep -i 实例名 2.处理死锁 --第一步:查看所有死锁 db2 get snapshot for lock ...
- oracle 容灾库日常维护 ,健康检查脚本 以及常见问题分析
select DEST_ID, APPLIED_SCN FROM v$archive_dest select * from v$dataguard_status; SELECT gvi.thread# ...
- ORACLE分区表梳理系列(二)- 分区表日常维护及注意事项(红字需要留意)
版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...
- 数据库日常维护-CheckList_01历史Agent Job执行情况检查
检查Agent Job中日常维护作业或业务作业是否成功,如每天的备份.碎片整理.索引维护.历史备份文件清除等,可利用SSMS工具,通过CDC下面设置好的DB Server List,运行下面脚本一次, ...
- MS SQL 日常维护管理常用脚本(二)
监控数据库运行 下面是整理.收集监控数据库运行的一些常用脚本,也是MS SQL 日常维护管理常用脚本(一)的续集,欢迎大家补充.提意见. 查看数据库登录名信息 Code Snippet SELEC ...
- 2.goldengate日常维护命令(转载)
goldengate日常维护命令 发表于 2013 年 7 月 4 日 由 Asysdba 1.查看进程状态 GGSCI (PONY) 2> info all 2.查看进程详细状态,有助于排错 ...
- svn服务配置和日常维护命令
Subversion独立服务和与apache整合服务. 一 .Svn独立服务安装 操作系统: Redhat Linux AS3 AS 4 ContOS AS 4 安装包获取: 下载[url]ht ...
随机推荐
- 【JAVA网络流之浏览器与服务器模拟】
一.模拟服务器获取浏览器请求http信息 代码: package p06.TCPTransferImitateServer.p01.ImitateServer; import java.io.IOEx ...
- python中最简单的多进程程序
学着.. #!/usr/bin/env python # -*- coding: utf-8 -*- # Spawn a Process: Chapter 3: Process Based Paral ...
- forEach 方法 (Array) (JavaScript)
为数组中的每个元素执行指定操作. 语法 array1.forEach(callbackfn[, thisArg]) 参数 参数 定义 array1 必选.一个数组对象. callbackfn 必选.最 ...
- Power BI中的QA功能预览
微软在休斯敦的全球合作伙伴大会上发布了Power BI for Office 365,通过Excel和Office 365中的自服务式商业智能解决方案为信息工作者提供了数据分析以及可视化功能以帮助他们 ...
- shell test 數值 字符串 文件比較
數值比較 描述 n1 –eq n2 等於 n1 –gt n2 大於 n1 –ge n2 大於等於 n1 –lt n2 小於 n1 –le n2 小於等於 n1 –ne n2 不等於 字符串比較 ...
- bootstrap 练习
bookList.html <!DOCTYPE html> <html lang="zh-cn"> <head> <!-- 父路径 --& ...
- android 入门-android Studio git 克隆
最后是完成 以上是如何从android studio Git 克隆Github的项目
- PHPCMS 实现上一篇、下一篇
方法一:直接调用phpcms系统的函数 <div class="info"> <span>上一篇:<a href="{$previous_p ...
- POJ 1061 同余方程
两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是 它们出发之前忘记了一件很重要的事情,既没有问清楚对方的 ...
- Android三种基本的加载网络图片方式(转)
Android三种基本的加载网络图片方式,包括普通加载网络方式.用ImageLoader加载图片.用Volley加载图片. 1. [代码]普通加载网络方式 ? 1 2 3 4 5 6 7 8 9 10 ...