在DB2 z / OS版中,我可以使用一个命令来重建多个索引空间吗?

时间:2019-07-01 01:20:13

标签: db2 db2-zos

在DB2 for z / OS版本10中,一个错误的实用程序在特定数据库中以“ RW,RBDP”状态保留了许多索引空间。我可以成功地使用REBUILD INDEXSPACE命令来一对一地修复它们,但是其中有很多。因此,我希望使用某种通配符或* ALL选项,但这对我来说仍然不起作用。

有没有办法做到以下几点?

重建索引空间(MYDB。*)

谢谢!

1 个答案:

答案 0 :(得分:1)

您无法一次创建整个数据库,但可以与LISTDEF一起进行一些查询以获得类似的结果。

首先,找到有问题的索引:

SELECT '  INCLUDE INDEX ' || RTRIM(CREATOR) || '.' || RTRIM(NAME)
FROM SYSIBM.SYSINDEXES
WHERE DBNAME = 'MYDB'

这将为您提供与该数据库相关的索引列表。然后,您可以将结果作为更大的LISTDEF的一部分。这是一个JCL示例(老实说,我不确定其中有多少是我的商店专用的,因此可能需要进行一些更改):

//*****************************************************
//*  RUN REBUILD INDEX UTILITY                         
//*****************************************************
//IXRBREST EXEC PGM=IEFBR14 DUMMY STEP FOR RESTART     
//IXRBUTIL EXEC DB2UPROC,SYSTEM=DB2T,COND=(4,LT)       
//STEPLIB DD DSN=DB2.PROD.SDSNLOAD,DISP=SHR            
//DB2UPROC.SYSIN DD *                                  
LISTDEF INDEXES                                        
  <insert generated list here>

REBUILD INDEX LIST INDEXES                             
      SORTKEYS SORTDEVT SYSDA SHRLEVEL CHANGE          
      STATISTICS REPORT YES UPDATE ALL                 
      MAXRO 240 LONGLOG CONTINUE DELAY 900 TIMEOUT TERM
      DRAIN_WAIT 50 RETRY 6 RETRY_DELAY 30      

那应该为您提供需要重建的索引。如果有一些需要重建,而有些还可以,则可以将SCOPE PENDING添加到REBUILD INDEX实用程序中,它将仅重建处于挂起状态的实用程序。