DB2日常维护指南第1部分Word下载.docx
《DB2日常维护指南第1部分Word下载.docx》由会员分享,可在线阅读,更多相关《DB2日常维护指南第1部分Word下载.docx(26页珍藏版)》请在冰豆网上搜索。
![DB2日常维护指南第1部分Word下载.docx](https://file1.bdocx.com/fileroot1/2023-1/30/502565f1-b7de-4d95-9a27-f56512d0795d/502565f1-b7de-4d95-9a27-f56512d0795d1.gif)
发出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.0
SQL授权标识=RHETTE
本地数据库别名=SAMPLE
db2listtablespacesshowdetail当前数据库的表空间
表空间标识=0
名称=SYSCATSPACE
类型=数据库管理空间
内容=所有持久数据。
常规表空间。
状态=0x0000详细解释:
正常
总计页数=8192
可用页数=8188
已用页数=7776
可用页数=412
高水位标记(页)=7776
页大小(以字节计)=8192
扩展数据块大小(页)=4
预取大小(页)=4
容器数=1
表空间标识=1
名称=TEMPSPACE1
类型=系统管理空间
内容=系统临时数据
总计页数=1
可用页数=1
已用页数=1
可用页数=不适用
高水位标记(页)=不适用
扩展数据块大小(页)=32
预取大小(页)=32
表空间标识=2
名称=USERSPACE1
大型表空间。
总计页数=4096
可用页数=4064
已用页数=1824
可用页数=2240
高水位标记(页)=1824
....................
db2tbst0x0000
State=Normal
命令成功完成。
在清单3中我们可以看到,状态编号0x0000代表的状态是正常(Notmal)。
我们可以使用db2tbst查看状态编号对应的状态含义,具体语法如清单4所示:
清单4.db2tbst语法
db2tbst<
tablespacestate>
db2tbst命令接收十六进制的状态值,并返回相应的表空间状态。
表空间的状态可以是由单个状态值之和构成,比如如果表空间的状态是QuiescedShare(状态编码0x00001)和QuiescedUpdate(状态编码0x00002),那么所返回的十六进制值就是0x00003(0x00001+0x00002)。
所有的表空间状态如表1所示:
表1.表空间状态
十六进制值
十进制值
State
0x0
正常
0x1
1
停顿:
SHARE
0x2
2
UPDATE
0x4
4
EXCLUSIVE
0x8
8
装入暂挂
0x10
16
删除暂挂
0x20
32
备份暂挂
0x40
64
正在前滚
0x80
128
前滚暂挂
0x100
256
复原暂挂
0x200
512
禁用暂挂
0x400
1024
正在重组
0x800
2048
正在备份
0x1000
4096
必须定义存储器
0x2000
8192
正在复原
0x4000
16384
脱机并且不可访问
0x8000
32768
0x2000000
33554432
可以定义存储器
0x4000000
67108864
存储器定义处于“最终”状态
0x8000000
134217728
在前滚之前已更改存储器定义
0x10000000
268435456
DMS重新平衡程序处于活动状态
0x20000000
536870912
正在进行TBS删除
0x40000000
1073741824
正在进行TBS创建
下面我们以Unix系统上的DB2为例,来看一下如何查看实例DB2INST1下数据库MYDB的表空间状态是否正常,首先我们以DB2INST1实例的实例所有者(也就是db2inst1用户)身份登录,连上数据库MYDB,发出listtablespacesshowdetail命令,查看表空间的状态是否正常,具体如清单5所示:
清单5.检查表空间状态是否正常示例(UNIX)
#db2listtablespacesshowdetail
//在单分区上查看表空间的状态,正常返回0x0000
#db2_alllisttablespacesshowdetail
//在所有分区上查看表空间的状态
在Windows平台,想查看数据库的状态,同样使用listtablespacesshowdetail命令。
查看表的状态
在DB2V9.1中“设置完整性暂挂”(Setintegritypending)替换了“检查暂挂表”(checkpending)状态。
在V8中,带有尚未验证的约束的表处于“检查暂挂”状态。
在V9.1中,“设置完整性暂挂”替代了“检查暂挂”状态。
这些是等价的状态。
在大多数情况下,LOAD实用程序使用表级别锁定功能来限制对表的访问。
LOAD实用程序不会停顿装入操作所使用的表空间,并且仅对指定了COPYNO选项的装入操作使用表空间状态。
锁定级别取决于装入操作是否允许进行读访问。
ALLOWNOACCESS方式的装入操作在装入期间将对表使用互斥锁定。
ALLOWREADACCESS方式的装入操作将获取更新锁定并在装入操作期间维护该锁定,落实数据时,将把该锁定升级为互斥锁定。
在ALLOWREADACCESS方式的装入操作开始之前,LOAD实用程序将等待所有在该装入操作前开始的应用程序释放对目标表挂起的锁定。
由于锁定不是持久的,而在装入操作中止后仍会保持表状态,所以使用表状态对它们进行补充。
可以使用LOADQUERY命令来检查这些状态。
通过使用LOCKWITHFORCE选项,LOAD实用程序将强制应用程序释放对它将要装入数据的目标表的冲突锁定。
LOADQUERY的语法具体如清单6所示:
清单6.LOADQUERY语法
>
>
-LOADQUERY--TABLE--table-name--+------------------------+---->
'
-TO--local-message-file-'
--+-------------+--+-----------+------------------------------>
<
+-NOSUMMARY---+'
-SHOWDELTA-'
-SUMMARYONLY-'
LOADQUERY命令在其运行时检查载入操作的状态,并返回表的状态。
如果载入操作完成(或异常终止)了,那么该命令只返回表的状态。
LOADQUERY命令返回的状态如下所示:
正常:
没有任何表状态影响该表。
设置完整性暂挂:
该表有未经验证的约束。
使用SETINTEGRITY语句以使该表脱离设置完整性暂挂状态。
当LOAD实用程序开始对带有约束的表执行装入操作时,它就会使该表处于设置完整性暂挂状态。
正在装入:
正在对此表执行装入操作。
装入暂挂:
已经对此表执行了装入操作,但该操作在落实数据前已终止。
通过发出LOADTERMINATE、LOADRESTART或LOADREPLACE命令,可以使该表脱离此状态。
只读访问:
表数据可用于读访问查询。
使用ALLOWREADACCESS选项的装入操作将使表处于只读访问状态。
不可用:
该表不可用。
只能废弃该表或者从备份文件中复原该表。
通过不可恢复的装入操作执行前滚将使表处于不可用状态。
不可重新启动装入:
表处于部分装入状态,不允许执行装入重新启动操作。
该表还将处于装入暂挂状态。
发出LOADTERMINATE或LOADREPLACE命令来使该表脱离“不可重新启动装入”状态。
如果在未成功重新启动或终止的失败装入操作后执行前滚操作,或者根据表处于“正在装入”或“装入暂挂”状态时创建的联机备份执行复原操作,表就会处于“不可重新启动装入”状态。
在这两种情况下,装入重新启动操作所需的信息都是不可靠的,“不可重新启动装入”状态导致无法执行装入重新启动操作。
1类索引:
表当前使用1类索引。
在对那些索引使用REORG实用程序时,可以使用CONVERT选项将它们转换为2类索引。
未知:
LOADQUERY命令无法确定表状态。
LOADQUERY命令可以用来查询单个表的状态。
如果想查询多个表的状态,可以写个批处理或shell脚本,使用LOADQUERY命令多次查询,也可以通过查看系统目录视图获取相关信息。
比如在Windows平台我们想查看SAMPLE数据库org表的状态,我们可以发出如清单7所示的命令:
清单7.使用LOADQUERY查询表的状态
数据库服务器=DB2/NT9.1.0
本地数据库别名=SAMPLE
db2loadquerytableorg
表状态:
也可以通过查询系统目录视图以获得关于数据库的有用信息。
例如,下面的语句使用NOTLIKE选项,返回在SYSCAT.TABLES中所有用户定义的表的名称,以及每个表的列数和表的状态(N=正常;
C=设置完整性暂挂(Setintegritypending);
X=不起作用(Inoperative)),具体如清单8所示:
清单8.通过查看SYSCAT.TABLES查询表的状态
db2selecttabname,colcount,statusFROMsyscat.tables
WHEREtabschemaNOTLIKE'
SYS%'
ORDERBYtabname
TABNAMECOLCOUNTSTATUS
---------------------------
TABNAMECOLCOUNTSTATUS
---------------------------
ACT3N
ADEFUSR2N
CATALOG2N
CL_SCHED4N
CUSTOMER3N
DEPARTMENT5N
DEPT0N
EMP0N
EMPACT0N
EMPLOYEE01N
EMPMDC3N
EMPPROJACT6N
EMP_ACT0N
EMP_PHOTO3N
EMP_RESUME3N
INVENTORY3N
IN_TRAY4N
ORG5N
PRODUCT7N
PRODUCTSUPPLIER2N
PROJ0N
PROJACT5N
PROJECT8N
PURCHASEORDER6N
SALES4N
STAFF7N
STAFFG7N
SUPPLIERS2N
TEST1N
VACT3N
VASTRDE113N
VASTRDE213N
VDEPMG17N
VDEPT4N
VEMP5N
VEMPDPT17N
VEMPLP2N
VEMPPROJACT6N
VFORPLA7N
VHDEPT5N
VPHONE7N
VPROJ8N
VPROJACT5N
VPROJRE18N
VPSTRDE112N
VPSTRDE212N
VSTAFAC111N
VSTAFAC211N
V_ORG5X
V_STAFF7N
50条记录已选择。
如清单8所示,表的状态为N表示正常,V_ORG表的状态为X,表示不可用。
查看磁盘空间
在使用归档日志模式的情况下,如果脱机活动日志不能顺利归档到第三方路径,比如磁带机上时,数据库容易出现磁盘满错误,另外,在使用SMS表空间模式的情况下,由于表空间所需实际空间是按需分配的,所以也有可能会出现磁盘满的问题。
所以,DBA每天需要查看活动日志目录所在的文件夹是否还有空间,以及SMS表空间对应的容器目录是否还有空间等。
关于数据库的活动日志目录可以使用getdbcfg命令查看,找到活动日志目录后,可以使用操作系统命令(比如,“df–k”等)查看该目录是否还有磁盘空间,注意一定不要手工删除活动日志。
对SMS表空间对应的容器目录,也需要经常查看,防止DB2数据库管理器没有足够的空间来给SMS表空间分配新页。
对DMS表空间来说,由于其空间是预分配的(在创建表空间的时候,其空间已经提前分配),所以通过查看磁盘的方式,