DB2 for z/OS REORG INDEX 学习笔记(1)

本文介绍了DB2 for z/OS的REORG INDEX操作,包括其作用、输出、所需权限及执行阶段。REORG INDEX用于优化索引空间,提升访问性能,同时回收碎片空间。文章详细阐述了各阶段的流程,如初始化、卸载、重建等,并讲解了相关控制语句的语法和选项,如SHRLEVEL、INDEX和REUSE等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、REORG INDEX的作用

联机REORG INDEX实用程序通过重新组织索引空间来改进访问性能,并且回收碎片空间。

 

二、REORG INDEX的输出:

REORG详细说明

         结果

REORG INDEX

         重组整个索引(如果是分区索引则是所有分区)

REORG INDEX PART n

         重组分区索引的第n个分区,或是一个数据分区的二级索引

 

三、需要的权限

要运行实用程序,需要以下特权的至少一个:

l  数据库的REORG特权

l  对于数据库的DBADM或者DBCTRL权限

l  SYSCTRL权限

l  SYSADM权限

要运行存在于编目或者目录中的索引空间的实用程序,需要以下特权的至少一个:

l  DSNDB06(编目)数据库的REORG特权

l  对于DSNDB06(编目)数据库的DBADM或者DBCTRL权限

l  SYSOPR安装权限

l  SYSCTRL权限

l  SYSADM或者SYSADM安装权限

l  如果指定了STATISTICS 关键字,则对于数据库需要STATS特权

如果想运行REORG INDEX STATISTICS REPORT YES,要确保在编目表和要收集统计的表上有SELECT特权。

 

四、REORG INDEX执行阶段

1UTILINIT阶段

执行初始化和设置

2UNLOAD阶段

卸装索引空间,在一个顺序数据集中写入关键信息

3BUILD阶段

重新构建索引,更新索引统计

4LOG阶段(可选)

迭代处理日志,只在定义了SHRLEVEL CHANGE时使用

5SWITCH阶段(可选)

在原索引空间(分区)和新拷贝中切换访问,只在定义了SHRLEVEL REFERENCE或者 CHANGE时使用

6UTILTERM阶段

执行清理操作

 

五、REORG INDEX控制语句的语法和可选项

可以在顺序数据集或者分区数据集中存储控制语句,然后在运行的JCL中的SYSIN DD语句中引入它。

 

 

 

 

 

 

 

 

选项描述:

INDEX creator-id.index-name

详细指定了将要被重组的索引,可以指定索引名称或者索引空间名

INDEXSPACE database-name.index-space-name

         详细指定一个在SYSIBM.SYSINDEXES 表中存在的,合格的索引空间名。数据库名称的默认值是DSNDB04

LIST listdef-name

         详细指定一个在之前定义的LISTDEF列表名,list不能包含任何的表空间

PART integer

         指定需要被重组的分区,可以重组一个分区索引的单独分区,当存在LIST时,不可以指定PARTinteger的范围是1到分区索引的分区数,最大4096。如果忽略PART关键字,就会重组整个索引

REUSE

         当使用了SHRLEVEL NONE选项时,本选项详细指定REORG在逻辑上重置和重用DB2管理数据集,而不用删除和重定义它们。如果不用REUSESHRLEVEL NONEDB2会删除并重定义DB2管理数据集以重置它们

         如果使用REUSE选项的同时使用了SHRLEVEL REFERENCECHANGE选项, REUSE不起作用

CLONE

         指示重组的是克隆表上的索引空间和索引

SHRLEVEL

         说明了重组的方式,下面的参数指定了在REORG的重新装载阶段允许的访问方式:

         NONE

1、              从正在重组的区域卸装数据(这时应用程序对这个区域只能读不能写)

2、              重新装入该区域(这时应用程序不具有任何存取权),然后重新允许读写访问

REFERENCE

1、              从正在重组的区域卸装数据(这时应用程序对这个区域只能读不能写)

2、              重新装入到该区域的影子副本(shadow copy)(这时应用程序可以读取但不可以写入原始副本)

3、              通过交换数据集的名字,将应用程序对原始副本的访问切换到影子副本上,最后重新允许读写访问(switch phase)

CHANGE

1、              从正在重组的区域卸装数据(这时应用程序对这个区域可以读也可以写)

2、              重新装入到该区域的影子副本(shadow copy)(这时应用程序具有对该区域原始副本的读写访问权)

3、              将原始副本的日志应用于影子副本(这时应用程序可以读取并通常写入原始副本)(log phase)

4、              通过交换数据集的名字,将应用程序对原始副本的访问切换到影子副本上,最后重新允许读写访问(switch phase)

如果指定了CHANGE,就不能使用UNLOAD参数。如果表空间定义了NOT LOGGED属性,则不可以指定SHRLEVEL CHANGE

DEADLINE

SWITCH阶段的开始指定DEADLINE

NONE

                   没有指定SWITCH阶段日志处理必须开始的截止时间

timestamp

              指定SWITCH阶段日志处理必须开始的截止时间

labeled-duration-expression

         计算SWITCH阶段日志处理必须开始的截止时间,计算是基于CURRENT TIMESTAMP或者CURRENT DATE,可以加或者减一个constant

         constant单位:YEARSMONTHSDAYSHOURSMINUTESSECONDSMICROSECONDS,以下格式是等同的YEARMONTHDAYHOURMINUTESECONDMICROSECOND

DRAIN_WAIT integer

         SQL语句((insertsupdatesdeletesselects )运行时,实用程序等待他们结束的秒数,这个值重写了IRLMRWTUTIMOUT参数(仅对于本条SQL语句)integer的取值从01800,如果没有指定此关键字,或者integer=0的时候,实用程序使用锁超时系统参数IRLMRWT

RETRY integer

         指定了REORG重试的次数,integer的取值从0255,如果没有指定此关键字,则不进行重试,默认值是UTIMOUT子系统参数

RETRY_DELAY integer

         指定了重试之间的最小间隔,以秒为单位,integer的取值从01800

         如果没有指定RETRY_DELAYREORG INDEX下面两个值中稍小的一个:

l  DRAIN_WAIT × RETRY

l  DRAIN_WAIT × 10

MAXRO

         详细指定了对于log过程的最后一个迭代的最大时间量,对于这个迭代,应用程序只有只读访问权限。实际执行的最后一个迭代的时间可能会超越MAXRO值。ALTER UTILITY命令可以修改MAXRO值,它的默认值是RETRY_DELAY的默认值

integer

以秒为单位,如果指定为较小的正值,将会降低只读存取期的长度,但是可能会增加REORG完成的时间;如果指定为非常大的正值,log过程的第二个迭代可能就是最终迭代

默认值是300

         DEFER

         指定拥有读写访问权限的log过程迭代不确定地持续进行,REORG绝对不会开始拥有只读访问的最终迭代,除非通过ALTER UTILITY命令修改MAXRO值,如果定义了DEFER,则也要定义LONGLOG CONTINUE

DRAIN

         指定了在log最后阶段,当达到MAXRO阀值,并且log的最终迭代将要被应用时的放弃行为。

         WRITERS

                   在达到MAXRO阀值后,DB2只放弃log阶段的writers,接着在进入switch阶段时使用DRAIN ALL

         ALL

                   在达到MAXRO阀值后,DB2放弃log阶段的所有readers writers

                   在下列情况下,考虑DRAIN ALL

l  log阶段SQL更新活动非常高

l  默认行为导致巨量的 -911 SQL错误信息

LONGLOG

         如果log过程将要处理的下一个迭代的记录数不完全低于之前迭代处理的数量,在向控制台发送一条信息后,LONGLOG指定了DB2将要执行的动作。这种情况意味着REORG INDEX读取应用程序log的步调跟不上应用程序log的写入速度

CONTINUE

                   表示在JOB语句过期时,DB2仍然继续执行重组

MAXRO DEFERLONGLOG CONTINUE一起使用的话,表示REORG INDEX将持续允许对正在重组的原拷贝区域的访问,不switch到阴影拷贝

TERM

表示在指定DELAYDB2将中止重组

DRAIN

表示在指定DELAYDB2将放弃写入要求类别

DELAY integer

         REORG向控制台发送信息的最小时间间隔,integer以秒为单位,默认值是1200

TIMEOUT

         指定了超时后(logswitch阶段试图放弃对象造成)的处理动作

TERM

1.         DB2发生隐式TERM UTILITY命令,导致中止并返回8

2.         DB2发生DSNU590IDSNU170I消息

3.         DB2将对象留在RW状态

ABEND

                   在超时条件发生时,DB2将对象留在UTROUTUT状态

LEAFDISTLIMIT integer

         叶距离限制(LEAFDIST是索引页的无序程度的量度),详细指定integer值来与SYSIBM.SYSINDEXPART中索引的特定分区的LEAFDIST值作比较,如果任何LEAFDIST值超越了指定的LEAFDISTLIMIT值,REORG就被执行,

         默认值是200

REPORTONLY

         REORG仅仅是被推荐,并不是真的执行

UNLOAD

         数据卸装之后,实用程序job是继续处理还是终结

CONTINUE

在卸装数据之后,实用程序继续处理

PAUSE

在卸装数据之后,实用程序结束,而RELOAD状态存储在 SYSIBM.SYSUTIL 中,以便可以使用RELOAD RESTART(PHASE)命令来复原处理

ONLY

在卸装数据之后,实用程序结束,并除去存储在SYSIBM.SYSUTIL中与此实用程序标识相对应的状态

KEYCARD

         指定收集的范围是特定索引的1n键列组合的所有互不相同的值

FREQVAL

         指定了收集频繁值统计

         NUMCOLS

                   指定了连接在一起的键列数,默认是1

         COUNT

                   指定了将要收集的频繁值数量

SORTDEVT device-type

         指定了为DFSORT动态分配的临时数据集的设备类型

SORTNUM integer

         指定了收集分区数据集二级索引统计信息时动态分配的临时数据集的数目

注意:如果ZPARM UTSORTAL定义为YES并且IGNSORTN定义为YES的话,不可以使用SORTNUM关键字

UPDATE

         指示统计信息是否插入编目表

ALL

ACCESSPATH

SPACE

NONE

HISTORY

         所有插入或更新到编目历史表的编目表都会被记录

ALL

ACCESSPATH

SPACE

NONE

FORCEROLLUP

这个选项能使优化器选择最佳存取路径

         YES

NO

WORKDDN(ddname)

         ddname指示了卸装数据集的DD语句,是用于构建输入的临时工作文件(temporary work file)DD名称,默认值是SYSUT1

PREFORMAT

                                                                                                                 待续......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值