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

bkkx9g8r  于 2022-11-07  发布在  DB2
关注(0)|答案(2)|浏览(216)

在DB2 for z/OS version 10上,一个错误的实用程序在一个特定的数据库中留下了许多处于“RW,RBDP”状态的索引空间。我可以成功地使用REBUILD INDEXSPACE命令逐个修复它们,但是它们太多了。所以,我希望使用某种通配符或 ALL选项,但是这对我还不起作用。
是否有方法可以执行以下等效操作?
重建索引空间(MYDB.

提前感谢!

e7arh2l6

e7arh2l61#

您不能一次处理整个数据库,但可以使用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实用程序中,这样它只会重建那些处于挂起状态的索引。

2o7dmzc5

2o7dmzc52#

REBUILD的替代方法是执行DROP/CREATE。当数据集丢失或损坏时,这是必需的。除非在创建索引时指定DEFER,否则您将免费获得REBUILD。在所有情况下,DB2都从表空间VSAM Linear中提取索引。

相关问题