《DB2数据库健康检查》第1部分
- 1 进程检查
- 1.1 检查管理服务器是否启动
- 1.2. 检查DB2实例是否已经启动
- 2 数据库对象检查
- 2.1 数据库能否正常连接
- 2.2 查看表空间状态是否正常
- 2.3 监控开关是否开启
- 2.4 数据库大小
- 2.5. 检查容器状态是否正常
- 2.6 查看bufferpool属性
- 2.7 查看表的状态
- 2.8 表空间使用情况
1 进程检查
1.1 检查管理服务器是否启动
检查点:
用ps命令查看是否有dasusr1后台进程
检查方法:
ps -ef | grep dasrrm|grep -v grep
标准:
- 存在dasrrm进程则为健康,
- 不存在dasrrm进程是不健康。
示例:
$ ps -ef | grepdasrrm|grep -v grepdasusr1 75674 1 0 5月01 - 1:43 /home/dasusr1/das/adm/db2dasrrm
//输出信息说明:
请确保管理服务器已经启动,如果没有启动,则按以下步骤启动管理服务器:
以管理服务器用户(如:dasusr1)登录
发出db2admin start命令
如果是HA环境,则要保证在脚本中正确配置了启动命令
1.2. 检查DB2实例是否已经启动
检查点:
用ps命令查看是否有db2sysc后台进程
检查方法:
ps -ef | grep db2sysc
标准:
- 存在db2sysc进程则为健康,
- 不存在db2sysc进程是不健康。
示例:
$ ps -ef | grep db2sysc
db2inst1 201016 340516 0 10月23 - 0:06 db2sysc 0
db2inst1 307466 438860 0 08时40分15秒pts/0 0:00 grep db2sysc
//输出信息说明:
使用DB2实例所有者(如:db2inst1)登录,通过发出db2start命令来确保启动了实例
(如果实例已经启动,则会告知SQL1026N 数据库管理器已激活;否则,需要重新启动)
2 数据库对象检查
2.1 数据库能否正常连接
检查点:
数据库是否可以正常访问
检查方法:
$db2 list active databases
$db2 connect to 数据库
//标准:存在输出结构,说明有活动数据库
示例:
$ db2 list active databasesActive DatabasesDatabase name = MYSPLITApplications connected currently = 4Database path = /sjxf/datadb/mysplit/db2inst2/NODE0000/SQL00001/$ db2 connect to MYSPLIT Database Connection InformationDatabase server = DB2/AIX64 9.1.8SQL authorization ID = DB2INST1Local database alias = MYSPLIT
//输出信息说明:输出结构为数据库名称,应用连接数和数据库路径
2.2 查看表空间状态是否正常
检查点:
查看表空间状态是否正常
检查方法:
db2 list tablespaces show detail |grep -i state //在单分区上查看表空间的状态,
db2_all list tablespaces show detail|grep -i state //在所有分区上查看表空间的状态
//标准: 正常返回0x0000为健康,不是返回0x0000为不健康。
示例:
$ db2 list tablespaces show detail |grep -i stateState = 0x0000State = 0x0000
//输出信息说明:
1、使用LIST TABLESPACES 命令确定连接数据库中表空间的当前状态,可以使用SHOW DETAIL选项查看表空间的详细信息(db2 list tablespaces show detail)状态返回值是0x0000,此时,使用 db2tbst可以查看状态编号对于的状态含义,具体语法如下:
2、db2tbst <tablespace state>可以查看编号所代表的状态
3、db2tbst 命令接收十六进制的状态值,并返回相应的表空间状态。例如,命令 db2tbst 0x0008 返回 State = Load Pending 。而该十六进制的状态值反过来又是 LIST TABLESPACES 命令输出的组成部分。表空间的外部可见状态是由单个状态值的十六进制总和构成的。例如,如果表空间的状态是 Backup Pending和 Load in Progress,那么所返回的十六进制值就是 0x20020(0x00020 + 0x20000)
2.3 监控开关是否开启
检查点:
查看监控开关是否打开
检查方法:
db2 get monitor switches
//标准: 返回OFF为关闭,返回ON为打开。
示例:
$ db2 get monitor switchesMonitor Recording SwitchesSwitch list for db partition number 0Buffer Pool Activity Information (BUFFERPOOL ) = OFFLock Information (LOCK) = OFFSorting Information (SORT) = OFFSQL Statement Information (STATEMENT) = OFFTable Activity Information (TABLE) = OFFTake Timestamp Information (TIMESTAMP) = OFFUnit of Work Information (UOW) = OFF
//输出信息说明:建议设置为ON,开启命令:db2 update dbmcfg using BUFFERPOOL ON
2.4 数据库大小
检查点:
查看数据库大小
检查方法:
$db2 "call GET_DBSIZE_INFO(?,?,?,0)"
//标准:检查当前数据库的容量大小
示例:
$ db2 "call GET_DBSIZE_INFO(?,?,?,0)"Value of output parameters--------------------------Parameter Name : SNAPSHOTTIMESTAMPParameter Value : 2013-10-24-09.57.58.642597Parameter Name : DATABASESIZEParameter Value : 3756920832Parameter Name : DATABASECAPACITYParameter Value : 8237072382
//输出信息说明:命令输出为执行时间,红色字体为数据库大小,蓝色字体为数据库容量大小。
2.5. 检查容器状态是否正常
检查点:
查看容器状态是否正常
检查方法:
$db2 "select substr(tbsp_name,1,25) tbsp_name,substr(container_name,1,50) container_name,total_pages,usable_pages,accessible from sysibmadm.snapcontainer"
//标准: ACCESSIBLE列返回1为健康,ACCESSIBLE列返回不为1为不健康。
示例:
$ db2 "select substr(tbsp_name,1,25) tbsp_name,substr(container_name,1,50) container_name,total_pages,usable_pages,accessible from sysibmadm.snapcontainer"TBSP_NAME CONTAINER_NAME TOTAL_PAGES USABLE_PAGES ACCESSIBLE------------------------- -------------------------------------------------- -------------------- -------------------- ----------SYSCATSPACE /bopdwt_tag/db2inst1/NODE0000/BOPDW_T/T0000000/C00 24576 24572 1TEMPSPACE1 /bopdwt_tag/db2inst1/NODE0000/BOPDW_T/T0000001/C00 0 0 1USERSPACE1 /bopdwt_tag/db2inst1/NODE0000/BOPDW_T/T0000002/C00 8192 8160 1TBS_GATHER /dev/rdbtbs_gather 2457600 2457592 1
//输出信息说明:ACCESSIBLE字段是能否访问容器(1 表示可以访问,0 表示不能访问)。
2.6 查看bufferpool属性
检查点:
查看bufferpool的属性
检查方法:
$db2 "select substr(bpname,1,20) bpname,bufferpoolid,substr(dbpgname,1,20) dbpgname,npages,pagesize from syscat.bufferpools"
//标准: 查看bufferpool的属性。
示例:
$ db2 "select substr(bpname,1,20) bpname,bufferpoolid,substr(dbpgname,1,20) dbpgname,npages,pagesize from syscat.bufferpools"BPNAME BUFFERPOOLID DBPGNAME NPAGES PAGESIZE -------------------- ------------ -------------------- ----------- -----------IBMDEFAULTBP 1 - -2 4096BFPIDX 2 - 196608 32768BFPOTH 4 - 131072 8192BFPDATA 3 - 196608 32768
//输出信息说明:查看每个容器对应的BUFFERPOOL配置
2.7 查看表的状态
Ø 检查点:查看表是否正常Ø 检查方法:$db2 "select substr(tabschema,1,10) as schema,substr(tabname,1,30) as tabname,status,type from syscat.tables where status !='N'"Ø 标准:STATUS列返回为C表示待审核。Ø 示例:
$ db2 "select substr(tabschema,1,10) as schema,substr(tabname,1,30) as tabname,status,type from syscat.tables where status !='N'"SCHEMA TABNAME STATUS TYPE
---------- ------------------------------ ------ ----
DB2INST1 FACT_IO_BK_TRADE C T
DB2INST1 FACT_IO_DF_AREA C T
DB2INST1 FACT_IO_DF_BANK C TØ 输出信息说明:ü 输出显示了模式名、表名、状态和表类型。ü 在 SYSCAT.TABLES 中有项的所有用户定义的表的名称,以及每个表的列数和表的状态(N = 正常;C = 待审核(check pending))
2.8 表空间使用情况
检查点:
查看表空间使用情况
检查方法:
$db2 "select substr(tbsp_name,1,18) tbsp_name,tbsp_type,tbsp_free_size_kb/1024 as tbsp_free_size_M,tbsp_utilization_percent from sysibmadm.tbsp_utilization"
//标准: 返回为表空间的类型、剩余大小(MB)、使用率。
示例:
$ db2 "select substr(tbsp_name,1,18) tbsp_name,tbsp_type,tbsp_free_size_kb/1024 as tbsp_free_size_M,tbsp_utilization_percent from sysibmadm.tbsp_utilization"TBSP_NAME TBSP_TYPE TBSP_FREE_SIZE_M TBSP_UTILIZATION_PERCENT------------------ ---------- -------------------- ------------------------SYSCATSPACE DMS 24 74.26TEMPSPACE1 SMS 0 -1.00USERSPACE1 DMS 26 16.47TBS_GATHER DMS 33463 50.49TBS_DETAIL DMS 6996 98.51
//输出信息说明: TBSP_TYPE此字段为表空间类型,分为(DMS和SMS);TBSP_FREE_SIZE_M此字段为表空间剩余大小为M。