db2高级诊断 db2dart查找停顿(quiesce)表空间的用户

db2dart和inspect概述

当DB2数据库出现异常后,可以使用db2dart或inspect命令查看整个数据库的一致性。db2dart命令可以用来验证数据库以及相关的数据库对象是否正确,是否存在问题;还可以用来显示数据库控制文件的内容,以便在重建数据库时从其他情况下无法访问的表中抽取数据。

如果想查看使用db2dart命令的相关语法,可以在当前DB2 CLP窗口中,执行db2dart命令(不带任何参数),就可以看到其相关选项了。db2dart的基本语法是"db2dart < database name > [ action ] [ options . . . ] ",默认情况下,db2dart实用程序将创建一个"数据库名.RPT"的报告文件。db2dart实用程序直接从磁盘中读取数据库中的数据和元数据,而不是通过DB2数据库管理器来进行访问。

使用db2dart实用程序时,需要注意,要保证该数据库上没有活动的数据库连接(也就是说如果不取消激活数据库,那么db2dart将产生不可靠的结果)。如果您在当前DB2 CLP窗口中,先连接示例数据库SAMPLE,然后再执行"db2dart sample /db"命令,那么会有FYI提示信息,告诉你现在SAMPLE数据库上有一个活动的连接,请停掉所有的连接后再次执行db2dart命令,具体过程和提示信息如下所示:

 
 
  1. C:\> db2 connect to sample  数据库连接信息  
  2. 数据库服务器 = DB2 / NT 9.5.0  
  3.  SQL 授权标识  = DB2ADMIN  
  4. 本地数据库别名  = SAMPLE  
  5.  C:\> db2dart sample /db  
  6. FYI: An active connection to the database has been detected .  
  7.  False errors may be reported .  
  8.  Deactivate all connections and re-run to verify .  
  9.  Warning : The database state is not consistent .  
  10.  Warning : Errors reported about reorg rows may  
  11.                  be due to the inconsistent state of the database .  
  12.  DB2DARTDB2DART Processing completed with warning ( s ) !  
  13.  Complete DB2DARTDB2DART report found in :  
  14.   C:\DOCUME~1\ALLUSE~1\APPLIC~1\IBM\DB2\DB2COPY1\DB2\DART0000\SAMPLE.RPT 

遇到这种情况,正确的做法是在当前DB2CLP窗口中,发出"force applications all"命令,断开所有的数据库连接,然后执行"db2dart sample /db"命令,具体过程如下所示:

 
 
  1. C:\> db2 force applications all 
  2.  DB20000I FORCE APPLICATION 命令成功完成。  
  3.  DB21024I  此命令为异步的,可能未能立即生效。  
  4.  C:\> db2 list applications  
  5.  SQL1611W  "数据库系统监视器"没有返回任何数据。  
  6.  C:\> db2dart sample /db  
  7. The requested DB2DART processing has completed successfully!  
  8. Complete DB2DART report found in:  
  9.  :\DOCUME~1\ALLUSE~1\APPLIC~1\IBM\DB2\DB2COPY1\DB2\DART0000\SAMPLE.RPT 

db2dart命令成功完成,db2dart执行结果显示正常,如果有错误的话,会提示有ERROR存在,所有的结果都会存储在SAMPLE.RPT中。打开SAMPLE.RPT文件,可以看到数据库诊断的详细信息,由于篇幅有限,这里只列示了部分信息,如下所示:

 
 
  1. DART (V9.5)  Report :  
  2. 2008-04-02-23.28.24.531000  
  3.  
  4.             Database Name : SAMPLE  
  5.             Report name : SAMPLE.RPT  
  6.             Old report back-up : SAMPLE.BAK  
  7.             Database Subdirectory : C:\DB2\NODE0000\SQL00002  
  8.             Operational Mode :  Database Inspection Only ( INSPECT )  
  9. Action option : DB  
  10. Connecting to Buffer Pool Services . . .  
  11.    Database inspection phase start .  
  12.       Tablespace file inspection phase start .  
  13.       Loading tablespace files .  
  14.       Inspecting next tablespace and associated containers .  
  15.       Inspecting next tablespace and associated containers .  
  16.       Inspecting next tablespace and associated containers .  
  17.       Inspecting next tablespace and associated containers .  
  18.       Inspecting next tablespace and associated containers .  
  19.       Inspecting next tablespace and associated containers .  
  20.       Inspecting next tablespace and associated containers .  
  21.       7 tablespaces were identified and their containers checked .  
  22.       Tablespace file inspection phase end .  
  23.       SYSBOOT inspection phase start .  
  24.           Data inspection phase start . Data obj : 1  In pool : 0  
  25.          Data inspection phase end .  
  26.       SYSBOOT inspection phase end .  
  27.       SYSTABLES inspection phase start .  
  28.          Data inspection phase start . Data obj : 5  In pool : 0  
  29.          Data inspection phase end .  
  30.       SYSTABLES inspection phase end .  
  31.       Bufferpool file report phase start .  
  32.       1 bufferpools were identified .  
  33.       Bufferpool file report phase end .  
  34.       Tablespace inspection phase start . Pool : 0  
  35.          Tablespace-info inspection phase start .  
  36.             Checking Table space ID : 0  
  37.             Name            =   SYSCATSPACE  
  38.             Extent size     =   4  
  39.             # of containers =   1  
  40. ----------------略----------------------------  
  41.       Table inspection end .  
  42.       Tablespace inspection phase end .  
  43.       Tablespace inspection phase start . Pool : 6  
  44.       This is a temporary table space . Nothing to inspect .  
  45.       Tablespace inspection phase end .  
  46.    Database inspection phase end .  
  47. ----------------略---------------------------- 

我们在数据库的日常维护过程中,经常使用的 db2dart命令的选项主要有:

/DB (默认值):检查整个数据库。

/T:检查单个表。

/TSF:只检查表空间文件和容器。

/TSC:检查一个表空间的结构,但不包含它所属的那些表。

/TS:检查一个单独的表空间和它所属的那些表。

/DI:转储(DUMP)索引页结构。

 

利用db2dart查找停顿(quiesce)表空间的用户

在我们执行quiesce命令停顿一张表期间,该表所在的表空间无法被其他应用访问,要查找停顿表空间的用户,我们可以使用DB2 LIST TABLESPACES SHOW DETAIL命令。下面借助 db2dart工具产生的报告,我们可以查询到发出quiesce命令的原始用户。具体执行步骤如下:

(1) 停止DB2实例:db2stop force。

(2) 产生db2dart的报告:db2dart sample /dtsf。

(3) 从报告中查找发出停顿命令的用户:根据命令执行结果的提示,找到db2dart产生的报告文件。打开该文件,对于停顿的表空间,可以在文件中找到信息如下所示:

 
 
  1. Information for Tablespace ID: 2  
  2. -------------------------------------  
  3. Tablespace name: USERSPACE1  
  4. Table space flags (HEX): 0101  
  5. Table space type: System Managed Space (SMS)  
  6. Page size: 4096  
  7. Extent size: 32  
  8. Prefetch size: 32  
  9. Version: 9  
  10. Tablespace state: 2  
  11. Number of quiescers: 1  
  12. Userid of quiescer: DB2INST1   
  13. Quiesce state: 2--注:16进制表示的表空间状态,可执行db2tbst 0x2命令查看16进制  
  14. 的表空间状态的详细描述,命令输出结果:Quiesced Update 
  15. Tbspace ID of quiesced object: 2--注:表空间ID,对应SYSCAT.TABLES表中的  
  16. TBSPACEID Table ID of quiesced object: 15--注:表ID,对应SYSCAT.TABLES表中  
  17. 的TABLEID字段  
  18. EDU ID: 0  
  19. ...... 

定位表空间的ID和表的ID后,执行下面的SQL语句找出是哪个表:

 
 
  1. db2 select tabname from syscat.tables where tbspaceid=2 and tableid=15  
  2. TABNAME  
  3. ------------------------------------------------------------------------  
  4. STAFF  
  5.   1 条记录已选择。 

使用查找到的用户DB2INST1登录后,执行重置命令:

 
 
  1. db2 quiesce tablespaces for table db2inst1.staff reset 

命令执行成功后连接数据库,验证表空间状态正常。

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13165828/viewspace-614497/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/13165828/viewspace-614497/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值