在DB2 for z/OS version 10上,一个错误的实用程序在一个特定的数据库中留下了许多处于“RW,RBDP”状态的索引空间。我可以成功地使用REBUILD INDEXSPACE命令逐个修复它们,但是它们太多了。所以,我希望使用某种通配符或 ALL选项,但是这对我还不起作用。是否有方法可以执行以下等效操作?重建索引空间(MYDB.)提前感谢!
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实用程序中,这样它只会重建那些处于挂起状态的索引。
SCOPE PENDING
REBUILD INDEX
2o7dmzc52#
REBUILD的替代方法是执行DROP/CREATE。当数据集丢失或损坏时,这是必需的。除非在创建索引时指定DEFER,否则您将免费获得REBUILD。在所有情况下,DB2都从表空间VSAM Linear中提取索引。
2条答案
按热度按时间e7arh2l61#
您不能一次处理整个数据库,但可以使用LISTDEF执行一些查询,以获得类似的结果。
首先,找到相关的索引:
这将给予与该数据库相关的索引列表。然后,您可以将结果作为更大的LISTDEF的一部分。下面是一些示例JCL(老实说,我不确定其中有多少是针对我的商店的,所以可能需要进行一些修改):
如果有一些索引需要重建,而另一些索引没有问题,那么可以将
SCOPE PENDING
添加到REBUILD INDEX
实用程序中,这样它只会重建那些处于挂起状态的索引。2o7dmzc52#
REBUILD的替代方法是执行DROP/CREATE。当数据集丢失或损坏时,这是必需的。除非在创建索引时指定DEFER,否则您将免费获得REBUILD。在所有情况下,DB2都从表空间VSAM Linear中提取索引。