1、DB常维护手册V11DB2日常维护手册一、DB2日常维护日操作1、检查管理服务器是否启动用ps命令查看是否有dasusr1后台进程 ps -ef | dasusr1请确保管理服务器已经启动,如果没有启动,则按以下步骤启动管理服务器:以管理服务器用户(UNIX默认是DASUSR1)登录发出db2admin start命令如果是HA环境,则要保证在脚本中正确配置了启动命令2、检查DB2实例是否已经启动用ps命令查看是否有db2sysc后台进程ps -ef | db2sysc也可以以DB2实例所有者登录,通过发出db2start命令来确保启动了实例(如果实例已经启动,则会告知SQL1026N 数据库
2、管理器已激活;否则,将把实例启动起来)3、查看表空间状态是否正常以db2实例所有者登录#db2 list tablespaces show detail /在单分区上查看表空间的状态,正常返回0x0000# db2_all list tablespaces show detail /在所有分区上查看表空间的状态可以使用LIST TABLESPACES 命令确定连接数据库中表空间的当前状态,可以使用SHOW DETAIL选项查看表空间的详细信息。比如,我们连上SAMPLE数据库,执行list tablespaces show detail ,可以看到状态返回值是0x0000,此时,使用db2tb
3、st可以查看状态编号对于的状态含义,具体语法如下:db2tbst 可以查看编号所代表的状态db2tbst 命令接收十六进制的状态值,并返回相应的表空间状态。例如,命令 db2tbst 0x0008 返回 State = Load Pending 。而该十六进制的状态值反过来又是 LIST TABLESPACES 命令输出的组成部分。表空间的外部可见状态是由单个状态值的十六进制总和构成的。例如,如果表空间的状态是 Backup Pending和 Load in Progress,那么所返回的十六进制值就是 0x20020(0x00020 + 0x20000)4、查看表的状态查询系统目录视图以获得
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 test15、查看磁盘空间查看数据
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或第三方存储管理软件,看备份映像文件是否完整的保存到
6、了磁带机上了,想在DB2上查看备份情况,可以使用LIST命令# db2 list history backup all for 数据库名8、检查归档日志是否正确归档了请确保活动日志目录下没有的日志文件都已经正确归档到了带机上(查看TSM或第三方存储管理软件)。查看活动目录里的日志文件:#ls -l9、查看缓冲池的命中率# db2 get snapshot for bufferpools on 数据库名查看缓冲池的命中率,看其是否低于95%(命中率越高越好)10、查看当前运行最频繁的SQL,其命中率是否正常# db2 get snapshot for bufferpools on 数据库名 lo
7、g.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 (应用程序句柄)停下来。1
8、2、检查有没有死锁# 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 S
9、TATISTICS ON TABLE SYSTEM| TABLE USER | TABLE ALL | TABLE table_name | SCHEMA schema_nameUPDATE STATISTICS: 更新表的统计数据,根据该统计数据判断是否需要重组表CURRENT STATISTICS:根据当前表统计数据判断是否需要重组表TABLE table_name : 对单个表进行分析TABLE ALL: 对数据库所有的表进行分析TABLE SYSTEM: 对系统表进行分析TABLE USER : 对当前用户模式下的所有表进行分析 #db2 reorgchk update statist
10、ics on table all15、对需要重组的表进行重组#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
11、_all命令。二、DB2日常维护月操作1、查看DB2日志请至少每月查看一次db2diag.log文件,看其中是否有异常。2、检查备份和日志是否都保存好了通过TSM或第三方存储管理软件,查看备份和归档日志是否都保存好了,在数据库级别查看备份,可以使用:# db2 list history backup all for 数据库名三、DB2日常维护季度操作1、通过快照监控器,查看系统性能如何通过快照监控器,抓取数据库的信息,分析数据库性能是否合理:# db2 get snapshot for all on 数据库名 log.txt2、数据库补丁级别# db2level四、注意事项1、不要删除活动日志
12、文件DB2 的活动日志文件不能被删除。一旦 DB2 的活动日志文件被删除,或者所在的存储设备出现问题,则不可避免地造成 DB2 数据库系统宕机。2、注意交易日志存储空间在归档日志模式下,如果没有使用自动归档方式,则存储的日志文件会不断增多,有可能造成日志所在的文件系统空间满。 当这种情况发生时,会根据参数 BLK_LOG_DSK_FUL 的配置而有不同的现象:1)如果该参数启用,则 DB2 数据库可继续读操作,但是写操作会挂起2)如果该参数没有启用,则 DB2 数据库会停止工作两种情况下,都需要到日志所在的文件系统添加了空间才恢复正常。3、按照系统的实际工作量配置日志空间DB2数据库通过日志文
13、件维护数据的完整性和一致性。DB2 数据库的日志空间可通过如下公式计算:日志空间 = (主日志文件 + 二级日志文件) * 日志文件尺寸 其中:1)主日志文件由参数 LOGPRIMARY 控制,2)二级日志文件由参数 LOGSECOND 控制3)日志文件尺寸由参数 LOGFILSIZ 控制4)LOGPRIMARY + LOGSECOND 256 (不同的 DB2 版本略有不同,请参看相同版本的 DB2 手册确认)4、设置正确数据库代码页由于数据库的代码页在数据库创建之后是无法修改的,所以在创建数据库时一定要选择正确的代码页。错误的数据库代码页会造成 JDBC/ODBC 访问时中文字段被截断(包
14、括控制中心),这种情况需要重建数据库以修改数据库代码页。从全局规划来说,如果应用需要访问多个数据库,那么这多个数据库的代码页应该是一致的。5、检查许可证(License)安装情况许可证过期会造成不必要的服务中断,所以在 DB2 安装完毕后,建议检察许可的安装情况6、创建数据库前调整好系统时间在数据库创建好之后,调整系统时间会造成数据库内部时间戳的异常。数据库中一些对象和时间相关,一旦时间不准确要调整需要很小心。错误的时间调整可能会造成很多问题,如:1)某些对象失效,例如 :SQL0440N,找不到具有兼容自变量的类型为 “” 的名为 “” 的已授权例程2)数据库日志逻辑错误 - 宕机3)常见错
15、误 只调整时间,未调整时区7、不要随便执行 chown (chmod) R (UNIX/Linux)在实例目录下chown (chmod) -R 会造成1)在数据库服务器上 db2 connect to 能连接上数据库2)db2 connect to user . using .连接不上8、在归档日志模式下使用LOAD记得加NONRECOVERABLE参数五、附:以脱机方式重组表以脱机方式重组表是整理表碎片的最快方法。重组可减少表所需的空间量并提高数据访问和查询性能。必须具有 SYSADM、SYSCTRL、SYSMAINT 或 DBADM 权限,或者必须具有对表的 CONTROL 权限才能重组表。必须具有数据库连接才能重组表。标识需要重组的表之后,可以对这些表运行 REORG 实用程序,并且可以选择对在这些表上定义的任何索引运行该实用程序。1.要使用 CLP 重组表,请发出 REORG TABLE 命令: db2 reorg tabl
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1