zoukankan      html  css  js  c++  java
  • DB2维护手册

    一、 DB2日常维护日操作 3
    1、 检查管理服务器是否启动 3
    2、 检查DB2实例是否已经启动 3
    3、 查看表空间状态是否正常 3
    4、 查看表的状态 4
    5、 查看磁盘空间 4
    6、 检查存储管理软件是否正常 4
    7、 检查数据库备份是否正常 5
    8、 检查归档日志是否正确归档了 5
    9、 查看缓冲池的命中率 5
    10、 查看当前运行最频繁的SQL,其命中率是否正常 5
    11、 查看当前连接的应用程序,有没有非法连接 5
    12、 检查有没有死锁 6
    13、 对表和索引进行RUNSTATS 6
    14、 检查表是否需要重组 6
    15、 对需要重组的表进行重组 7
    二、 DB2日常维护月操作 7
    1、 查看DB2日志 7
    2、 检查备份和日志是否都保存好了 7
    三、 DB2日常维护季度操作 7
    1、 通过快照监控器,查看系统性能如何 7
    2、 数据库补丁级别 8
    四、 注意事项 8
    1、 不要删除活动日志文件 8
    2、 注意交易日志存储空间 8
    3、 按照系统的实际工作量配置日志空间 8
    4、 设置正确数据库代码页 9
    5、 检查许可证(LICENSE)安装情况 9
    6、 创建数据库前调整好系统时间 9
    7、 不要随便执行 CHOWN (CHMOD) –R (UNIX/LINUX) 9
    8、 在归档日志模式下使用LOAD记得加NONRECOVERABLE参数 9
    五、 附:以脱机方式重组表 9
    六、 附:索引重组 10
    七、 附:收集和更新统计信息的准则 11
    八、 附:使用 CLP 捕获数据库运行状况快照 13
     
    一、 DB2日常维护日操作
    1、 检查管理服务器是否启动
    用ps命令查看是否有dasusr1后台进程 
     #ps -ef | dasusr1
    请确保管理服务器已经启动,如果没有启动,则按以下步骤启动管理服务器:
     以管理服务器用户(UNIX默认是DASUSR1)登录
     发出db2admin start命令
     如果是HA环境,则要保证在脚本中正确配置了启动命令
    2、 检查DB2实例是否已经启动
    用ps命令查看是否有db2sysc后台进程
    #ps -ef | db2sysc
    也可以以DB2实例所有者登录,通过发出db2start命令来确保启动了实例(如果实例已经启动,则会告知SQL1026N  数据库管理器已激活;否则,将把实例启动起来)
    3、 查看表空间状态是否正常
    以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>  可以查看编号所代表的状态
    db2tbst 命令接收十六进制的状态值,并返回相应的表空间状态。例如,命令 db2tbst 0x0008 返回 State = Load Pending 。而该十六进制的状态值反过来又是 LIST TABLESPACES 命令输出的组成部分。表空间的外部可见状态是由单个状态值的十六进制总和构成的。例如,如果表空间的状态是 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 NOT LIKE SYS%  ORDER BY tabname
    也可以使用load query命令查看单个表的状态,比如对表TEST1,我们可以发出如下命令:
    #db2 load query table test1
    5、 查看磁盘空间
    查看数据库活动日志目录是否已满,活动日志目录可以使用get db cfg查看,注意一定不要手工删除活动日志
    #df -k
    查看SMS表空间对应的容器目录空间是否满了
    #df -k
    查看DMS表空间中是否还有可用页
    #db2 list tablespaces show detail        //在单分区上查看表空间的是否还有可用页
    # db2_all list tablespaces show detail    //在所有分区上查看表空间是否还有可用页
    6、 检查存储管理软件是否正常
    请检查TSM或其他存储管理软件是否正常,以及磁带机是否运行正常。
    7、 检查数据库备份是否正常
    请查看TSM或第三方存储管理软件,看备份映像文件是否完整的保存到了磁带机上了,想在DB2上查看备份情况,可以使用LIST命令
    # db2 list history backup all for 数据库名
    8、 检查归档日志是否正确归档了
    请确保活动日志目录下没有的日志文件都已经正确归档到了带机上(查看TSM或第三方存储管理软件)。
    查看活动目录里的日志文件:
    #ls -l
    9、 查看缓冲池的命中率
    # db2 get snapshot for bufferpools on 数据库名
    查看缓冲池的命中率,看其是否低于95%(命中率越高越好)
    10、 查看当前运行最频繁的SQL,其命中率是否正常
    # db2 get snapshot for bufferpools on 数据库名  > log.txt
    用grep命令查看" Number of executions"执行次数最频繁的语句,看其命中率是否正常。
    比如:
    grep -n " Number of executions" snap.out | grep -v "= 0" | sort -k 5,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" log.txt | grep -v "= 0" | more 
    13、 对表和索引进行runstats
    #db2 runstats on table 表名 and index all
    对系统表以及变化比较频繁的表运行统计信息,建议写成shell脚本自动运行。
    14、 检查表是否需要重组
    使用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
    15、 对需要重组的表进行重组
    #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命令。
    二、 DB2日常维护月操作
    1、 查看DB2日志
    请至少每月查看一次db2diag.log文件,看其中是否有异常。
    2、 检查备份和日志是否都保存好了
    通过TSM或第三方存储管理软件,查看备份和归档日志是否都保存好了,在数据库级别查看备份,可以使用:
    # db2 list history backup all for 数据库名
    三、 DB2日常维护季度操作
    1、 通过快照监控器,查看系统性能如何
    通过快照监控器,抓取数据库的信息,分析数据库性能是否合理:
    # db2 get snapshot for all on 数据库名 > log.txt
    2、 数据库补丁级别
    # db2level
    四、 注意事项
    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、 设置正确数据库代码页
    由于数据库的代码页在数据库创建之后是无法修改的,所以在创建数据

  • 相关阅读:
    POJ 1466 Girls and Boys 黑白染色 + 二分匹配 (最大独立集) 好题
    POJ2226 Muddy Fields 二分匹配 最小顶点覆盖 好题
    POJ 2195 Going Home 最小费用流 裸题
    POJ 3368 Frequent values RMQ 训练指南 好题
    POJ 3187 杨辉三角+枚举排列 好题
    POJ 2393 贪心 简单题
    系统监控
    系统的初始化和服务
    vi与vim
    正文处理命令及tar命令
  • 原文地址:https://www.cnblogs.com/vipsoft/p/2630032.html
Copyright © 2011-2022 走看看