DB2_日常维护指南,第_1_部分

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

DB2日常维护指南,第1部分检查DAS、实例、表空间、表、磁盘的状态级别:初级程永(cyong@cn.ibm.com),高级信息工程师,IBM王雪梅(xuemay_2000@163.com),高级数据库工程师,自由撰稿人2008年11月20日本文主要介绍数据库管理员(DBA)在日常维护中如何形成自己的维护规范,一个完整的日常维护规范可以帮助DBA理顺每天需要的操作,以便更好的监控和维护数据库,保证数据库的正常、安全、高效运行,防止一些错误重复发生。“DB2日常维护指南,第1部分”具体包括检查管理服务器(DAS)是否启动、检查DB2实例是否启动、查看表空间的状态是否正常、检查表的状态是否正常、查看磁盘空间是否有异常、查看存储管理软件、数据库备份、日志归档是否正常等。通过明确日常中的每一天该做什么,形成完善的日常管理维护规范,从而更好对数据库进行维护。检查管理服务器是否启动DB2管理服务器(DAS)是用于辅助DB2实例上任务的一个控制点,如果想使用DB2提供的图形化工具(如“控制中心”、“配置顾问程序”等)、工具目录数据库(ToolsCatalog)、数据库发现等功能,则必须有一个正在运行的DAS。DAS主要有以下功能:企业DB2数据库实例的远程管理。提供用于作业管理的工具,包括调度DB2数据库管理器和操作系统命令脚本运行的能力,这些命令脚本是用户定义的。使用“任务中心”来对DAS的远程或本地做到定义作业的安排,查看已完成作业的结果以及执行其他管理任务。与DB2发现实用程序一起提供一种查找关于DB2实例、数据库以及其他DB2管理服务器配置信息的方法。“配置助手”和“控制中心”使用此信息来简化和自动执行客户机与DB2数据库的连接配置。一个数据库物理服务器包括一个管理服务器(AdminServer)以及一个或多个实例,每个实例(数据库管理器databasemanager)是一个逻辑服务器,可以拥有一个到多个数据库。每个数据库服务器有且只能有一个DAS,如果没有DAS,需要发出dascrt命令(这个命令只是在UNIX平台有效,在Windows平台需要使用“db2admincreate”命令)或者db2admincreate命令(在windows和UNIX平台都可以使用)来创建一个DAS。如果创建了不止一个DAS,则需要通过发出dasdrop命令(这个命令只是在UNIX平台有效,在Windows平台需要使用“db2admindrop”命令)或db2admindrop命令(在windows和UNIX平台都可以使用)来删除多余的DAS。Windows和UNIX上的DAS包括一个调度程序,以运行使用任务中心定义的任务(例如,DB2数据库和操作系统命令脚本)。任务信息(例如,要运行的命令,与任务相关联的安排、通知和完成操作)以及运行结果存储在DB2数据库中称为工具目录的一组表和视图中。工具目录是作为安装的一部分创建的。还可以通过控制中心或通过CLP使用CREATETOOLSCATALOG命令创建和激活它。DAS服务器如图1所示,一个DAS可以有多个实例,每个实例可以有一个或多个数据库,具体如图1所示:图1.DB2AdminServer(DAS)以UNIX平台为例,我们来看一下如何确定DAS已经启动,以管理员身份登录操作系统,在shell窗口中用ps命令查看是否有dasusr1后台进程来确定DAS是否正常启动,如果有这个进程,说明DAS正常启动了,如果没有,说明DAS没有正常启动,具体如清单01所示:清单1.检查是否存在dasusr1进程,以便得知DAS是否启动#ps-ef|dasusr1请确保管理服务器已经启动,如果没有启动,则按以下步骤启动管理服务器:以管理服务器用户(UNIX默认是DASUSR1)登录发出db2adminstart命令如果是HA环境,则要保证在脚本中正确配置了启动命令对于Windows平台,也可以通过服务的方式来查看DAS是否启动,如果发现其没有启动,可以通过服务的方式将其启动起来,具体如图02所示:图2.在服务中启停DAS检查DB2实例是否已经启动实例是逻辑数据库管理器环境,您可以在此环境中对数据库进行编目和设置配置参数。根据需要,可以在同一台物理服务器上创建多个实例,该服务器为每个实例提供唯一的数据库服务器环境。只有实例正常启动,其下的数据库才能正常使用,以UNIX平台为例,我们来看一下如何确定实例已经启动,以管理员身份登录操作系统,用ps命令查看是否有db2sysc后台进程,每个db2sysc进程代表启动了一个实例,具体命令如清单02所示:清单2.检查是否存在db2sysc进程,以便得知实例是否启动#ps-ef|db2sysc也可以以DB2实例所有者身份登录,通过发出db2start命令来确保启动了实例(如果实例已经启动,则会告知SQL1026N数据库管理器已激活;否则,将把实例启动起来)。启动实例时,在UNIX平台需要以DB2实例所有者身份登录,否则将无法顺利执行db2start命令。如果想停止实例,可以先断开所有的连接(通过forceapplicationsall命令断开连接,此命令为异步的,可能未能立即生效,想查看当前还有多少连接可以通过listapplications命令查看),再发出db2stop命令停下实例。如果你需要强制停止实例,你可以使用db2stopforce命令。在UNIX环境下,默认创建的实例是DB2INST1,在Windows平台,默认创建的实例是DB2,如果想切换实例:UNIX:用“su-实例用户名”进行切换,需要注意的是实例用户所属的“.profile”文件里需要包含调用db2profile的脚本,比如在UNIX环境下,DB2INST1实例用户的profile文件中将有调用“/home/db2inst1/sqllib/db2profile”的脚本。如果是图形化界面方式安装,一般实例所有者用户的“.profile”都会有相应的脚本,如果是手工方式安装,需要保证“.profile”都会有相应的脚本。WINDOWS:通过设置环境变量DB2INSTANCE进行切换,也就是使用“setDB2INSTANCE=实例名”的方式进行切换实例。在Windows平台,启停实例还可以在服务窗口使用图形化的方式进行,具体如图3所示:图3.在服务中启停实例查看表空间状态是否正常DB2使用表和表空间的状态来控制对数据的访问(也就是帮助保护数据库的完整性),目前DB2至少支持25种表或表空间的状态。与恢复相关的最常见表空间状态是:备份暂挂。在前滚操作的某个时间点后,或不带有复制选项的装入操作后,表空间将置于此状态。在可使用该表空间之前必须对其备份。(如果未进行备份就不能更新表空间,但允许只读操作。)复原暂挂。如果取消了对表空间的前滚操作,或对表空间的前滚操作遇到了不可恢复错误(此时必须再次复原并前滚表空间),会将表空间置于此状态。在复原操作期间,如果无法复原表空间,该表空间也会处于此状态。正在前滚。表空间在对它进行的前滚操作正在进行中时,被置于此状态。一旦前滚操作成功完成,表空间就不再处于“正在前滚”状态。如果取消了对表空间的前滚操作,表空间也会结束此状态。前滚暂挂。表空间在复原后可能发生了输入/输出(I/O)错误后被置于此状态。复原后,表空间可前滚到日志的末尾可某时间点。发生了I/O错误后,表空间必须前滚到日志的末尾。可以使用LISTTABLESPACES命令确定连接数据库中表空间的当前状态,使用SHOWDETAIL选项查看表空间的详细信息。比如我们打开一个DB2CLP窗口,连上示例数据库SAMPLE,发出listtablespacesshowdetail命令,可以看到表空间的状态的返回值为“0x0000”,接着用db2tbst来查看状态编号对应的含义,可以知道,其代表“正常”,部分信息具体如清单3所示:清单3.查看示例数据库SAMPLE的表空间状态C:\db2connecttosample数据库连接信息数据库服务器=DB2/NT9.1.0SQL授权标识=RHETTE本地数据库别名=SAMPLEC:\db2listtablespacesshowdetail当前数据库的表空间表空间标识=0名称=SYSCATSPACE类型=数据库管理空间内容=所有持久数据。常规表空间。状态=0x0000详细解释:正常总计页数=8192可用页数=8188已用页数=7776可用页数=412高水位标记(页)=7776页大小(以字节计)=8192扩展数据块大小(页)=4预取大小(页)=4容器数=1表空间标识=1名称=TEMPSPACE1类型=系统管理空间内容=系统临时数据状态=0x0000详细解释:正常总计页数=1可用页数=1已用页数=1可用页数=不适用高水位标记(页)=不适用页大小(以字节计)=8192扩展数据块大小(页)=32预取大小(页)=32容器数=1表空间标识=2名称=USERSPACE1类型=数据库管理空间内容=所有持久数据。大型表空间。状态=0x0000详细解释:正常总计页数=4096可用页数=4064已用页数=1824可用页数=2240高水位标记(页)=1824页大小(以字节计)=8192扩展数据块大小(页)=32预取大小(页)=32容器数=1....................C:\db2tbst0x0000State=Normal命令成功完成。在清单3中我们可以看到,状态编号0x0000代表的状态是正常(Notmal)。我们可以使用db2tbst查看状态编号对应的状态含义,具体语法如清单4所示:清单4.db2tbst语法db2tbsttablespacestatedb2tbst命令接收十六进制的状态值,并返回相应的表空间状态。表空间的状态可以是由单个状态值之和构成,比如如果表空间的状态是QuiescedShare(状态编码0x00001)和QuiescedUpdate(状态编码0x00002),那么所返回的十六进制值就是0x00003(0x00001+0x00002)。所有的表空间状态如表1所示:表1.表空间状态十六进制值十进制值State0x00正常0x11停顿:SHARE0x22停顿:UPDATE0x44停顿:EXCLUSIVE0x88装入暂挂0x1016删除暂挂0x2032备份暂挂0x4064正在前滚0x80128前滚暂挂0x100256复原暂挂0x200512禁用暂挂0x4001024正在重组0x8002048正在备份0x10004096必须定义存储器0x20008192正在复原0x400016384脱机并且不可访问0x800032768删除暂挂0x200000033554432可以定义存储器0x400000067108864存储器定义处于“最终”状态0x8000000134217728在前滚之前已更改存储器定义0x10000000268435456DMS重新平衡程序处于活动状态0x20000000536870912正在进行TBS删除0x400000001073741824正在进行TBS创建下面我们以Unix系统上的DB2为例,来看一下如何查看实例DB2INST1下数据库MYDB的表空间状态是否正常,首先我们以DB2INST1实例的实例所有者(也就是db2inst1用户)身份登录,连上数据库MYDB,发出listtablespacesshowdetail命令,查看表空间的状态是否正常,具体如清单5所示:清单5.检查表空间状态是否正常示例(UNIX)#db2listtablespacesshowdetail//在单分区上查看表空间的状态,正常返回0x0000#db2_alllisttablespacesshowdetail//在所有分区上查看表空间的状态在Windows平台,想查看数据库的状态,同样使用listtablespacesshowdetail命令。查看表的状态在DB2V9.1中“设置完整性暂挂”(Setintegritypending)替换了“检查暂挂表”(checkpending

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功