DB2日常维护手册_第1页
DB2日常维护手册_第2页
DB2日常维护手册_第3页
DB2日常维护手册_第4页
DB2日常维护手册_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、捷达世软件(深圳)有限公司DB2日常维护手册目录DB2日常维护手册- 1 -一、DB2日常维护操作- 1 -1.检查管理服务器是否启动- 1 -2.检查DB2实例是否已经启动- 1 -3.查看表空间状态是否正常- 1 -4.查看表的状态- 2 -5.查看磁盘空间- 2 -6.检查存储管理软件是否正常- 2 -7.检查数据库备份是否正常- 2 -8.检查归档日志是否正确归档了- 3 -9.查看缓冲池的命中率- 3 -10.查看当前运行最频繁的SQL,其命中率是否正常- 3 -11.查看当前连接的应用程序,有没有非法连接- 3 -12.检查有没有死锁- 3 -13.对表和索引进行runstats-

2、 3 -14.检查表是否需要重组- 4 -15.对需要重组的表进行重组- 4 -二、DB2日常维护月操作- 4 -1.查看DB2日志- 4 -2.检查备份和日志是否都保存好了- 4 -三、DB2日常维护季度操作- 5 -1.通过快照监控器,查看系统性能如何- 5 -2.数据库补丁级别- 5 -四、注意事项- 5 -1.不要删除活动日志文件- 5 -2.注意交易日志存储空间- 5 -3.按照系统的实际工作量配置日志空间- 5 -4.设置正确数据库代码页- 6 -5.检查许可证(License)安装情况- 6 -6.创建数据库前调整好系统时间- 6 -7.不要随便执行 chown (chmod)

3、R (UNIX/Linux)- 6 -8.归档模式设置- 6 -五、附:以脱机方式重组表- 7 -六、附:使用 CLP 捕获数据库运行状况快照- 7 -七、附:IBM DB2常用命令- 8 -IIDB2日常维护手册一、 DB2日常维护操作1. 检查管理服务器是否启动用ps命令查看是否有dasusr1后台进程ps -ef | dasusr1请确保管理服务器已经启动,如果没有启动,则按以下步骤启动管理服务器:以管理服务器用户(UNIX默认是DASUSR1)登录发出db2admin start命令如果是HA环境,则要保证在脚本中正确配置了启动命令2. 检查DB2实例是否已经启动用ps命令查看是否有d

4、b2sysc后台进程ps -ef | db2sysc也可以以DB2实例所有者登录,通过发出db2start命令来确保启动了实例(如果实例已经启动,则会告知SQL1026N 数据库管理器已激活;否则,将把实例启动起来)3. 查看表空间状态是否正常以db2实例所有者登录#db2 list tablespaces show detail /在单分区上查看表空间的状态,正常返回0x0000# db2_all list tablespaces show detail /在所有分区上查看表空间的状态可以使用LIST TABLESPACES 命令确定连接数据库中表空间的当前状态,可以使用SHOW DETAI

5、L选项查看表空间的详细信息。比如,我们连上SAMPLE数据库,执行list tablespaces show detail ,可以看到状态返回值是0x0000,此时,使用db2tbst可以查看状态编号对于的状态含义,具体语法如下:db2tbst <tablespace state>可以查看编号所代表的状态db2tbst 命令接收十六进制的状态值,并返回相应的表空间状态。例如,命令 db2tbst 0x0008 返回 State = Load Pending 。而该十六进制的状态值反过来又是 LIST TABLESPACES 命令输出的组成部分。表空间的外部可见状态是由单个状态值的十

6、六进制总和构成的。例如,如果表空间的状态是 Backup Pending和 Load in Progress,那么所返回的十六进制值就是 0x20020(0x00020 + 0x20000)4. 查看表的状态查询系统目录视图以获得关于数据库的有用信息。例如,下面的语句使用 NOT LIKE 断言,返回在 SYSCAT.TABLES 中有项的所有用户定义的表的名称,以及每个表的列数和表的状态(N = 正常;C = 待审核(check pending)#db2 select tabname, colcount, status FROM syscat.tables WHERE tabschema N

7、OT LIKE 'SYS%' ORDER BY tabname也可以使用load query命令查看单个表的状态,比如对表TEST1,我们可以发出如下命令:#db2 load query table test15. 查看磁盘空间查看数据库活动日志目录是否已满,活动日志目录可以使用get db cfg查看,注意一定不要手工删除活动日志#df -k查看SMS表空间对应的容器目录空间是否满了#df -k查看DMS表空间中是否还有可用页#db2 list tablespaces show detail /在单分区上查看表空间的是否还有可用页# db2_all list tablespa

8、ces show detail /在所有分区上查看表空间是否还有可用页6. 检查存储管理软件是否正常请检查TSM或其他存储管理软件是否正常,以及磁带机是否运行正常。7. 检查数据库备份是否正常请查看TSM或第三方存储管理软件,看备份映像文件是否完整的保存到了磁带机上了,想在DB2上查看备份情况,可以使用LIST命令# db2 list history backup all for 数据库名8. 检查归档日志是否正确归档了请确保活动日志目录下没有的日志文件都已经正确归档到了带机上(查看TSM或第三方存储管理软件)。查看活动目录里的日志文件:#ls -l9. 查看缓冲池的命中率# db2 get

9、snapshot for bufferpools on dbname查看缓冲池的命中率,看其是否低于95%(命中率越高越好)10. 查看当前运行最频繁的SQL,其命中率是否正常# db2 get snapshot for bufferpools on dbname > log.txt用grep命令查看" Number of executions"执行次数最频繁的语句,看其命中率是否正常。比如:grep -n " Number of executions" snap.out | grep -v "= 0" | sort -k 5,

10、5rn | more 11. 查看当前连接的应用程序,有没有非法连接#db2 list applications show detail 看这些连接的情况,看有没有不合适的IP连上来,或者不被允许的第三方工具连上来,比如一些第三方工具连上来会对表进行锁定,影响业务系统正常运行,这个时候可以用FORCE APPLICATIONS (应用程序句柄)停下来。12. 检查有没有死锁# db2 get snapshot for all on 数据库名> log.txt用grep命令查看输出的文件中是否有死锁的记录,比如grep -n "Deadlocks detected" l

11、og.txt | grep -v "= 0" | more 13. 对表和索引进行runstats#db2 runstats on table tablename and index all对系统表以及变化比较频繁的表运行统计信息,建议写成shell脚本自动运行。14. 检查表是否需要重组使用REORGCHK命令,通过统计数据检查表是否需要重组,语法如下:REORGCHK UPDATE | CURRENT STATISTICS ON TABLE SYSTEM| TABLE USER | TABLE ALL | TABLE table_name | SCHEMA schema

12、_nameUPDATE STATISTICS:更新表的统计数据,根据该统计数据判断是否需要重组表CURRENT STATISTICS:根据当前表统计数据判断是否需要重组表TABLE table_name :对单个表进行分析TABLE ALL:对数据库所有的表进行分析TABLE SYSTEM:对系统表进行分析TABLE USER :对当前用户模式下的所有表进行分析#db2 reorgchk update statistics on table all15. 对需要重组的表进行重组#db2 reorg table 表名 /通过重构行来消除“碎片”数据#db2 reorg indexes all f

13、or table 表名 /只重组索引比如:reorg table index by_id将根据索引by_id,如果不加INDEX选项将重组表和所有的索引:reorg table index by_id use tempspace1使用指定的临时表空间重组表表重组完成后需要进行RUNSTATS。另外,记住在分区数据库环境中,如果想在所有节点运行命令,需要使用db2_all命令。二、 DB2日常维护月操作1. 查看DB2日志请至少每月查看一次db2diag.log(在DB2安装目录下可搜索该日志文件),看其中是否有异常。2. 检查备份和日志是否都

14、保存好了通过TSM或第三方存储管理软件,查看备份和归档日志是否都保存好了,在数据库级别查看备份,可以使用:# db2 list history backup all for dbname三、 DB2日常维护季度操作1. 通过快照监控器,查看系统性能如何通过快照监控器,抓取数据库的信息,分析数据库性能是否合理:# db2 get snapshot for all on dbname> log.txt2. 数据库补丁级别# db2level四、 注意事项1. 不要删除活动日志文件DB2 的活动日志文件不能被删除。一旦 DB2 的活动日志文件被删除,或者所在的存储设备出现问题,则不可避免地造成

15、 DB2 数据库系统宕机。2. 注意交易日志存储空间在归档日志模式下,如果没有使用自动归档方式,则存储的日志文件会不断增多,有可能造成日志所在的文件系统空间满。当这种情况发生时,会根据参数 BLK_LOG_DSK_FUL 的配置而有不同的现象:1)如果该参数启用,则 DB2 数据库可继续读操作,但是写操作会挂起2)如果该参数没有启用,则 DB2 数据库会停止工作两种情况下,都需要到日志所在的文件系统添加了空间才恢复正常。3. 按照系统的实际工作量配置日志空间DB2数据库通过日志文件维护数据的完整性和一致性。DB2 数据库的日志空间可通过如下公式计算:日志空间 = (主日志文件 + 二级日志文件

16、) * 日志文件尺寸其中:1)主日志文件由参数 LOGPRIMARY 控制,2)二级日志文件由参数 LOGSECOND 控制3)日志文件尺寸由参数 LOGFILSIZ 控制4) LOGPRIMARY + LOGSECOND < 256 (不同的 DB2 版本略有不同,请参看相同版本的 DB2 手册确认)。4. 设置正确数据库代码页由于数据库的代码页在数据库创建之后是无法修改的,所以在创建数据库时一定要选择正确的代码页。错误的数据库代码页会造成 JDBC/ODBC 访问时中文字段被截断(包括控制中心),这种情况需要重建数据库以修改数据库代码页。从全局规划来说,如果应用需要访问多个数据库,那

17、么这多个数据库的代码页应该是一致的。5. 检查许可证(License)安装情况许可证过期会造成不必要的服务中断,所以在 DB2 安装完毕后,建议检察许可的安装情况。6. 创建数据库前调整好系统时间在数据库创建好之后,调整系统时间会造成数据库内部时间戳的异常。数据库中一些对象和时间相关,一旦时间不准确要调整需要很小心。错误的时间调整可能会造成很多问题,如:1) 某些对象失效,例如:SQL0440N,找不到具有兼容自变量的类型为“<例程类型>”的名为“<例程名>”的已授权例程2) 数据库日志逻辑错误 ->宕机3) 常见错误只调整时间,未调整时区7. 不要随便执行 ch

18、own (chmod) R (UNIX/Linux)在实例目录下chown (chmod) -R 会造成1)在数据库服务器上 db2 connect to <dbname>能连接上数据库2) db2 connect to <dbname> user . using .连接不上8. 归档模式设置在归档日志模式下使用LOAD记得加NONRECOVERABLE参数。五、 附:以脱机方式重组表以脱机方式重组表是整理表碎片的最快方法。重组可减少表所需的空间量并提高数据访问和查询性能。必须具有 SYSADM、SYSCTRL、SYSMAINT 或 DBADM 权限,或者必须具有对表的

19、 CONTROL 权限才能重组表。必须具有数据库连接才能重组表。标识需要重组的表之后,可以对这些表运行 REORG 实用程序,并且可以选择对在这些表上定义的任何索引运行该实用程序。1. 要使用 CLP 重组表,请发出 REORG TABLE 命令:db2 reorg table test.employee要使用临时表空间 mytemp 重组表,请输入:db2 reorg table test.employee use mytemp要重组表并根据索引 myindex 对行进行重新排序,请输入:db2 reorg table test.employee index myindex2. 要使用 SQ

20、L 调用语句重组表,请使用 ADMIN_CMD 过程发出 REORG TABLE 命令:call sysproc.admin_cmd ('reorg table employee index myindex')3. 要使用 DB2 管理 API 重组表,请使用 db2REORG API。在重组表之后,应收集有关表的统计信息,以便优化器具有最准确的数据来评估查询访问方案。六、 附:使用 CLP 捕获数据库运行状况快照可从 CLP 使用 GET HEALTH SNAPSHOT 命令来捕获运行状况快照。该命令语法支持检索运行状况监视器监视的不同对象类型的运行状况快照信息。先决条件必须

21、具有实例连接才能捕获运行状况快照。如果没有实例连接,则创建缺省实例连接。要获取远程实例的快照,必须先连接至该实例。过程要使用 CLP 捕获数据库运行状况快照1. 从 CLP 发出带有期望参数的 GET HEALTH SNAPSHOT 命令。在以下示例中,将在启动数据库管理器之后立即捕获数据库管理器级别运行状况快照。db2 get health snapshot for dbm2. 对于分区数据库系统,可为特定分区捕获专门的数据库快照,或者为所有分区捕获全局的数据库快照。要对特定分区(如分区号 2)上的数据库捕获运行状况快照,请发出以下命令:db2 get health snapshot for

22、 db on dbname at dbpartitionnum 2要对所有分区上的所有应用程序捕获数据库快照,请发出以下命令:db2 get health snapshot for db on dbname global以下命令捕获的运行状况快照带有附加详细信息,包括公式、附加信息和运行状况指示器历史记录:db2 get health snapshot for db on dbname show detail3. 对于基于集合状态的运行状况指示器,可对所有集合对象捕获数据库快照,而不考虑这些对象的状态。常规 GET HEALTH SNAPSHOT FOR DB 命令返回所有集合对象,这些对象需

23、要针对所有基于集合状态的运行状况指示器的警报。要对列示了所有集合对象的数据库捕获运行状况快照,请发出以下命令:db2 get health snapshot for db on dbname with full collection七、 附:IBM DB2常用命令 命令行窗口 1. #打开命令行窗口   2. db2cmd   3. #打开控制中心   4. db2cmd db2cc   5. #打开命令编辑器   6. db2cmd db2ce  操作数

24、据库命令1. #启动数据库实例   2. db2start   3. #停止数据库实例   4. db2stop   5. 如果你不能停止数据库由于激活的连接,在运行db2stop前执行db2 force application all就可以了   6. #创建数据库   7. db2 create db dbname   8. #连接到数据库   9. db2 co

25、nnect to dbname user username using password   10. #断开数据库连接   11. db2 connect reset   12. #列出所有数据库   13. db2 list db directory   14. #列出所有激活的数据库   15. db2 list active dat

26、abases   16. #列出所有数据库配置   17. db2 get db cfg   18. #删除数据库   19. db2 drop database dbname  #启动数据库实例db2start#停止数据库实例db2stop如果你不能停止数据库由于激活的连接,在运行db2stop前执行db2 force application all就可以了#创建数据库db2 create db dbname#连接到数据库db2 co

27、nnect to dbname user username using password#断开数据库连接db2 connect reset#列出所有数据库db2 list db directory#列出所有激活的数据库db2 list active databases#列出所有数据库配置db2 get db cfg#删除数据库db2 drop database dbname操作数据表命令 1. #列出所有用户表   2. db2 list tables   3. #列出所有系统表   4. db2 lis

28、t tables for system   5. #列出所有表   6. db2 list tables for all   7. #列出系统表   8. db2 list tables for system   9. #列出用户表   10. db2 list tables for user   11. #

29、列出特定用户表   12. db2 list tables for schema user   13.   14. #创建一个与数据库中某个表(t2)结构相同的新表(t1)   15. db2 create table t1 like t2   16.   17. #查询表   18. db2 "select * fr

30、om table name where ."  19. #显示表结构   20. db2 describe table tablename   21. #修改列   22. db2 alter table tablename alter column columname set data type varchar(24) 

31、60;脚本文件操作命令 1. #执行脚本文件   2. db2 -tvf scripts.sql  帮助命令 1. #查看命令帮助   2. db2 ? db2start   3. #查看错误码信息   4. db2 ? 22001  DB2   常用命令   II 1 启动数据库  db2start     

32、;2 停止数据库  db2stop     3 连接数据库  db2 connect to o_yd user db2 using pwd4 读数据库管理程序配置  db2 get dbm cfg     5 写数据库管理程序配置  db2 update dbm cfg using 参数名 参数值&

33、#160;6 读数据库的配置     db2 connect to o_yd user db2 using pwd     db2 get db cfg for o_yd     7 写数据库的配置     db2 connect to o_yd user d

34、b2 using pwd     db2 update db cfg for o_yd using 参数名 参数值     8 关闭所有应用连接     db2 force application all     db2 force application ID1,ID2,Idn

35、 MODE ASYNC     (db2 list application for db o_yd show detail)     9 备份数据库     db2 force application all     db2 backup db o_yd to d: &

36、#160;   (db2 initialize tape on .tape0)       (db2 rewind tape on .tape0)     db2 backup db o_yd to .tape0     10恢复数据库     db2 restore&

37、#160;db o_yd from d: to d:       db2 restore db o_yd from .tape0 to d:     11绑定存储过程     db2 connect to o_yd user db2 using pwd     

38、;db2 bind c:dfplus.bnd     拷贝存储过程到服务器上的C:sqllibfunction目录中     12整理表     db2 connect to o_yd user db2 using pwd     db2 reorg table ydd     db2&#

39、160;runstats on table ydd with distribution and indexes all     13导出表数据     db2 export to c:sw.txt of del select * from dftz     db2 export to c:sw.ixf of&

40、#160;ixf select * from dftz     14导入表数据     db2 import from c:sw.txt of del insert into ylbx.czyxx    db2 import to c:sw.txt of del commitcount 5000&#

41、160;messages c:dftz.msg insert into dftz     db2 import to c:dftz.ixf of ixf commitcount 5000 messages   c:dftz.msg insert into dftz     db2 import to c:dftz.ix

42、f of ixf commitcount 5000 insert into dftz     db2 import to c:dftz.ixf of ixf commitcount 5000 insert_update into dftz     db2 import to c:dftz.ixf of ixf 

43、;commitcount 5000 replaceinto dftz     db2 import to c:dftz.ixf of ixf commitcount 5000 create into dftz(仅IXF)     db2 import to c:dftz.ixf of ixf commitcount 5000&#

44、160;replace_create into dftz(仅IXF)     15执行一个批处理文件     db2 tf   批处理文件名     (文件中每一条命令用   ;结束)     16自动生成批处理文件     建文本文件:temp.sql     select&#

45、160;'runstats on table DB2.' | tabname | ' with distributionand detailed indexes all;' from syscat.tables wheretabschema='DB2' and type='T'     db2 tf temp.sql>

46、runstats.sql     17自动生成建表(视图)语句     在服务器上:C:sqllibmisc目录中      db2 connect to o_yd user db2 using pwd     db2look d o_yd u db2 e p c c:o_yd.

47、txt        db2look -d lys -e -a -x -i db2admin -o c:aa.txt     18其他命令      grant dbadm on database to user bb     select *

48、60;from czyxx fetch first 1 rows only db2look d lys u db2admin w asd -a e o c:mytable.txt 2 停止数据库 db2stop 3 连接数据库 db2 connect to o_yd user db2 using pwd 4 读数据库管理程序配置 db2 get dbm cfg 5 写数据库管理程序配置 db2 update dbm cfg u

49、sing 参数名 参数值 6 读数据库的配置 db2 connect to o_yd user db2 using pwd db2 get db cfg for o_yd 7 写数据库的配置 db2 connect to o_yd user db2 using pwd db2 update db cfg for o_yd using 参数名 参数值 8 关闭所有应用连接 db2 force application all db2 force application ID1,ID2,Idn MODE ASYNC (db2 list application for db o_yd show det

50、ail) 9 备份数据库 db2 force application all db2 backup db o_yd to d: (db2 initialize tape on .tape0) (db2 rewind tape on .tape0) db2 backup db o_yd to .tape0 10 恢复数据库 db2 restore db o_yd from d: to d: db2 restore db o_yd from .tape0 to d: 11 绑定存储过程 db2 connect to o_yd user db2 using pwd db2 bind c:dfplus

51、.bnd 拷贝存储过程到服务器上的C:sqllibfunction目录中 12 整理表 db2 connect to o_yd user db2 using pwd db2 reorg table ydd db2 runstats on table ydd with distribution and indexes all 13 导出表数据 db2 export to c:sw.txt of del select * from dftz db2 export to c:sw.ixf of ixf select * from dftz 14 导入表数据 db2 import from c:sw.txt of del insert into ylbx.czyxx db2 import to c:sw.txt of del commitcount 5000 messages c:dftz.msg insert into dftz db2 import to c:dftz.ixf of ixf commitcount 5000 messages c:dftz.msg insert into dftz db2 import to c:dftz.ixf of ixf commitcount 5000 insert into dftz

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论