Syntax and options of the REORG TABLESPACE control statement
The REORG TABLESPACE utility control statement, with its multiple options, defines the function that the utility job performs.
You can create a control statement with the ISPF/PDF edit function. After creating it, save it in a sequential or partitioned data set. When you create the JCL for running the job, use the SYSIN DD statement to specify the name of the data set that contains the utility control statement. Some of these options are not valid for LOB table spaces. For a list of those options, see Reorganization of a LOB table space.
Syntax diagram
- 1 You cannot use UNLOAD PAUSE with the LIST option.
- 2 COPYDDN(SYSCOPY) is not the default if you specify SHRLEVEL NONE, and no partitions are in REORG-pending status.
- 3 Either COPYDDN or FCCOPYDDN can be specified, or they can both be specified. At least one of these options must be specified for SHRLEVEL NONE when a partition is in REORG-pending status, or for SHRLEVEL CHANGE OR SHRLEVEL REFERENCE. If you specify FCCOPYDDN, but do not specify COPYDDN or a SYSCOPY DD statement or TEMPLATE specification, for SYSCOPY, only a FlashCopy® image copy is taken.
- 4 For SHRLEVEL REFERENCE, the change-spec options are ignored. The exception is a partition-level REORG operation on a partitioned table space that has a non-partitioned index. In that case, the change-spec options are not ignored.
- 5 For SHRLEVEL REFERENCE, the change-spec options are ignored. The exception is a partition-level REORG operation on a partitioned table space that has a non-partitioned index. In that case, the change-spec options are not ignored.
- 6 The following forms of the comparison operators are also supported in basic and quantified predicates: !=, !<, and !>. For details, see comparison operators.
- 7 SAMPLE can also be specified if TABLESAMPLE SYSTEM NONE is specified.
- 8 The TABLESAMPLE keyword is valid only for universal table spaces (UTS).
- 9 When the COUNT keyword is not specified, the utility automatically determines the count value and collects the most frequently occurring values.
- 10 The KEYCARD option is deprecated. The KEYCARD functionality is now built into the default execution of the inline statistics for indexes and cannot be disabled.
- 11 When the COUNT keyword is not specified, the utility automatically determines the count value and collects the most frequently occurring values.
Option descriptions
- TABLESPACE database-name.table-space-name
- Specifies the table space (and, optionally, the database to which it belongs) that is to be
reorganized. If you reorganize a table space, its indexes are also reorganized.
- database-name
- Is the name of the database to which the table space belongs. The name cannot be DSNDB07.
The default value is DSNDB04.
- table-space-name
- Is the name of the table space that is to be reorganized. The name cannot be SYSUTILX if the specified database name is DSNDB01.
- LIST listdef-name
- Specifies the name of a previously
defined LISTDEF list name. The utility allows one LIST keyword for each control statement of REORG
TABLESPACE. The list must contain only table spaces.
Do not specify FROM TABLE, STATISTICS TABLE table-name, or STATISTICS INDEX index-name with REORG TABLESPACE LIST. If you want to collect inline statistics for a list of table spaces, specify STATISTICS TABLE (ALL). If you want to collect inline statistics for a list of indexes, specify STATISTICS INDEX (ALL). Do not specify PART with LIST.
REORG TABLESPACE is invoked once for each item in the list. This utility will only process clone data if the CLONE keyword is specified. The use of CLONED YES on the LISTDEF statement is not sufficient.
The partitions or partition ranges can be specified in a list.
- LISTPARTS n
- Specifies the
maximum number of data partitions to be reorganized in a single REORG on a LISTDEF that contains
PARTLEVEL list items.
- n
- Specifies an integer that represents the maximum number of data partitions to be reorganized at once. Valid value is greater than 0. If LISTPARTS is not specified, the default value is the setting of the REORG_LIST_PROCESSING subsystem parameter.
- PARALLEL(num-subtasks)
Specifies the maximum number of subtasks that are to be started in parallel to reorganize a table space. If the PARALLEL keyword is omitted, the maximum number of subtasks is limited by either the number of partitions that are being unloaded or the number of indexes that are built.
The value of num-subtasks must be an integer between 0 and 32767, inclusive. If the specified value for num-subtasks is greater than 32767, the REORG TABLESPACE statement fails. If 0 or no value is specified for num-subtasks, the REORG TABLESPACE utility uses the optimal number of parallel subtasks. If the specified value for num-subtasks is greater than the calculated optimal number, the REORG TABLESPACE utility limits the number of parallel subtasks to the optimal number with applied constraints.
The specified number of subtasks for PARALLEL always overrides the specification of the PARAMDEG_UTIL subsystem parameter, so PARALLEL can be smaller or larger than the value of PARAMDEG_UTIL.
REORG TABLESPACE uses sophisticated algorithms to allocate subtasks for unloading partitions, reloading partitions, building indexes, applying log changes, and gathering statistics. As a result, the number of subtasks that are started might be less than the number specified on PARALLEL.
- INITCDDS
- Specifies
whether REORG TABLESPACE copies the existing compression dictionaries for a table space that is
defined with DATA CAPTURE CHANGES into the compression dictionary data set (CDDS), instead of
reorganizing the table space. This option applies only to a data sharing group in a GDPS® Continuous Availability with
zero data loss (GDPS Continuous Availability with zero
data loss) environment.
- NO
- Specifies that REORG TABLESPACE performs normal REORG processing.
- YES
- Specifies that REORG TABLESPACE populates the CDDS, and does not reorganize the table space.
Specify YES only when the tables in the table space are defined with DATA CAPTURE CHANGES, the table
space is in a data sharing group, and the data sharing group is part of a GDPS Continuous Availability with zero
data loss environment.
- SEARCHTIME
- Specifies the timestamp that REORG TABLESPACE uses to determine which expansion dictionary to
use to populate the CDDS. If the expansion dictionary that the target page set is currently using
has an LRSN value that is later than the SEARCHTIME value, REORG searches for the prior expansion
dictionary in the Db2 log and in SYSCOPY
information. If a prior expansion dictionary exists, REORG copies that dictionary into the
CDDS.
timestamp or the result of evaluation of labeled-duration-expression must be a TIMESTAMP(6) value.
- NONE
- Specifies that REORG populates the CDDS from the expansion dictionary that the target page set is currently using.
- timestamp
- Specifies a TIMESTAMP(6) constant that determines which expansion dictionary to use to populate the CDDS.
- labeled-duration-expression
- Evaluates to a TIMESTAMP(6) constant that determines which expansion dictionary to use to
populate the CDDS. The calculation is based on either CURRENT TIMESTAMP or CURRENT DATE. You can add
or subtract one or more constant values to or from the CURRENT TIMESTAMP or
CURRENT DATE value. The expression must not evaluate to a timestamp that occurs after REORG is run.
CURRENT TIMESTAMP and CURRENT DATE are evaluated once, when the REORG statement is first processed.
If a list of objects is specified, the same value is in effect for all objects in the list.
- CURRENT_DATE
- Specifies that the expansion dictionary timestamp is to be calculated based on the CURRENT DATE.
- CURRENT_TIMESTAMP
- Specifies that the expansion dictionary timestamp is to be calculated based on the CURRENT TIMESTAMP.
- WITH TIME ZONE
- Specifies that the CURRENT TIMESTAMP value includes a time zone. The timestamp precision of the special register CURRENT TIMESTAMP must be the same as the precision of the timestamp equivalent of the LRSN value for the expansion dictionary. Otherwise the default timestamp precision is used. The time zone of CURRENT TIMESTAMP is the value of special register CURRENT TIMEZONE. The comparison is done by comparing the UTC portion of the timestamps.
- constant
- Indicates a unit of time and is followed by one of the seven duration keywords: YEARS, MONTHS, DAYS, HOURS, MINUTES, SECONDS, or MICROSECONDS. The singular form of these words is also acceptable: YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, MICROSECOND.
- CLONE
- Indicates that REORG TABLESPACE is to reorganize only clone tables from the specified table spaces. This utility will only process clone data if the CLONE keyword is specified. The use of CLONED YES on the LISTDEF statement is not sufficient. Base tables in the specified table spaces are not reorganized. If you specify CLONE, you cannot specify STATISTICS. Statistics are not collected for clone tables.
- REUSE
- When used with
SHRLEVEL NONE, specifies that REORG is to logically reset and reuse Db2-managed data sets without deleting and
redefining them. If you do not specify REUSE and SHRLEVEL NONE, Db2 deletes and redefines Db2-managed data sets to reset them.
If a data set has multiple extents, the extents are not released if you use the REUSE parameter.
REUSE does not apply if you also specify SHRLEVEL REFERENCE or CHANGE.
- SCOPE
- Indicates the scope of the
reorganization of the specified table space or of one or more specified partitions.
- ALL
- Indicates that you want the specified table space or one or more partitions to be reorganized. The default is ALL.
- PENDING
- Indicates that you want the specified table space or one or more partitions to be reorganized only if they are in REORG-pending (REORP, AREO*, or AREOR) status.
- PART(integer)
- PART(integer1:integer2)
- PART(integer,…integer,…integer1:integer2,…integer1:integer2)
- Identifies
the set of partitions that are to be reorganized. The set of partitions must be enclosed in
parentheses.
You can reorganize:
- One or more single partitions
- One or more ranges of partitions
- A combination of one or more single partitions and one or more ranges of partitions
The partitions do not need to be consecutive.
integer, integer1, and integer2 are physical partition numbers. Each partition number must be in the range from 1 to the number of partitions that are defined for the table space or partitioning index. The maximum is 4096.
- integer
- Designates a single partition.
- integer1:integer2
- Designates a range of existing table space partitions. You can specify the range in any order. For example, you can specify (100:199) or (199:100). In either case, partitions 100 through 199 are reorganized. If integer1 is equal to integer2, only that one partition is reorganized. For example, if you specify (5:5), only partition 5 is reorganized.
If you omit the PART keyword, the entire table space is reorganized.
If you specify the PART keyword for a LOB table space, Db2 issues an error message, and utility processing terminates with return code 8.
If you specify a partition range and the high or low partitions in the list are in a REORG-pending state, the adjacent partition that is outside the specified range must not be in REORG-pending state; otherwise, the utility terminates with an error.
Restriction: You cannot run concurrent REORG TABLESPACE SHRLEVEL CHANGE PART integer on the same table space with one or more non-partitioned indexes defined in it. Instead of submitting multiple jobs, you can merge the jobs into one job by specifying all the target partitions in the same REORG job. - REBALANCE
- Specifies
that REORG TABLESPACE is to set new partition boundaries so that rows are evenly distributed
across the reorganized partitions. If the columns that are used in defining the partition
boundaries have many duplicate values within the data rows, even balancing is not always
possible. Specify REBALANCE for more than one partition; if you specify a single partition for
rebalancing, REORG TABLESPACE ignores the specification.
A REORG REBALANCE operation that builds compression dictionaries builds a single dictionary using data rows from all target partitions in the UNLOAD phase. REORG then loads that dictionary into all target data partitions and uses it to compress the data in the RELOAD phase.
You can specify REBALANCE with SHRLEVEL NONE, SHRLEVEL CHANGE, or SHRLEVEL REFERENCE. You must specify SHRLEVEL REFERENCE or SHRLEVEL CHANGE if the base table space has an associated auxiliary LOB table space. In this case, you must also specify AUX YES, which is the default value if you specify REBALANCE. When REBALANCE is specified with SHRLEVEL REFERENCE or SHRLEVEL CHANGE, pending definition changes for conversion of a partitioned table space to a partition-by-range table space are not materialized.
REBALANCE cannot be specified with SCOPE PENDING.
FL 500 REBALANCE is ignored when REORG is materializing a pending change to the partitioning scheme of a table.
Restrictions: REBALANCE cannot be specified for the following objects:- Partition-by-growth table spaces
- Base tables with XML columns
- XML table spaces
- An object that is involved in a clone relationship. (Because the base and clone tables share catalog information, REBALANCE can change the partition boundaries of the target table.)
- Table spaces with pending alter limit key changes
When you specify REBALANCE, you must create an inline copy by performing one of the following actions:
- Provide a SYSCOPY DD statement in the JCL.
- Use the TEMPLATE utility to dynamically allocate the SYSCOPY data set.
- Specify a DD name with the COPYDDN option in the REORG control statement and specify either a corresponding DD statement or TEMPLATE statement.
At completion, Db2 invalidates packages and the dynamic cache.
- SORTCLUSTER
- Determines
whether REBALANCE is to attempt to sort the data records into clustering order. This option is
ignored if no clustering index exists in the table, or when the limit key columns are identical to
or are a superset of the clustering index columns.
- NO
- Specifies that the data records are not to be explicitly sorted into clustering order. This
option is the default behavior.
If SORTCLUSTER NO is explicitly specified, REORG-pending advisory (AREO*) status is not set on the affected data partitions upon REORG REBALANCE completion. If SORTCLUSTER NO is not explicitly specified and instead accepted by default, AREO* status can still be set on the affected partitions.
- YES
- Specifies that the data records are to be explicitly sorted into clustering order as needed.
- LOG
- Specifies whether records
are to be logged during the RELOAD phase of REORG SHRLEVEL NONE. If the records are not logged, the
table space is recoverable only after an image copy is taken. An image copy is taken during the
REORG execution if COPYDDN, FCCOPYDDN, RECOVERYDDN, SHRLEVEL REFERENCE, or SHRLEVEL CHANGE is
specified.
- YES
- Specifies that log records are to be taken during the RELOAD phase. This option is not allowed
for any table space in DSNDB01 or DSNDB06, or if the SHRLEVEL REFERENCE or CHANGE option is
specified.
The default value is YES if SHRLEVEL NONE is specified explicitly or by default. If SHRLEVEL NONE is specified but the table space has the NOT LOGGED attribute, Db2 processes LOAD with LOG NO.
- NO
- Specifies that records are not to be logged. This option is the default and required if the SHRLEVEL REFERENCE or CHANGE option is specified. LOG NO puts the table space in COPY-pending status when REORG is executed remotely and RECOVERYDDN is not specified.
- DROP_PART
- Specifies
whether the REORG TABLESPACE utility will delete the highest numbered partitions in a
partition-by-growth table space, if they are empty, when the entire table space is being
reorganized.
The DROP_PART keyword has no effect when REORG is run on the following table spaces:
- LOB table spaces
- Table spaces that are not defined as partition-by-growth
- Partition-by-growth table spaces that are defined with a MAXPARTITONS value of 1
- Partition-by-growth table spaces that contain tables that are defined with DATA CAPTURE CHANGES
- Hash partition-by-growth table spaces
When DROP_PART is not specified, the behavior of the REORG utility is based on the value of the REORG_DROP_PBG_PARTS subsystem parameter.
- NO
- Specifies that the REORG TABLESPACE utility will not delete any of the highest numbered partitions in a partition-by-growth table space, if they are empty, on successful completion.
- YES
- Specifies that the REORG TABLESPACE utility will delete the highest numbered partitions
in a partition-by-growth table space, if they are empty, on successful
completion.
When AUX YES is specified or defaulted with DROP_PART YES and empty partitions are deleted during the reorganization of the base table space, the LOB table spaces for those partitions are also deleted.
When DROP_PART YES is specified for a table space that is not a partition-by-growth table space, or when the REORG TABLESPACE is specified on a partition level, DROP_PART YES is ignored and an information message is returned.
If FASTSWITCH NO is specified, the DROP_PART keyword has no effect.
- SORTDATA or SORTDATA NO
- SORTDATA
specifies that the data is to be unloaded by a table space scan, and sorted in clustering
order.
The default value is SORTDATA, unless you specify UNLOAD ONLY or UNLOAD EXTERNAL. If you specify one of these options, the default is SORTDATA NO.
SORTDATA NO specifies that, when possible, the data is to be unloaded in the order of the clustering index. Specify SORTDATA NO if one of the following conditions is true:
- The data is in or near perfect clustering order, and the REORG utility is used to reclaim space from dropped tables.
- The amount of data is very large, and an insufficient amount of disk space is available for sorting.
For a partitioned table space, REORG does not unload the records by way of the clustering index when the clustering index is not partitioning. The data records must be unloaded by partition order first. In addition, when REORG unload or reload partition parallelism is used, or when REORG is run on a partition-by-growth table space, REORG always performs a table space scan to unload the data records, when the clustering index is not used.
FL 500 SORTDATA NO is ignored if REORG is materializing a pending change to the partitioning scheme of a table.
Related information: - RECLUSTER
- Specifies
whether data records are to be reclustered by unloading them by way of the clustering index.
RECLUSTER NO is always enforced in the following situations:
- for SHRLEVEL CHANGE processing
- when the clustering index has the EXCLUDE NULL KEYS attribute
- for a PBG table space
- when parallelism is used in the REORG operation
- YES
- Data records are to be reclustered and to be unloaded by the clustering index if one exists. This option is the default behavior.
- NO
- Data records are not to be reclustered and are not unloaded by way of the clustering index.
- NOSYSREC
- Specifies
that REORG TABLESPACE is not to use an unload data set. The utility uses the output of sorting as
the input to reload but does not use an unload data set for this process.
Omitting the unload data set can improve performance. However, when you omit the unload data set by specifying NOSYSREC, the following limitations exist for restarting the utility:
- If an error occurs during reloading, you must restart the utility at the beginning of the UNLOAD phase. (If you do not specify NOSYSREC, you can start the utility at the RELOAD phase.)
- If you specify SHRLEVEL NONE and an error occurs during reloading, you must first run the RECOVER utility with the most recent image copy.
If you specify SHRLEVEL NONE with NOSYSREC, create an image copy before you run REORG TABLESPACE.
You cannot specify NOSYSREC if any of the following conditions is true:
- No data will be sorted during the REORG TABLESPACE job. Examples: SORTDATA NO is specified, or no index is defined on the data that is being reorganized.
- UNLOAD PAUSE is specified.
- UNLOAD ONLY is specified.
- COPYDDN (ddname1,ddname2)
- Specifies the DD statements for the primary
(ddname1) and backup (ddname2)
copy data sets for the image copy.
ddname1 and ddname2 are the DD names.
The default value is SYSCOPY for the primary copy. A full image copy data set is created when REORG executes. This copy is called an inline copy. The table space does not remain in COPY-pending status regardless of which LOG option you specify.
When an inline copy is performed, Db2 writes a record with ICTYPE='F' in the SYSIBM.SYSCOPY catalog table. The name of the inline copy data set is listed in that record. If an inline copy is performed when REORG is run on a range of partitions, Db2 writes a record with ICTYPE='F' for each partition. The inline copy data set name is the same in all of those records.
If you specify SHRLEVEL NONE (explicitly or by default) for REORG, and COPYDDN is not specified, an image copy is not created at the local site.
COPYDDN(SYSCOPY) is assumed, and a DD statement for SYSCOPY is required if either of the following conditions are true:
- You specify REORG SHRLEVEL REFERENCE or CHANGE, and you do not specify COPYDDN.
- A table space or partition is in REORG-pending (REORP) status.
- You specify REBALANCE.
The COPYDDN keyword specifies either a DD name or a template name from a previous TEMPLATE utility statement. If utility processing detects that the specified name is both a DD name in the current job step and a TEMPLATE name, the utility uses the DD name. If the template name uses the &PA. or &PART. variable, REORG allocates a separate copy data set for each partition that is being reorganized.
REORG can take inline copies of XML table spaces.
- RECOVERYDDN (ddname3,ddname4)
- Specifies the
DD statements for the primary (ddname3) and backup
(ddname4) copy data sets for the image copy at the recovery site.
ddname3 and ddname4are the DD names.
You cannot have duplicate image copy data sets. The same rules apply for RECOVERYDDN as for COPYDDN.
The RECOVERYDDN keyword specifies either a DD name or a template name from a previous TEMPLATE utility statement. If utility processing detects that the specified name is both a DD name in the current job step and a TEMPLATE name, the utility uses the DD name. If the template name uses the &PA. or &PART. variable, REORG allocates a separate copy data set for each partition that is being reorganized.
REORG SHRLEVEL REFERENCE of a LOB table space supports inline copies, but REORG SHRLEVEL NONE does not.
- ICLIMIT_DASD num-dasd
- Specifies
the maximum number of sequential image copies that REORG TABLESPACE can allocate to DASD. Valid
values for num-dasd are from 0 to 32767. A value of 0 indicates no limit
for the number of DASD image copies that REORG can allocate.
The value specified for ICLIMIT_DASD overrides the value of the REORG_IC_LIMIT_DASD subsystem parameter.
- ICLIMIT_TAPE num-tape
- Specifies
the maximum number of sequential image copies that REORG TABLESPACE can allocate to tape. Valid
values for num-tape are from 0 to 32767. A value of 0 indicates no limit
for the number of tape image copies that REORG can allocate.
The value specified for ICLIMIT_TAPE overrides the value of the REORG_IC_LIMIT_TAPE subsystem parameter.
- FLASHCOPY
- Specifies
whether FlashCopy technology is used to create a copy of
the object. Valid values are YES, NO, or CONSISTENT. When FlashCopy is used, a separate data set is created for each partition or piece of the
object.
The FlashCopy specifications on the utility control statement override any specifications for FlashCopy that are defined by using the Db2 subsystem parameters. If the FlashCopy subsystem parameters specify the use of FlashCopy as the default behavior of this utility, the FLASHCOPY option can be omitted from the utility control statement.
Important: If the input data set is less than one cylinder, FlashCopy technology might not be used for copying the objects regardless of the FLASHCOPY settings. The copy is performed by IDCAMS if FlashCopy is not used.- NO
- Specifies that no FlashCopy is made. NO is the default value for FLASHCOPY.
- YES
- Specifies that FlashCopy technology is used to copy
the object.
Specify YES only if the Db2 data sets are on FlashCopy Version 2 disk volumes.
Important: Under the following circumstances, the REORG TABLESPACE utility might not use FlashCopy even though YES is specified:- FlashCopy Version 2 disk volumes are not available
- The source tracks are already the target of a FlashCopy operation
- The target tracks are the source of a FlashCopy operation
- The maximum number of relationships for the copy is exceeded
If FlashCopy is requested but not used, REORG TABLESPACE fails with return code 8 when REORG is specified with SHRLEVEL REFERENCE or SHRLEVEL CHANGE. Object that are the target of the reorganization are left in the same read/write status as if the REORG TABLESPACE was never run.
If SHRLEVEL REFERENCE or SHRLEVEL CHANGE is not specified and FlashCopy is requested but not used, REORG TABLESPACE completes with return code 8. If no sequential inline copy is requested on the same job, the objects are left in COPY-pending status.
- CONSISTENT
- Specifies that FlashCopy technology is used to copy the object. Because the copies created by the REORG TABLESPACE utility are already consistent, the utility treats a specification of CONSISTENT the same as a specification of YES.
- FCCOPYDDN
- Specifies the
template to be used to create the FlashCopy image copy
data set names. If a value is not specified for FCCOPYDDN on the REORG TABLESPACE control statement
when FlashCopy is used, the value specified on the
FCCOPYDDN subsystem parameter determines the template to be used.
- (template-name)
- The data set names for the FlashCopy image copy are allocated according to the template specification. For table space or index space level FlashCopy image copies, because a data set is allocated for each partition or piece, ensure that the data set naming convention in the template specification is unique enough. Use the &DSNUM variable, which resolves to a partition number or piece number at execution time.
- AUTOESTSPACE
- Specifies
that REORG automatically calculates and formats the size of the fixed hash space for hash-organized
table spaces. The use of AUTOESTSPACE YES might reduce the number of rows in the overflow area.
- YES
- Specifies that Db2 uses real-time statistics (RTS) values to adjust the size of the hash space. User-specified HASH SPACE values stored in the SYSIBM.SYSTABLESPACE and SYSIBM.SYSTABLEPART catalog tables are not changed. YES is the default value for AUTOESTSPACE.
- NO
- Specifies that Db2 uses the HASH SPACE value specified for CREATE TABLE or ALTER TABLE. These values are stored in the SYSIBM.SYSTABLESPACE and SYSIBM.SYSTABLEPART catalog tables.
- SHRLEVEL
- Specifies the method that is
to be used for the reorganization. The parameter that follows SHRLEVEL indicates the type of access
that is to be allowed during the RELOAD phase of REORG.
- NONE
- Specifies that reorganization is to operate as follows:
- Unloading from the area that is being reorganized (while applications can read but cannot write to the area)
- Reloading into that area (while applications have no access), and then allowing read/write access again
If you specify NONE (explicitly or by default), you cannot specify the following parameters:
- MAPPINGTABLE
- MAXRO
- LONGLOG
- DELAY
- DEADLINE
- DRAIN_WAIT
- RETRY
- RETRY_DELAY
Restrictions:- If you specify UNLOAD PAUSE or UNLOAD ONLY, you cannot specify NOSYSREC. SHRLEVEL NONE cannot be specified for tables that are defined with ORGANIZE BY HASH.
- You cannot specify SHRLEVEL NONE in a REORG TABLESPACE control statement that completes the process of recovery to a point in time prior to the materialization of pending definition changes.
When SHRLEVEL NONE is specified, pending definition changes are not materialized and any associated restrictive states are not reset. For example, pending limit key changes are not materialized and the associated advisory REORG-pending status is not reset. (Immediate alter limit key changes can be materialized by REORG SHRLEVEL NONE.)
SHRLEVEL NONE is not supported when REORG is run against a LOB table space.
- REFERENCE
- Specifies that reorganization is to operate as follows:
- Unloading from the area that is being reorganized (while applications can read but cannot write to the area)
- Reloading into a shadow copy of that area (while applications can read but cannot write to the original copy)
- Switching the future access of an application from the original copy to the shadow copy by exchanging the names of the data sets, and then allowing read/write access again
If you specify SHRLEVEL REFERENCE and FASTSWITCH NO:- Pending definition changes are not materialized.
- The REORG_DROP_PBG_PARTS subsystem parameter or the DROP_PART option has no effect. If REORG_DROP_PBG_PARTS is set to ENABLE or if DROP_PART is set to YES, empty trailing partitions are not removed.
If you specify REFERENCE for a LOB table space, you must take an inline copy during the reorganization.
If you specify REFERENCE, you cannot specify the following parameters:- LOG. Reorganization with REFERENCE always creates an image copy and always refrains from logging records during reloading.
- UNLOAD PAUSE, UNLOAD ONLY, or UNLOAD EXTERNAL. Reorganization with REFERENCE always uses UNLOAD CONTINUE, which is the default value. (You can explicitly specify UNLOAD CONTINUE or none of the UNLOAD options, but you cannot specify UNLOAD PAUSE, UNLOAD ONLY, or UNLOAD EXTERNAL.)
- MAPPINGTABLE.
Specifying REORG TABLESPACE PART SHRLEVEL REFERENCE with the REORG_PART_SORT_NPSI subsystem parameter enabled might require larger sort work data sets because of the increased number of keys sorted for nonpartitioned secondary indexes.
Specifying SHRLEVEL REFERENCE or CHANGE on an entire XML partitioned table space converts the XML table space to extended 10-byte format if one of the following is true:
- The UTILITY OBJECT CONVERSION subsystem parameter is set to EXTENDED or NOBASIC.
- The RBALRSN_CONVERSION EXTENDED keywords are specified.
Restriction: You cannot specify SHRLEVEL REFERENCE when REORG TABLESPACE with PART is run on a NOT LOGGED table space on which nonpartitioned indexes are defined. - CHANGE
- Specifies that reorganization is to operate as follows:
- Unloading from the area that is being reorganized (while applications can read and write to the area)
- Reloading into a shadow copy of that area (while applications have read/write access to the original copy of the area)
- Applying the log of the original copy to the shadow copy (while applications can read and usually write to the original copy)
- Switching the future access of an application from the original copy to the shadow copy by exchanging the names of the data sets, and then allowing read/write access again
If you specify SHRLEVEL CHANGE and FASTSWITCH NO:- Pending definition changes are not materialized.
- The REORG_DROP_PBG_PARTS subsystem parameter or the DROP_PART option has no effect. If REORG_DROP_PBG_PARTS is set to ENABLE or if DROP_PART is set to YES, empty trailing partitions are not removed.
If you specify CHANGE, you cannot specify the following parameters:
- LOG. Reorganization with CHANGE always creates an image copy and always refrains from logging records during reloading.
- UNLOAD PAUSE, UNLOAD ONLY, or UNLOAD EXTERNAL. Reorganization with CHANGE always uses UNLOAD CONTINUE, which is the default value. (You can explicitly specify UNLOAD CONTINUE or none of the UNLOAD options, but you cannot specify UNLOAD PAUSE, UNLOAD ONLY, or UNLOAD EXTERNAL.)
Performing REORG TABLESPACE PART SHRLEVEL CHANGE with the REORG_PART_SORT_NPSI subsystem parameter enabled might require larger sort work data sets because of the increased number of keys sorted for nonpartitioned secondary indexes.
Specifying SHRLEVEL REFERENCE or CHANGE on an entire XML partitioned table space converts the XML table space to extended 10-byte format if one of the following is true:
- The UTILITY OBJECT CONVERSION subsystem parameter is set to EXTENDED or NOBASIC.
- The RBALRSN_CONVERSION EXTENDED keywords are specified.
If you specify SHRLEVEL CHANGE and do not specify KEEPDICTIONARY when you run REORG TABLESPACE on the source group in a GDPS Continuous Availability with zero data loss environment, Db2 inserts a decompression dictionary into the CDDS during the switch phase.
Restrictions:- You cannot specify SHRLEVEL CHANGE if the table space has the NOT LOGGED attribute, unless the table space is a LOB table space.
- If you specify SHRLEVEL CHANGE in a REORG TABLESPACE control statement that completes the process of recovery to a point in time prior to the materialization of pending definition changes, REORG issues a message, and uses SHRLEVEL REFERENCE.
- DEADLINE
- Specifies
the deadline for the SWITCH phase to begin. If Db2 estimates that the SWITCH phase will not begin
by the deadline, Db2 issues the messages
that the DISPLAY UTILITY command would issue and then terminates the
reorganization.
The final result and all the timestamp calculation of DEADLINE will be in TIMESTAMP(6).
If REORG SHRLEVEL REFERENCE or SHRLEVEL CHANGE terminates because of a DEADLINE specification, Db2 issues message DSNU374I with reason code 2 but does not set a restrictive status.
- NONE
- Specifies that a deadline by which the SWITCH phase of log processing must begin does not exist.
- timestamp
- Specifies the deadline for the SWITCH phase of log processing to begin. This deadline must not have already occurred when REORG is executed.
- labeled-duration-expression
- Calculates the deadline for the SWITCH phase of log processing to begin. The calculation is
based on either CURRENT TIMESTAMP or CURRENT DATE. You can add or subtract one or more
constant values to specify the deadline. This deadline must not have already occurred
when REORG is executed.
CURRENT TIMESTAMP and
CURRENT DATE are evaluated once, when the REORG statement is first processed. If a list of objects
is specified, the same value will be in effect for all objects in the list.
- CURRENT_DATE
- Specifies that the deadline is to be calculated based on the CURRENT DATE.
- CURRENT_TIMESTAMP
- Specifies that the deadline is to be calculated based on the CURRENT TIMESTAMP.
- WITH TIME ZONE
- Specifies that the CURRENT TIMESTAMP is compared with the time zone column. The timestamp precision of the special register CURRENT TIMESTAMP should be the same as the column timestamp precision. Otherwise the default timestamp precision is used. The time zone of CURRENT TIMESTAMP is the value of special register CURRENT TIMEZONE. The comparison is done by comparing the UTC portion of the timestamp.
- constant
- Indicates a unit of time and is followed by one of the seven duration keywords: YEARS, MONTHS, DAYS, HOURS, MINUTES, SECONDS, or MICROSECONDS. The singular form of these words is also acceptable: YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, MICROSECOND.
- DRAIN_WAIT integer
- Specifies the number of seconds that the utility waits when draining the table space or index. The specified time is the aggregate time for objects that are to be reorganized. This value overrides the values that are specified by IRLMRWT and UTIMOUT. Valid values for integer are from 0 to 1800. If the keyword is omitted or if a value of 0 is specified, the utility uses the value of the lock timeout system parameter IRLMRWT.
- RETRY integer
- Specifies the
maximum number of retries that REORG is to attempt. Valid values for integer
are from 0 to 255.
Specifying RETRY can lead to increased processing costs and can result in multiple or extended periods of read-only access. For example, when you specify RETRY and SHRLEVEL CHANGE, the size of the copy that is taken by REORG might increase.
The default value is the value of the UTIMOUT subsystem parameter.
- RETRY_DELAY integer
- Specifies the minimum duration, in seconds, between retries. Valid values for
integer are from 1 to 1800.
If you do not specify RETRY_DELAY, REORG TABLESPACE uses the smaller of the following two values:
- DRAIN_WAIT value × RETRY value
- DRAIN_WAIT value × 10
- MAPPINGTABLE table-name
- Specifies the name of the mapping table that REORG TABLESPACE is to use to map between the RIDs of data records in the original copy of the area and the corresponding RIDs in the shadow copy. Enclose the table name in quotation marks if the name contains a blank. If a mapping table is required, and one is not specified, REORG will create it.
- MAPPINGDATABASE database-name
- Specifies the database in which REORG implicitly creates the mapping table and index objects. This keyword overrides the subsystem parameter value in REORG_MAPPING_DATABASE. The value cannot be DSNDB01, DSNDB06, DSNDB07, implicit database, and work file or temporary database.
- MAXRO integer
- Specifies
the maximum amount of time for the last iteration of log processing. During that iteration,
applications have read-only access.
MAXRO is a
log phase parameter. If MAXRO is specified when a log phase is not needed, an error message is
issued.
The actual execution time of the last iteration might exceed the specified value for MAXRO.
The ALTER UTILITY command can change the value of MAXRO.
The default value is the RETRY_DELAY default value.
- integer
- integer is the number of seconds. Specifying a small positive value reduces the length of the period of read-only access, but it might increase the elapsed time for REORG to complete. If you specify a huge positive value, the second iteration of log processing is probably the last iteration.
- DEFER
- Specifies that the iterations of log processing with read-write access can continue
indefinitely. REORG never begins the final iteration with read-only access, unless you change the
MAXRO value with ALTER UTILITY.
If you specify DEFER, you should also specify LONGLOG CONTINUE.
If you specify DEFER, and Db2 determines that the actual time for an iteration and the estimated time for the next iteration are both less than 5 seconds, Db2 adds a 5 second pause to the next iteration. This pause reduces consumption of processor time. The first time this situation occurs for a given execution of REORG, Db2 sends message DSNU362I to the console. The message states that the number of log records that must be processed is small and that the pause occurs. To change the MAXRO value and thus cause REORG to finish, execute the ALTER UTILITY command. Db2 adds the pause whenever the situation occurs; however, Db2 sends the message only if 30 minutes have elapsed since the last message was sent for a given execution of REORG.
- DRAIN
- Specifies
drain behavior at the end of the log phase after the MAXRO threshold is reached and when the last
iteration of the log is to be applied. DRAIN is a log phase parameter. If DRAIN is specified when a
log phase is not needed, an error message is issued.
- WRITERS
- Specifies that Db2 drains only the writers during the log phase after the MAXRO threshold is reached and then issues DRAIN ALL on entering the switch phase.
- ALL
- Specifies the current default action, in which Db2 is to drain all readers and writers during the
log phase, after the MAXRO threshold is reached. Consider specifying DRAIN ALL if the following conditions are both true:
- SQL update activity is high during the log phase.
- The default behavior results in a large number of -911 SQL error messages.
Related information: - LONGLOG
- Specifies
the action that Db2 is to perform, after
sending a message to the console, if the number of records that the next iteration of logging is to
process is not sufficiently lower than the number that the previous iterations processed. This
situation means that the reading of the log by the REORG TABLESPACE utility is not being done at the
same time as the writing of the application log. LONGLOG is a log phase parameter. If LONGLOG is
specified when a log phase is not needed, an error message is issued.
- CONTINUE
- Specifies that until the time on the JOB statement expires, Db2 is to continue performing reorganization,
including iterations of log processing, if the estimated time to perform an iteration exceeds the
time that is specified for MAXRO.
A value of DEFER for MAXRO and a value of CONTINUE for LONGLOG together mean that REORG is to continue allowing access to the original copy of the area that is being reorganized and does not switch to the shadow copy. The user can execute the ALTER UTILITY command with a large value for MAXRO to initiate switching.
- TERM
- Specifies that Db2 is to terminate the reorganization after the delay that is specified by the DELAY parameter.
- DRAIN
- Specifies that Db2 is to drain the write claim class after the delay that is specified by the DELAY parameter. This action forces the final iteration of log processing to occur. DRAIN is a log phase parameter. If DRAIN is specified when a log phase is not needed, an error message is issued.
- DELAY integer
- Specifies
the minimum interval between the time that REORG sends the LONGLOG message to the console and the
time that REORG performs the action that is specified by the LONGLOG parameter. DELAY is a log phase
parameter. If DELAY is specified when a log phase is not needed, an error message is issued.
integer is the number of seconds.
The default value is 1200.
- LASTLOG
- Specifies whether REORG SHRLEVEL CHANGE is to apply any log records during
the final log iteration in the LOG phase.
Specifying LASTLOG NO can help reduce outage time by avoiding the costly sub processes (such as page sets force write) that occur in the final log iteration; however, LASTLOG NO might cause REORG to not complete if it cannot find the required period of time without concurrent DML activities. LASTLOG NO requires the DRAIN ALL option to be in effect.
LASTLOG is ignored for REORG executions without SHRLEVEL CHANGE processing.
- YES
- Specifies that REORG is to perform one final round of log apply
processing after draining all claim classes (DRAIN ALL).
Specifying YES ensures that REORG proceeds to the SWITCH phase
after completing the final round of log apply processing in the
LOG phase.
YES is the default value.
- NO
- Specifies that REORG is not to apply any log records in the final log iteration. When existing criteria is met for REORG to "break in" (gain control of objects), REORG firsts drains all claim classes and then processes the logs from the end of the last log iteration to current. If any log records of the target objects are found in this final log iteration, REORG dedrains the target objects and reverts this final log iteration back to a normal log iteration. When REORG "breaks in" again in a future log iteration, the utility repeats this cycle of drain all, log read, and dedrain until it can complete the final log iteration with no log records to apply. The reversion back to a normal log iteration due to the presence of logs counts as a drain failure for RETRY consideration; therefore a high RETRY value is recommended to lessen the impact of the repeating "break in" attempts.
- TIMEOUT
- Specifies the action
that is to be taken if the REORG utility gets a timeout condition while trying to drain an object in
either the log or switch phases.
- TERM
- Indicates that Db2 is to behave as
follows if you specify the TERM option and a timeout condition occurs:
- Db2 issues an implicit TERM UTILITY command, causing the utility to end with a return code 8.
- Db2 issues the DSNU590I and DSNU170I messages.
- Db2 leaves the object in a read-write state.
- ABEND
- Indicates that, if a timeout condition occurs, Db2 takes one of the following actions:
- If DRAIN ALL is specified, Db2 leaves the object in a UTRW state.
- If DRAIN WRITERS is specified or used by default:
- If the failure occurs when there is a write drain lock on the object, Db2 leaves the object in a UTRW state.
- If the failure occurs when there is a read drain lock on the object, Db2 leaves the object in a UTRO state.
- LOGRANGES
- Specifies
whether REORG is to use SYSLGRNX information for the LOG phase.
- YES
- REORG uses SYSLGRNX information for the LOG phase whenever possible. This option is the default behavior.
- NO
- REORG does not use SYSLGRNX information for the LOG phase. This option can cause REORG to run much longer. In a data sharing environment this option can result in the merging of all logs from all members. This option is feasible when there is a known integrity issue with SYSLGRNX entries and performance problems in accessing SYSLGRNX for log read determination.
- DRAIN_ALLPARTS
- Specifies
the action to take during a part level REORG TABLESPACE SHRLEVEL REFERENCE or CHANGE when a
nonpartitioned secondary index is defined on a partitioned table space.
- NO
- REORG drains the target data partitions serially followed by the nonpartitioned secondary indexes. This option is the default behavior.
- YES
- REORG obtains the table space level drain on the entire partitioned table space first, before draining the target data partitions and the indexes. This option can provide relief by eliminating drain timeout or deadlocks caused by the reverse order of object-draining by REORG and object-claiming by DML statements.
- SWITCHTIME
- Specifies
the time for the final log iteration of the LOG phase to begin. The final result and all of the time
stamp calculations of SWITCHTIME are in TIMESTAMP(6). This keyword can be specified with the MAXRO
keyword. If MAXRO DEFER is not specified, REORG enters the final log iteration of the LOG phase
before the specified SWITCHTIME value if the specified or defaulted MAXRO criteria is met. When
MAXRO DEFER is specified, REORG does not attempt to enterto the final log iteration until the
specified SWITCHTIME is met or affected by an external ALTER UTILITY command in the changing of its
MAXRO value.
- NONE
- Does not specify a time for the final log iteration of the LOG phase. This option is the default behavior.
- timestamp
- Specifies the time that the final log iteration of the LOG phase is to begin. This time must not have already occurred when REORG is run.
- labeled-duration-expression
- Calculates the time for the final log iteration of LOG phase is to begin. The calculation is
based on either CURRENT TIMESTAMP or CURRENT DATE. You can add or subtract one or more constant
values to specify the switch time. This switch time must not have already occurred when REORG is
run. CURRENT TIMESTAMP and CURRENT DATE are evaluated once, when the REORG statement is first
processed. If a list of objects is specified, the same value is in effect for all objects in the list.
- CURRENT_DATE
- Specifies that the deadline is to be calculated based on the CURRENT DATE.
- CURRENT_TIMESTAMP
- Specifies that the deadline is to be calculated based on the CURRENT TIMESTAMP.
- WITH TIME ZONE
- Specifies that the CURRENT TIMESTAMP is compared with the time zone column. The time stamp precision of the special register CURRENT TIMESTAMP should be the same as the column time stamp precision. Otherwise, the default time stamp precision is used. The time zone of CURRENT TIMESTAMP is the value of special register CURRENT TIMEZONE. The comparison is done by comparing the Coordinated Universal Time portion of the time stamp.
- constant
- Indicates a unit of time and is followed by one of the seven duration keywords: YEARS, MONTHS, DAYS, HOURS, MINUTES, SECONDS, or MICROSECONDS. The singular form of these words is also acceptable: YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, MICROSECOND.
- NEWMAXRO
- Specifies the
maximum amount of time for the last log iteration after SWITCHTIME is met. The SWITCHTIME keyword
must also be specified. This value overrides the existing MAXRO parameter that is specified. The
default is NONE.
- NONE
- Specifies that when the specified SWITCHTIME is met, REORG proceeds to the last log iteration without taking log processing time in to consideration. Specifying NONE will result in REORG entering the last log iteration almost immediately at or after the specified SWITCHTIME. This option is the default.
- integer
- integer is the number of seconds. Specifying a small positive value reduces the length of the period of read-only access, but it might increase the elapsed time for REORG to complete. Specifying a large positive value probably ensures that REORG will enter the last log iteration almost immediately at or after the specified SWITCHTIME.
- FORCE
-
Specifies the action to
be taken when the utility is draining the table space.
When REORG FORCE is canceling the threads, it performs a soft cancel similar to the cancel that the CANCEL THREAD does.
- NONE
- Specifies that no action is taken when REORG performs drain. The REORG utility waits for the claimers to commit. The utility will timeout or restart when the drain fails, as determined by existing conditions.
- READERS
- Specifies that read claimers are canceled when REORG is requesting a drain all on the last RETRY processing.
- ALL
- Specifies that both read and write claimers are canceled when REORG is requesting a drain all or drain writers on the last RETRY processing.
- SORTNPSI
- Specifies when
REORG TABLESPACE PART is to sort all keys of a non-partitioned secondary index (NPSI). The
benefit of sorting all NPSI keys increases as the ratio of data that is reorganized to total
data in the table space increases. However, sorting index keys can add processing overhead for
the utility.
This keyword is ignored for a REORG operation that is not partition-level or without NPSIs. The default value is the value of subsystem parameter REORG_PART_SORT_NPSI.
- AUTO
- The utility determines
whether to sort all NPSI keys or only keys in the scope of the REORG operation.
The decision is based on many factors, including a projection of the estimated elapsed time and CPU performance savings of sorting all NPSI keys being processed. However, the actual performance varies depending on the specific scenario, and CPU and elapsed time reductions are not always guaranteed.
- YES
- All NPSI keys are sorted.
- NO
- Only NPSI keys that are in the scope of the REORG operation are sorted.
When STATISTICS INDEX is specified and either SORTNPSI AUTO is specified or the REORG_PART_SORT_NPSI subsystem parameter is set to AUTO, REORG TABLESPACE PART can collect statistics for a NPSI. However, in some of these cases, REORG does not collect statistics.
- AUX
- Specifies that the
LOB table spaces associated with the partitions of a partitioned table space being reorganized by
the REORG utility are also reorganized.
- NO
- Indicates that a reorganization is performed on the base table space, but the associated LOB
table spaces are not reorganized.
If the AUX keyword is omitted, AUX NO is the default unless one or more of the cases described in AUX YES are true.
AUX NO is ignored when the target table space has pending definition changes to convert it from a simple or segmented (non-UTS) table space to a partition-by-growth table space. In this case, AUX YES is in effect.
LOG NO cannot be specified for a REORG operation that completes recovery to a point in time before pending definition changes were materialized, if there were pending definition changes on the base table space and on the LOB table space. REORG must be run on the LOB table space first, and then run on the base table space. When REORG is run on the base table space, AUX YES is in effect.
For a table with LOB columns that are affected by pending alter limit keys, a REORG job with AUX NO does not materialize the limit key changes. In this case, you need to specify AUX YES for those changes to be materialized.
- YES
- Indicates that LOB table spaces associated with the base partitioned table space are reorganized
when the base table space is reorganized. Partitions of the associated table spaces are
also reorganized.
If the AUX keyword is omitted, in the following cases, AUX YES is the default:
- REORG TABLESPACE of a partition-by-growth base table space with one or more LOB columns, where the table space has a MAXPARTITIONS value that is greater than one.
- REORG TABLESPACE SHRLEVEL REFERENCE REBALANCE of a partitioned base table space with one or more LOB columns.
- REORG TABLESPACE is run against directory table space SPT01, and SPT01 is in the REORP or AREOR state. In this case, AUX YES is always used.
- REORG TABLESPACE of a partitioned base table space with one or more LOB columns where one or more partition ranges are in REORG pending state because an ALTER TABLE PARTITION command has been issued to change the partition key boundaries.
- REORG TABLESPACE DISCARD of a table in a partitioned table space with one or more LOB columns.
When AUX YES is implicitly or explicitly specified, and the COPYDDN parameter specifies a TEMPLATE utility control statement with the &SN. or &TS. variables without substring notation on them, REORG takes the following actions for the LOB table spaces:
- Creates inline image copies
- Resets COPY-pending status
When AUX YES is implicitly or explicitly specified and templates are specified, make sure that those templates generate unique data set names for the auxiliary table spaces that are being reorganized. Make sure that you account for auxiliary table spaces that are included in any specified LISTDEF lists.
When AUX YES is implicitly or explicitly specified, and FlashCopy image copies are taken as part of REORG, REORG produces image copies for all of the LOB table spaces that are being reorganized.
REORG AUX YES does not materialize pending alters on the LOB table spaces and its indexes and thus does not reset the AREOR status on these objects. You must run a separate REORG on the LOB table space to materialize these pending definition changes.
Restrictions: When REORG with AUX YES is run on a partition-by-growth table space with LOB columns, the following restrictions apply:- If you specify that REORG is to create inline copies and use a template for the copies, do not use the STACK YES option for the template. If you do so, REORG fails, because the base and auxiliary table spaces cannot be stacked on the same tape volume. If you need to use a template with the STACK YES option, specify AUX NO on the REORG statement and then reorganize and copy the auxiliary table spaces separately.
- FASTSWITCH
- Specifies
which switch methodology is to be used for a given
reorganization.
- YES
- Enables the SWITCH phase to use the FASTSWITCH methodology. This option is not allowed for the catalog (DSNDB06) or directory (DSNDB01).
- NO
- Causes the SWITCH phase to use IDCAMS
RENAME.
When FASTSWITCH NO is specified with SHRLEVEL REFERENCE or SHRLEVEL CHANGE, pending definition changes are not materialized.
- OFFPOSLIMIT integer
The OFFPOSLIMIT option is deprecated, and the alternative is running DSNACCOX.
Indicates that the specified value is to be compared to the value that Db2 calculates for the explicit clustering indexes of every table in the specified partitions that are in SYSIBM.SYSINDEXPART. The calculation is computed as follows:(NEAROFFPOSF + FAROFFPOSF) × 100 / CARDF
Alternatively, Db2 checks the values in SYSINDEXPART for a single nonpartitioned table space, or for each partition if you specified an entire partitioned table space as the target object. If at least one calculated value exceeds the OFFPOSLIMIT value, REORG is performed or recommended. This option is valid for non-LOB table spaces only.
integer is the value that is to be compared and can range from 0 to 65535.
The default value is 10.
- INDREFLIMIT integer
The INDREFLIMIT option is deprecated, and the alternative is running DSNACCOX.
Indicates that the specified value is to be compared to the value that Db2 calculates for the specified partitions in SYSIBM.SYSTABLEPART for the specified table space. The calculation is computed as follows:(NEARINDREF + FARINDREF) × 100 / CARDF
Alternatively, Db2 checks the values in SYSTABLEPART for a single nonpartitioned table space, or for each partition if you specified an entire partitioned table space as the target object. If at least one calculated value exceeds the calculated value exceeds the INDREFLIMIT value, REORG is performed or recommended. This option is valid for non-LOB table spaces only.
integer is the value that is to be compared and can range from 0 to 65535.
The default value is 10.
- REPORTONLY
The REPORTONLY option is deprecated, and the alternative is running DSNACCOX.
Specifies that REORG is only to be recommended, not performed. REORG produces a report with one of the following return codes:- 1
- No limit met; no REORG is to be performed or recommended.
- 2
- REORG is to be performed or recommended.
- UNLOAD
- Specifies whether the
utility job is to continue processing or end after the data is unloaded. Unless you specify UNLOAD
EXTERNAL, data can be reloaded only into the same table and table space (as defined in the Db2 catalog) on the same subsystem. (This does not
preclude VSAM redefinition during UNLOAD PAUSE.)
You must specify UNLOAD ONLY for the data set to be in a format that is compatible with the FORMAT UNLOAD option of LOAD. However, with LOAD, you can load the data only into the same object from which it is unloaded.
This option is valid for non-LOB table spaces only.
You must specify UNLOAD EXTERNAL for the data set to be in a format that is usable by LOAD without the FORMAT UNLOAD option. With UNLOAD EXTERNAL, you can load the data into any table with compatible columns in any table space on any Db2 subsystem.- CONTINUE
- Specifies that, after the data has been unloaded, the utility is to continue processing. An edit
routine can be called to decode a previously encoded data row if an index key requires extraction
from that row.
If you specify DISCARD, rows are decompressed and edit routines are decoded. If you also specify DISCARD to a file, rows are decoded by field procedure, and the following columns are converted to Db2 external format:
- SMALLINT
- INTEGER
- FLOAT
- DECIMAL
- TIME
- TIMESTAMP
Otherwise, edit routines or field procedures are bypassed on both the UNLOAD and RELOAD phases for table spaces. Validation procedures are not invoked during either phase.
- PAUSE
The UNLOAD PAUSE option is deprecated, and the alternative is running the UNLOAD utility.
Specifies that, after the data has been unloaded, processing is to end. The utility stops and the RELOAD status is stored in SYSIBM.SYSUTIL so that processing can be restarted with RELOAD RESTART(PHASE).This option is useful if you want to redefine data sets during reorganization. For example, with a user-defined data set, you can:
- Run REORG with the UNLOAD PAUSE option.
- Redefine the data set by using Access Method Services.
- Restart REORG by resubmitting the previous job and specifying RESTART(PHASE).
However, you cannot use UNLOAD PAUSE if you specify the LIST option.
- ONLY
The UNLOAD ONLY option is deprecated, and the alternative is running the UNLOAD utility.
Specifies that, after the data has been unloaded, the utility job ends and the status that corresponds to this utility ID is removed from SYSIBM.SYSUTIL.If you specify UNLOAD ONLY with REORG TABLESPACE, any edit routine or field procedure is executed during record retrieval in the unload phase.
This option is not allowed for any table space in DSNDB01 or DSNDB06.
The DISCARD and WHEN options are not allowed with UNLOAD ONLY.
- EXTERNAL
The UNLOAD EXTERNAL option is deprecated, and the alternative is running the UNLOAD utility.
Specifies that, after the data has been unloaded, the utility job is to end and the status that corresponds to this utility ID is removed.The UNLOAD utility has more functions. If you specify UNLOAD EXTERNAL with REORG TABLESPACE, rows are decompressed, edit routines are decoded, field procedures are decoded, and SMALLINT, INTEGER, FLOAT, DECIMAL, DATE, TIME, and TIMESTAMP columns are converted to Db2 external format. Validation procedures are not invoked.
Do not specify the EXTERNAL keyword for:- Table spaces in DSNDB01 or DSNDB06
- Base tables with XML columns
- XML table spaces
The DISCARD option is not allowed with UNLOAD EXTERNAL.
- NOPAD
-
Specifies whether the variable-length columns in the unloaded or discarded records are to occupy the actual data length without additional padding. The unloaded records can have varying lengths.
- YES
- Specifies that the variable-length columns are to have no additional padding.
The default value of NOPAD is set by the REORG_TS_NOPAD_DEFAULT subsystem parameter, which has a default value of YES.
Related information: - NO
- Specifies that REORG processing pads variable-length columns in the unloaded or discarded records to their maximum length; the unloaded or discarded records have equal lengths for each table.
You can specify the NOPAD option only with UNLOAD EXTERNAL or with UNLOAD DISCARD.
Although the LOAD utility processes records with variable-length columns that were unloaded or discarded with the NOPAD option, these records cannot be processed by applications that process only fields that are in fixed positions.
For the generated LOAD statement to provide a NULLIF condition for fields that are not in a fixed position, Db2 generates an input field definition with a name in the form of DSN_NULL_IND_nnnnn, where nnnnn is the number of the associated column.
The following example shows a LOAD statement that was generated for the EMPsample table:
LOAD DATA INDDN SYSREC LOG NO RESUME YES EBCDIC CCSID(00500,00000,00000) INTO TABLE "DSN8D10 "."EMP " WHEN(00004:00005 = X'0012') ( "EMPNO " POSITION(00007:00012) CHAR(006) , "FIRSTNME " POSITION(00013) VARCHAR , "MIDINIT " POSITION(*) CHAR(001) , "LASTNAME " POSITION(*) VARCHAR , DSN_NULL_IND_00005 POSITION(*) CHAR(1) , "WORKDEPT " POSITION(*) CHAR(003) NULLIF(DSN_NULL_IND_00005)=X'FF' , DSN_NULL_IND_00006 POSITION(*) CHAR(1) , "PHONENO " POSITION(*) CHAR(004) NULLIF(DSN_NULL_IND_00006)=X'FF' , DSN_NULL_IND_00007 POSITION(*) CHAR(1) , "HIREDATE " POSITION(*) DATE EXTERNAL NULLIF(DSN_NULL_IND_00007)=X'FF' , DSN_NULL_IND_00008 POSITION(*) CHAR(1) , "JOB " POSITION(*) CHAR(008) NULLIF(DSN_NULL_IND_00008)=X'FF' , DSN_NULL_IND_00009 POSITION(*) CHAR(1) , "EDLEVEL " POSITION(*) SMALLINT NULLIF(DSN_NULL_IND_00009)=X'FF' , DSN_NULL_IND_00010 POSITION(*) CHAR(1) , "SEX " POSITION(*) CHAR(001) NULLIF(DSN_NULL_IND_00010)=X'FF' , DSN_NULL_IND_00011 POSITION(*) CHAR(1) , "BIRTHDATE " POSITION(*) DATE EXTERNAL NULLIF(DSN_NULL_IND_00011)=X'FF' , DSN_NULL_IND_00012 POSITION(*) CHAR(1) , "SALARY " POSITION(*) DECIMAL NULLIF(DSN_NULL_IND_00012)=X'FF' , DSN_NULL_IND_00013 POSITION(*) CHAR(1) , "BONUS " POSITION(*) DECIMAL NULLIF(DSN_NULL_IND_00013)=X'FF' , DSN_NULL_IND_00014 POSITION(*) CHAR(1) , "COMM " POSITION(*) DECIMAL NULLIF(DSN_NULL_IND_00014)=X'FF' )
- FROM TABLE
- Specifies the
tables that are to be reorganized. The table space that is specified in REORG TABLESPACE can store
more than one table. All tables that are specified by FROM TABLE statements must be unique.
All tables are unloaded for UNLOAD EXTERNAL, and all tables might be subject to DISCARD.
If you
specify UNLOAD EXTERNAL and want to limit which tables and rows are unloaded, specify FROM TABLE
with the WHEN option. If you specify DISCARD, you must qualify the rows that you want to discard by
specifying FROM TABLE with the WHEN option.
Do not specify FROM TABLE with REORG TABLESPACE LIST.
- table-name
- Specifies the name of the table that is to be qualified by the following WHEN clause. The table
must be described in the catalog and must not be a catalog table. FL 505The exception is
security-related catalog history tables; you can specify these tables in a FROM TABLE
clause to use the DISCARD option to remove rows.
If the table name is not qualified by a schema name, the authorization ID of the person who invokes the utility job step is used as the schema qualifier of the table name. Enclose the table name in quotation marks if the name contains a blank.
- WHEN
- Indicates which
records in the table space are to be unloaded (for UNLOAD EXTERNAL) or discarded (for DISCARD). If
you do not specify a WHEN clause for a table in the table space, all of the records are unloaded
(for UNLOAD EXTERNAL), or none of the records is discarded (for DISCARD).
The option following WHEN describes the conditions for UNLOAD or DISCARD of records from a table and must be enclosed in parentheses.
- selection condition
- Specifies a condition that is true, false, or unknown about a
specific row. When the condition is true, the row qualifies for UNLOAD or DISCARD. When the
condition is false or unknown, the row does not qualify.
A selection condition consists of at least one predicate and any logical operators (AND, OR, NOT). The result of a selection condition is derived by applying the specified logical operators to the result of each specified predicate. If logical operators are not specified, the result of the selection condition is the result of the specified predicate.
Selection conditions within parentheses are evaluated first. If the order of evaluation is not specified by parentheses, AND is applied before OR.
If the control statement is in the same encoding scheme as the input data, you can code character constants in the control statement. Otherwise, if the control statement is not in the same encoding scheme as the input data, you must code the condition with hexadecimal constants.
If the wildcard character '%' is used, the hexadecimal value of the wildcard character must be in EBCDIC. For example, in the following statement, x'41' means
'A'
in UNICODE and ASCII and x'6C' means'%'
in EBCDIC:COL1 LIKE X'416C'
.If the target table is ASCII, any character constants must be specified in hexadecimal. For example, if the table space is in EBCDIC and the control statement is in UTF-8, use (1:1)=X'F1' in the condition rather than (1:1)='1'.
Restriction: REORG TABLESPACE cannot filter rows based on column-level encrypted data. - predicate
- A predicate specifies a condition that is true, false, or unknown
about a given row or group.
- basic predicate
- Specifies the
comparison of a column with a constant. If the value of the column is null, the result of the
predicate is unknown. Otherwise, the result of the predicate is true or false.
- Predicate
- Is true if and only if
- column-name = constant
- The column is equal to the constant or labeled duration expression.
- column-name < > constant
- The column is not equal to the constant or labeled duration expression.
- column-name > constant
- The column is greater than the constant or labeled duration expression.
- column-name < constant
- The column is less than the constant or labeled duration expression.
- column-name > = constant
- The column is greater than or equal to the constant or labeled duration expression.
- column-name < = constant
- The column is less than or equal to the constant or labeled duration expression.
Comparison operators: The following forms of the comparison operators are also supported in basic and quantified predicates: !=, !<, and !>, where ! means not. In addition, in code pages 437, 819, and 850, the forms ¬=, ¬<, and ¬> are supported. All these product-specific forms of the comparison operators are intended only to support existing REORG statements that use these operators and are not recommended for use in new REORG statements.A not sign (¬), or the character that must be used in its place in certain countries, can cause parsing errors in statements that are passed from one DBMS to another. The problem occurs if the statement undergoes character conversion with certain combinations of source and target CCSIDs. To avoid this problem, substitute an equivalent operator for any operator that includes a not sign. For example, substitute '< >' for '¬=', '<=' for '¬>', and '>=' for '¬<'.
- BETWEEN predicate
- Indicates whether
a given value is between two other given values that are specified in ascending order. Each of the
predicate's two forms (BETWEEN and NOT BETWEEN) has an equivalent search condition, as shown in the
following table. If relevant, the table also shows any equivalent predicates.
Table 1. BETWEEN predicates and their equivalent search conditions Predicate Equivalent predicate Equivalent search condition column BETWEEN value1 AND value2 None (column >= value1 AND column <= value2) column NOT BETWEEN value1 AND value2 NOT(column BETWEEN value1 AND value2) (column < value1 OR column > value2) Note: The values can be constants or labeled duration expressions.For example, the following predicate is true for any row when salary is greater than or equal to 10 000 and less than or equal to 20 000:
SALARY BETWEEN 10000 AND 20000
- labeled-duration-expression
- Specifies an expression that begins with the following special register values:
- CURRENT DATE (CURRENT_DATE is acceptable.)
- CURRENT TIMESTAMP (CURRENT_TIMESTAMP is acceptable.)
Optionally, the expression contains the arithmetic operations of addition or subtraction, expressed by a number followed by one of the seven duration keywords:
- YEARS (or YEAR)
- MONTHS (or MONTH)
- DAYS (or DAY)
- HOURS (or HOUR)
- MINUTES (or MINUTE)
- SECONDS (or SECOND)
- MICROSECONDS (or MICROSECOND)
Utilities evaluate a labeled-duration-expression as a timestamp and implicitly perform a conversion to a date if the comparison is with a date column.
Incrementing and decrementing CURRENT DATE: The result of adding a duration to a date, or of subtracting a duration from a date, is itself a date. (For the purposes of this operation, a month denotes the equivalent of a calendar page. Adding months to a date, then, is like turning the pages of a calendar, starting with the page on which the date appears.) The result must fall between the dates January 1, 0001 and December 31, 9999 inclusive.The following table describes the effects of adding and subtracting years, months, days, and other dates.
Table 2. Effects of adding durations to and subtracting durations from CURRENT DATE Value that is added or subtracted Effect Years Adding or subtracting a duration of years affects only the year portion of the date. The month is unchanged, as is the day unless the result would be February 29 of a non-leap-year. In this case, the day portion of the result is set to 28.
Months Adding or subtracting a duration of months affects only months and, if necessary, years. The day portion of the date is unchanged unless that day does not exist in the resulting month. (September 31, for example). In this case the day is set to the last day of the month.
Adding a month to a date gives the same day one month later unless that day does not exist in the later month. In that case, the day in the result is set to the last day of the later month. For example, January 28 plus one month gives February 28; one month added to January 29, 30, or 31 results in either February 28 or, for a leap year, February 29. If one or more months is added to a given date and then the same number of months is subtracted from the result, the final date is not necessarily the same as the original date.
Days Adding or subtracting a duration of days affects the day portion of the date, and potentially the month and year.
Dates When a positive date duration is added to a date, or a negative date duration is subtracted from a date, the date is incremented by the specified number of years, months, and days.
When a positive date duration is subtracted from a date, or a negative date duration is added to a date, the date is decremented by the specified number of days, months, and years.
The order in which labeled date durations are added to and subtracted from dates can affect the results. When you add labeled date durations to a date, specify them in the order of YEARS + MONTHS + DAYS. When you subtract labeled date durations from a date, specify them in the order of DAYS - MONTHS - YEARS. For example, to add one year and one day to a date, specify the following code:
CURRENT DATE + 1 YEAR + 1 DAY
To subtract one year, one month, and one day from a date, specify the following code:
CURRENT DATE - 1 DAY - 1 MONTH - 1 YEAR
Incrementing and decrementing timestamps: The result of adding a duration to a timestamp, or of subtracting a duration from a timestamp, is itself a timestamp. Date and time arithmetic is performed as previously defined, except that an overflow or underflow of hours is carried into the date part of the result, which must be within the range of valid dates. For example, if the current date is January 15 and the current time is 20:00,CURRENT_TIMESTAMP+8 HOURS
yields January 16, 04:00. Likewise,CURRENT_TIMESTAMP-22 HOURS
yields January 14, 22:00. - IN predicate
- Specifies that a value
is to be compared with a set of values. In the IN predicate, the second operand is a set of one or
more values that are specified by constants. Each of the predicate's two forms (IN and NOT IN) has
an equivalent search condition, as shown in the following table.
Table 3. IN predicates and their equivalent search conditions Predicate Equivalent search condition value1 IN (value1, value2,…, valuen) (value1 = value2 OR … OR value1 = valuen) value1 NOT IN (value1, value2,…, valuen) value1 ¬= value2 AND … AND value1 ¬= valuen) Note: The values can be constants or labeled duration expressions.For example, the following predicate is true for any row with an employee in department D11, B01, or C01:
WORKDEPT IN ('D11', 'B01', 'C01')
Specifying too many values in the IN predicate can significantly degrade utility performance. The exact number can vary; however, in general, specifying 2500 or more values can start impacting performance.
- LIKE predicate
- Qualifies strings
that have a certain pattern. Specify the pattern by using a string in which the underscore and
percent sign characters can be used as wildcard characters. The underscore character (_) represents
a single, arbitrary character. The percent sign (%) represents a string of zero or more arbitrary
characters.
In this description, let x denote the column that is to be tested and y denote the pattern in the string constant.
The following rules apply to predicates of the formx LIKE y…
. If NOT is specified, the result is reversed.- When x or y is null, the result of the predicate is unknown.
- When y is empty and x is not empty, the result of the predicate is false.
- When x is empty and y is not empty, the result of the predicate is false unless y consists only of one or more percent signs.
- When x and y are both empty, the result of the predicate is true.
- When x and y are both not null, the result of the predicate is true if x matches the pattern in y and false if x does not match the pattern in y.
The pattern string and the string that is to be tested must be of the same type; that is, both x and y must be character strings, or both x and y must be graphic strings. When x and y are graphic strings, a character is a DBCS character. When x and y are character strings and x is not mixed data, a character is an SBCS character, and y is interpreted as SBCS data regardless of is subtype.
Within the pattern, a percent sign (%) or underscore character (_) can represent the literal occurrence of a percent sign or underscore character. To have a literal meaning, each character must be preceded by an escape character.
The ESCAPE clause designates a single character. You can use that character, and only that character, multiple times within the pattern as an escape character. When the ESCAPE clause is omitted, no character serves as an escape character and percent signs and underscores in the pattern can only be used to represent arbitrary characters; they cannot represent their literal occurrences.
The following rules apply to the use of the ESCAPE clause:
- The ESCAPE clause cannot be used if x is mixed data.
- If x is a character string, the data type of the string constant must be character string. If x is a graphic string, the data type of the string constant must be graphic string. In both cases, the length of the string constant must be 1.
- The pattern must not contain the escape character except when followed by the escape character, '%', or '_'. For example, if '+' is the escape character, any occurrences of '+' other than '++', '+_', or '+%' in the pattern is an error.
When that pattern does not include escape characters, a simple description of its meaning is:- The underscore character (_) represents a single, arbitrary character.
- The percent sign (%) represents a string of zero or more arbitrary characters.
- Any other character represents a single occurrence of itself.
Strings and patterns:The string y is interpreted as a sequence of the minimum number of substring specifiers, such that each character of y is part of exactly one substring specifier. A substring specifier is an underscore, a percent sign, or any non-empty sequence of characters other than an underscore or percent sign.
The string x matches the pattern y if a partitioning of x into substrings exists, such that:
- A substring of x is a sequence of zero or more contiguous characters, and each character of x is part of exactly one substring.
- If the nth substring specifier is an underscore, the nth substring of x is any single character.
- If the nth substring specifier is a percent sign, the nth substring of x is any sequence of zero or more characters.
- If the nth substring specifier is neither an underscore nor a percent sign, the nth substring of x is equal to that substring specifier and has the same length as that substring specifier.
- The number of substrings of x is the same as the number of substring specifiers.
When escape characters are present in the pattern string, an underscore, percent sign, or escape character represents a single occurrence of itself if and only if it is preceded by an odd number of successive escape characters.
The way a pattern is matched to evaluate the LIKE predicate depends on whether blanks at the end of fixed length strings are significant, or if the blanks are ignored. When the LIKE_BLANK_INSIGNIFICANT subsystem parameter is enabled, the LIKE predicate can produce different results.
Mixed-data patterns:If x is mixed data, the pattern is assumed to be mixed data, and its special characters are interpreted as follows:
- A single-byte underscore refers to one single-byte character; a double-byte underscore refers to one double-byte character.
- A percent sign, either single-byte or double-byte, refers to any number of characters of any type, either single-byte or double-byte.
- Redundant shift bytes in x or y are ignored.
Related information: - NULL predicate
- Specifies a test for
null values.
If the value of the column is null, the result is true. If the value is not null, the result is false. If NOT is specified, the result is reversed.
- KEEPDICTIONARY
- Prevents REORG TABLESPACE
from building a new compression dictionary when unloading the rows. The REORG utility builds the
compression dictionary during the UNLOAD process. This dictionary is then used during the RELOAD
phase to compress the data.
The efficiency of REORG increases with the KEEPDICTIONARY option for the following reasons:
- The processing cost of building the compression dictionary is eliminated.
- Existing compressed rows do not need to be compressed again.
- Existing compressed rows do not need to be expanded, unless indexes require it or SORTDATA is used.
KEEPDICTIONARY is valid only if a compression dictionary exists and the table space or partition that is being reorganized is defined with compression. If a dictionary does not exist, one is built, a warning message is issued, and all the records are compressed.
Possible reasons for not specifying KEEPDICTIONARY are:
- If the data has changed significantly since the last dictionary was built, rebuilding the dictionary might save a significant amount of space.
- If the current dictionary was built either by the LOAD utility or automatically by Db2 based on records that have been inserted over time, rebuilding the dictionary by using REORG might produce a better compression dictionary.
In the following situations, KEEPDICTIONARY is ignored and REORG always builds a new compression dictionary:
- If the data is being converted from basic row format to reordered row format
- If REORG is materializing a pending alter of the buffer pool
- If a partition that is being reorganized is in REORG-pending status
- If REORG is materializing a pending MOVE TABLE operation
- FL 500 If REORG is materializing a pending change to the partitioning scheme of a table
Messages DSNU234I and DSNU244I, which show compression statistics, are not issued when you specify REORG UNLOAD CONTINUE KEEPDICTIONARY or REORG UNLOAD PAUSE KEEPDICTIONARY.
Note: You must use KEEPDICTIONARY to ensure that the compression dictionary is maintained.Related information:
- STATISTICS
- Specifies that statistics for the table space or associated index, or both, are to be gathered;
the statistics are reported or stored in the Db2 catalog. If statistics are collected with
the default options, only the statistics for the table space are updated.
If you specify a table space partition or a range of partitions along with the STATISTICS keyword, Db2 collects statistics only for the specified table space partitions. This option is valid for non-LOB table spaces only.
If you specify a base table space with the STATISTICS keyword, Db2 does not gather statistics for the related XML table space or its indexes.
When SORTNPSI AUTO or SORTNPSI YES is specified, or when the REORG_PART_SORT_NPSI subsystem parameter is set to AUTO or YES, REORG TABLESPACE PART can collect statistics for a non-partitioned secondary index when the STATISTICS INDEX keywords are also specified. However, in some of these cases, REORG does not collect statistics. This situation occurs if REORG chooses not to sort all of the nonpartitioned index keys, because the amount of data to reorganize or the sizes of objects exceeded internal thresholds.
Restrictions:- If you specify STATISTICS for encrypted data, Db2 might not provide useful statistics on this data.
- You cannot specify STATISTICS if you specify the CLONE keyword.
When pending definition changes are materialized during REORG TABLESPACE with SHRLEVEL REFERENCE or CHANGE, statistics for both a table space and its associated indexes are collected and updated in the Db2 catalog. In this case, if the STATISTICS keyword is not specified in the REORG TABLESPACE statement, the following keywords are used by default:- STATISTICS TABLE ALL
- INDEX ALL
- UPDATE ALL
- HISTORY ALL
Recommendation: Partition statistics can become obsolete. The partition statistics that can be obsolete are COLGROUP statistics, statistics for key column values in indexes, HISTOGRAM statistics, frequency statistics with NUMCOLS > 1, and statistics for extended indexes where applicable. Run the RUNSTATS utility to collect the partition statistics again.All tables identified by the STATISTICS TABLE keyword must belong to the table space that is specified in the TABLESPACE option.
- TABLE
- Specifies the table for which column information is to be gathered.
Do not specify STATISTICS TABLE table-name with the LIST keyword. Instead, specify STATISTICS TABLE (ALL).
- (ALL)
- Specifies that information is to be gathered for all columns of all tables in the table space.
When REORG TABLESPACE STATISTICS TABLE ALL INDEX ALL is specified, all the statistics for the table space, table, and indexes are collected at both the partition level and the aggregate level.
- (table-name)
- Specifies the tables for which column information is to be gathered. If you omit the qualifier,
the user identifier for the utility job is used. Enclose the table name in quotation marks if the
name contains a blank.
If you specify more than one table, you must repeat the TABLE option. Multiple TABLE options must be specified entirely before or after any INDEX keyword that may also be specified. For example, the INDEX keyword may not be specified between any two TABLE keywords.
- SAMPLE integer
- Indicates the percentage of rows to be sampled when collecting statistics on non-leading-indexed
columns of an index or non-indexed columns. You can specify any value from 1 through 100.
The default value is 25. The SAMPLE option is not allowed for LOB table spaces.
- TABLESAMPLE SYSTEM
- FL 500
Indicates that a
sample of data pages from the table is to be used for statistics collection.
System sampling considers each page individually. The probability that a page will be included in the sample is P/100 (where P is the value of numeric-literal, and the probability that a page will be excluded from the sample is 1-P/100. Each execution of REORG usually yields a different such sample of the table.
TABLESAMPLE SYSTEM is valid only for universal table spaces (UTS). If TABLESAMPLE is specified for segmented (non-UTS), partitioned (non-UTS), or LOB table spaces, page sampling is not done. Instead, all pages are scanned to collect statistics.
If you do not specify TABLESAMPLE SYSTEM, the value of the STATPGSAMP subsystem parameter determines whether page sampling is used. If the STATPGSAMP subsystem parameter is set to SYSTEM or YES and the target table space is a universal table space, SAMPLE is ignored. Instead, REORG uses TABLESAMPLE SYSTEM AUTO.
- numeric-literal
- Specifies the sample size as a percentage (P). This value must be a positive number that
is less than or equal to 100 and greater than 0. For example, a value of 0.01 represents
one hundredth of a percent, such that 1 row in 10,000 is sampled, on average. The smallest
allowable positive number for numeric-literal is 0.01.
Depending on the table space size and sampling rate that is used, a partition might not be included in the sample. In this case, REORG does not collect statistics for this partition and might report warnings or errors for aggregate statistics.
If you specify numeric-literal, and real-time statistics are not available, Db2 issues a warning message.
- AUTO
- Specifies that REORG is to determine the sampling rate based on the size of the table
when the utility runs. The larger the table, the smaller the sampling rate. The number of
rows is obtained from the real-time statistics report (in SYSIBM.SYSTABLESPACESTATS). When
AUTO is specified, and real-time statistics are not available, REORG sets the sampling rate
to 100.
When you specify TABLESAMPLE SYSTEM AUTO, REORG uses page sampling only if the table has more than 500,000 rows; otherwise all pages are read. The same threshold (500,000 rows) is also applicable for sampling on table space partitions.
If you specify AUTO for an entire partitioned table space, and the number of rows in each partition varies greatly, a partition that contains rows on very few pages can be skipped. This situation is reported by message DSNU1375I. In this case, you should run REORG again with the SAMPLE keyword at the partition level for each partition that was skipped.
- NONE
- Specifies that page sampling is not to be used for inline statistics. You can specify TABLESAMPLE SYSTEM NONE to override the value of the STATPGSAMP subsystem parameter for a particular utility job. If you specify TABLESAMPLE SYSTEM NONE to override STATPGSAMP, you can specify the SAMPLE option. Otherwise, SAMPLE is not allowed to be specified with TABLESAMPLE.
- USE PROFILE
- Specifies a stored statistics profile that is used to gather statistics for a table. The
statistics profile is created using the SET PROFILE option and is updated using the UPDATE
PROFILE option.
The column, column group, and index specifications are not allowed as part of the control statement, but are used when stored in the statistics profile.
If no profile exists for the specified table, default statistics are collected:- When a table name is not specified, TABLE ALL INDEX ALL is used for the profile specification.
- When a table name is specified, COLUMN ALL INDEX ALL is used for the profile specification.
When you specify USE PROFILE, the profile options are included in SYSPRINT in message DSNU1376I.
Additionally, Db2 deletes existing statistics that are not included in the profile. All frequency, keycard, and histogram statistics that are not part of the profile are deleted from the catalog. These statistics are deleted for only the specified table or partition. Statistics are not deleted from catalog history tables. If you specify UPDATE NONE or UPDATE SPACE, no statistics are deleted.
Related information: - COLUMN
- Specifies columns for which column information is to be gathered. You can specify this option only if you specify a particular table for which statistics are to be gathered (TABLE (table-name)). If you specify particular tables and do not specify the COLUMN option, the default, COLUMN(ALL), is used. If you do not specify a particular table when using the TABLE option, you cannot specify the COLUMN option; however, COLUMN(ALL) is assumed.
- (ALL)
- Specifies that statistics are to be gathered for all columns in the table.
- (column-name, …)
- Specifies the columns for which statistics are to be gathered.
You can specify a list of column names; the maximum is 10. If you specify more than one column, separate each name with a comma.
- INDEX
- Specifies indexes for which information is to be gathered. Column information is gathered for
the first column of the index. All the indexes must be associated with the same table space, which
must be the table space that is specified in the TABLESPACE option.
Do not specify STATISTICS INDEX index-name with the LIST keyword. Instead, specify STATISTICS INDEX (ALL).
- (ALL)
- Specifies that the column information is to be gathered for all indexes that are defined on
tables that are contained in the table space.
When REORG TABLESPACE STATISTICS TABLE ALL INDEX ALL is specified, all the statistics for the table space, table, and indexes are collected at both the partition level and the aggregate level.
- (index-name)
- Specifies the indexes for which information is to be gathered. Enclose the index name in quotation marks if the name contains a blank.
- COLGROUP (column-name, ...)
- Indicates that the specified set of columns are treated as a group. This option enables inline
statistics to collect a cardinality value on the specified column group. Inline statistics ignores
COLGROUP when processing XML table spaces and indexes.
When you specify the COLGROUP keyword, inline statistics collects correlation statistics for the specified column group. If you want inline statistics to also collect distribution statistics, specify the FREQVAL option with COLGROUP.
(column-name, ...) specifies the names of the columns that are part of the column group.
When you define a column group on a single column, you can potentially improve RUNSTATS performance by specifying the STATCLGMEMSRT option or changing the value of the STATCLGSRT subsystem parameter. You can use these options to avoid column group sorts by external sort programs.
To specify more than one column group, repeat the COLGROUP option.
Restriction: The length of the COLGROUP value cannot exceed the maximum length of the COLVALUE column in the SYSIBM.SYSCOLDIST catalog table.Related information: - FREQVAL
- Indicates, when specified with the COLGROUP option, that frequency statistics are also to be
gathered for the specified group of columns. (COLGROUP indicates that cardinality statistics are
gathered.) One group of statistics is gathered for each column. You must specify COUNT integer with
COLGROUP FREQVAL. The utility ignores
FREQVAL MOST/LEAST/BOTH when processing XML table spaces .
- COUNT integer
- Indicates the number of frequently occurring values to be collected from the specified
column group. For example, COUNT 20 means that Db2 collects 20 frequently occurring values from the
column group. When the COUNT keyword is not specified, the utility
automatically determines the count value and collects the most frequently occurring values. Specifying a value of 1000 or more can increase the prepare time for some SQL statements.
Additionally, specifying a very large COUNT value will use a large amount of storage, which can
cause storage constraints during utility execution on partitioned objects with hundreds of
partitions.
- MOST
- Indicates that the utility is to collect the most frequently occurring values for the specified set of columns when COLGROUP is specified.
- BOTH
- Indicates that the utility is to collect the most and the least frequently occurring values for the specified set of columns when COLGROUP is specified.
- LEAST
- Indicates that the utility is to collect the least frequently occurring values for the specified set of columns when COLGROUP is specified.
- HISTOGRAM
- Indicates, when specified with the COLGROUP option, that histogram statistics are to be gathered
for the specified group of columns. Inline statistics ignore HISTOGRAM when processing XML table
spaces and
indexes.
Histogram statistics that you collect through inline statistics are not the same as histogram statistics that you collect through RUNSTATS. Histogram statistics that you collect with inline statistics are only rough estimates. To obtain more exact statistics, use RUNSTATS.
- NUMQUANTILES integer
- Indicates how many quantiles that the utility collects. The integer value must be greater than
or equal to one. The number of quantiles that you specify must never exceed the total number of
distinct values in the column or the column group. The maximum number of quantiles is 100.
When the NUMQUANTILES keyword is omitted, NUMQUANTILES takes a default value of 100. Based on the number of records in the table, the number of quantiles is readjusted down to an optimal number.
- KEYCARD
- The
KEYCARD option is deprecated in the utility control statement and no longer needs to be specified to
collect cardinality statistics on the values in the key columns of an index.
When the STATISTICS and INDEX options are specified, the utility always collects all of the distinct values in all of the 1 to n key column combinations in an index.n is the number of columns in the index. With the deprecation of KEYCARD, this functionality cannot be disabled.
The utility tolerates the specification of the KEYCARD option. The utility does not issue any messages if the control statement includes or excludes the KEYCARD option when STATISTICS and INDEX are specified.
- FREQVAL
- Controls the collection of frequent-value statistics.If you specify
FREQVAL, it must be followed by the NUMCOLS keyword.
- NUMCOLS
- Indicates the number of key columns that are to be concatenated together when collecting frequent values from the specified index. Specifying '3' means that frequent values are to be collected on the concatenation of the first three key columns. The default value is 1, which means that Db2 collects frequent values on the first key column of the index.
- COUNT
- Indicates the number of frequent values that are to be collected. Specifying '15' means that Db2 collects 15 frequent values from the specified key columns. If the COUNT keyword is not specified, Db2 collects statistics for an automatically determined number of frequently occurring values.
- HISTOGRAM
- Indicates that histogram statistics are requested for the specified index.
- NUMCOLS
- The number of key columns that are to be concatenated when collecting histogram statistics from the specified index.
- NUMQUANTILES
- The integer values that follows NUMQUANTILES indicates the number quantiles are requested. The integer value must be greater than or equal to 1.
Histogram statistics can be collected only on keys with the same order if the specified key columns for histogram statistics are of mixed order, a DSNU633I warning message is issued.
Related information: - REPORT
- Specifies whether a set of messages is to be generated to report the collected statistics.
- NO
- Indicates that the set of messages is not to be sent as output to SYSPRINT.
- YES
- Indicates that the set of messages is to be sent as output to SYSPRINT. The generated messages are dependent on the combination of keywords (such as TABLESPACE, INDEX, TABLE, and COLUMN) that are specified with the RUNSTATS utility. However, these messages are not dependent on the specification of the UPDATE option. REPORT YES always generates a report of SPACE and ACCESSPATH statistics.
- UPDATE
- Indicates whether the collected statistics are to be inserted into the catalog tables.
UPDATE also allows you to select statistics that are used for access path selection or statistics
that are used by database administrators.
- ALL
- Indicates that all collected statistics are to be updated in the catalog.
- ACCESSPATH
- Indicates that only the catalog table columns that provide statistics that are used for access path selection are to be updated.
- SPACE
- Indicates that only the catalog table columns that provide statistics to help database administrators assess the status of a particular table space or index are to be updated.
- NONE
- Indicates that no catalog tables are to be updated with the collected statistics. This option is valid only when REPORT YES is specified.
- STATCLGMEMSRT integer
- Specifies the amount of memory that the utility can use for sorting records when collecting
statistics on a single column that is defined with the COLGROUP option. Use STATCLGMEMSRT to
avoid column group sorts by an external sort program, which can negatively affect the
performance of statistics
collection.
integer specifies the number of megabytes of memory space that the utility can use for an in-memory sort. If the amount of space that is needed for the sort exceeds the integer value, the utility invokes a sort program. If you specify 0, the utility automatically invokes a sort program.
The amount of space that is needed for the column group sort depends on the following factors:
- The number of column groups for which the utility is collecting statistics
- The length of the single-column column group
- The number of distinct values in the column (cardinality)
The value of STATCLGMEMSRT overrides the value of the STATCLGSRT subsystem parameter.
Related information: - INVALIDATECACHE
- Indicates whether statements in the dynamic statement cache are invalidated as a result of the
inline statistics collection. This option does not prevent the utility from invalidating cached
statements for other reasons.
- YES
- Statements in the dynamic cache are invalidated for the objects that are specified in the job statement.
- NO
- Statements in the dynamic cache are not invalidated by the collection of inline statistics for the objects that are specified in the job statement. However, cached statements might be invalidated by the utility for reasons other than the inline statistics, such as when the utility resolves objects in restricted states or applies pending ALTER operations.
- HISTORY
- Specifies that all catalog table inserts or updates to the catalog history tables are to be
recorded.
The default value is the value that is specified in the STATISTICS HISTORY field on panel DSNTIP6.
- ALL
- Indicates that all collected statistics are to be updated in the catalog history tables.
- ACCESSPATH
- Indicates that only the catalog history table columns that provide statistics that are used for access path selection are to be updated.
- SPACE
- Indicates that only space-related catalog statistics are to be updated in catalog history tables.
- NONE
- Indicates that no catalog history tables are to be updated with the collected statistics.
- FORCEROLLUP
- Specifies whether aggregation or rollup of statistics is to take place when RUNSTATS is
executed even if statistics have not been gathered on some partitions; for example, partitions have
not had any data loaded. Aggregate statistics are used by the optimizer to select the best access
path.
- YES
- Indicates that forced aggregation or rollup processing is to be done, even though some partitions might not contain data.
- NO
- Indicates that aggregation or rollup is to be done only if data is available for all partitions.
- PUNCHDDN ddname
- Specifies the DD
statement for a data set that is to receive the LOAD utility control statements that are generated
by REORG TABLESPACE UNLOAD EXTERNAL or REORG TABLESPACE DISCARD FROM TABLE … WHEN.
ddname is the DD name.
The default value is SYSPUNCH.
PUNCHDDN is required if the limit key of the last partition of a partitioned table space has been reduced.
PUNCHDDN is not valid for LOB table spaces.
The PUNCHDDN keyword specifies either a DD name or a TEMPLATE name specification from a previous TEMPLATE control statement. If utility processing detects that the specified name is both a DD name in the current job step and a TEMPLATE name, the utility uses the DD name.
- DISCARDDN ddname
- Specifies the DD statement for
a discard data set, which contains copies of records that meet the DISCARD FROM TABLE … WHEN
specification.
ddname is the DD name.
If you omit the DISCARDDN option, the utility saves discarded records only if a SYSDISC DD statement is in the JCL input.
The default value is SYSDISC.
The DISCARDDN keyword specifies either a DD name or a TEMPLATE name specification from a previous TEMPLATE control statement. If utility processing detects that the specified name is both a DD name in the current job step and a TEMPLATE name, the utility uses the DD name.
- UNLDDN ddname
- Specifies the name of the unload data set.
ddname is the DD name of the unload data set.
The default value is SYSREC.
The UNLDDN keyword specifies either a DD name or a TEMPLATE name specification from a previous TEMPLATE control statement. If utility processing detects that the specified name is both a DD name in the current job step and a TEMPLATE name, the utility uses the DD name.
- SORTDEVT device-type
-
Specifies the device type for temporary data sets that are to be
dynamically allocated by the external sort program.
device-type is the device type. You can specify any disk device that is acceptable to the DYNALLOC parameter of the SORT or OPTION control statement for the sort program. Tape devices are not supported by the sort program.
If you omit SORTDEVT and require a sort of the index keys, you must provide the DD statements that the sort program needs for the temporary data sets.
SORTDEVT is ignored for the catalog and directory table spaces that are listed in Reorganizing the catalog and directory.
SORTDEVT cannot be used for LOB table spaces.
The utility does not allow a TEMPLATE specification to dynamically allocate sort work data sets. The SORTDEVT keyword controls dynamic allocation of these data sets.
- SORTNUM integer
- Specifies
the number of temporary data sets that are to be dynamically allocated for all sorts that REORG
performs.
integer is the number of temporary data sets that can range from 2 to 255.
If you omit SORTDEVT, SORTNUM is ignored. If you use SORTDEVT and omit SORTNUM, no value is passed to the sort program. The sort program uses its own SORTNUM default value.
You need at least two sort work data sets for each sort. The SORTNUM value applies to each sort invocation in the utility. For example, a total of 24 sort work data sets would be allocated for a job, if the following criteria is true:
- There are three indexes.
- There are no constraints limiting parallelism.
- SORTNUM is specified as 8.
Each sort work data set consumes both above the line and below the line virtual storage. Therefore, if you specify a value for SORTNUM that is too high, the utility might decrease the degree of parallelism due to virtual storage constraints, and possibly decrease the degree down to one, which would mean no parallelism.
Important: The SORTNUM keyword is ignored if the IGNSORTN subsystem parameter is set to YES.SORTNUM is ignored for the catalog and directory table spaces listed in Reorganizing the catalog and directory.
- PREFORMAT
- Specifies
that the remaining pages are to be preformatted up to the high-allocated RBA in the table space and
index spaces that are associated with the table space or partitions that are being reorganized. The
preformatting occurs after the data is loaded and the indexes are built.
PREFORMAT can operate on an entire table space and its index spaces, or on a partition of a partitioned table space and its corresponding partitioning index space. When AUX YES is specified or accepted as the default, the LOB table spaces and auxiliary indexes that are associated with the base partitions that are being reorganized are also preformatted at the end of the RELOAD phase.
PREFORMAT is ignored if you specify UNLOAD ONLY or UNLOAD EXTERNAL.
- ROWFORMAT
- Specifies the
output row format in the affected table space or partition. This
keyword has no effect on LOB, catalog, directory, XML table spaces, and Universal table spaces that
are participating in a CLONE relationship. Important: ROWFORMAT is deprecated in Db2 13 for z/OS, meaning that its use is discouraged. Although this keyword remains supported, support is likely to be removed eventually. See Deprecated function in Db2 13.
- BRF
- Specifies that the table space or partition that is being reorganized or replaced are to be converted to or remain in basic row format.
- RRF
- Specifies that the table space or partition that is being reorganized or replaced are to be converted to or remain in reordered row format.
- RBALRSN_CONVERSION
- Specifies the RBA or LRSN format of the target object after the
completion of the REORG utility. Important: RBALRSN_CONVERSION is deprecated, meaning that its use is discouraged. Although this keyword remains supported, support is likely to be removed eventually. The utility fails if BASIC is specified, or if NONE is specified for an object in the 6-byte format.
- EXTENDED
- Specifies that if an object is found in basic 6-byte format, it is converted to 10-byte extended
format.
EXTENDED is the default value.
- NONE
- Specifies that no conversion is performed.
The utility fails if RBALRSN_CONVERSION NONE is specified on a table space that is in basic 6-byte format.
If a CLONE relationship exists, the page set conversion cannot be performed. For clone relationships, you must drop the clone table, convert the base table to extended 10-byte format, and then re-create the clone table.
If AUX YES is also specified, the LOB table spaces and auxiliary indexes are also converted.
Indexes that are rebuilt during REORG TABLESPACE are converted to the same RBA or LRSN format as the indexed table space. REORG TABLESPACE at the PART level converts corresponding partitions of partitioned indexes. Non partitioned indexes are converted if SHRLEVEL CHANGE or REFERENCE is also specified, or if the entire table space is reorganized with SHRLEVEL NONE.
If the 6-byte RBA or LRSN limit has been reached, you might be unable to perform the first insert or load into an XML table space that has XML versioning and that was created with DEFINE NO and basic 6-byte page format. You can run REORG TABLESPACE on the DEFINE NO XML table space to convert its definition to extended 10-byte page format. The REORG must be done on the entire table space.
- DISCARD
- Specifies
that records that meet the specified WHEN conditions are to be discarded during REORG
TABLESPACE UNLOAD CONTINUE or UNLOAD PAUSE. If you specify DISCARDDN or a SYSDISC DD statement
in the JCL, discarded records are saved in the associated data set. Otherwise, the utility
discards records without saving them in a data set.
You can specify any SHRLEVEL option with DISCARD. However, if you specify SHRLEVEL CHANGE, modifications that are made during the reorganization to data rows that match the discard criteria are not permitted. In this case, REORG TABLESPACE terminates with an error.
If you specify DISCARD, rows are decompressed and edit routines are decoded. If you also specify DISCARD to a file, rows are decoded by field procedure, and the following columns are converted to Db2 external format:
- SMALLINT
- INTEGER
- FLOAT
- DECIMAL
- TIME
- TIMESTAMP
Otherwise, edit routines or field procedures are bypassed on both the UNLOAD and RELOAD phases for table spaces. Validation procedures are not invoked during either phase.
Restrictions: Do not specify DISCARD if any of the following conditions are true:- The REORG TABLESPACE statement includes the UNLOAD EXTERNAL or UNLOAD ONLY option.
- The table space to be reorganized is any of the following objects:
- A base table with XML columns
- An XML table space
- A base table with LOB columns if the records to be discarded are more than 32 KB and you want to save them in a data set.
- A system-period temporal table space
If you specify DISCARD and the table space to be reorganized contains a table that is involved in a referential integrity set, any affected referentially related objects are placed in CHECK-pending status. After the REORG operation, you need to run CHECK DATA on any of these objects that were placed in this restrictive status.
If you specify DISCARD on a table with LOB columns and the table space is a non-partitioned non-UTS table space, the LOB data is not deleted by REORG. If AUX YES is specified, warning message DSNU124I is returned; if AUX NO is specified or accepted as the default, no warning message is reported. In such cases, you need to identify orphaned LOB data by running CHECK DATA and manually delete it by using REPAIR LOCATE ROWID VERSION DELETE.
- NOCHECKPEND
- Specifies that when REORG discards records from a parent table in at least one referential integrity relationship, the utility does not set CHECK-pending status on the dependent table spaces. NOCHECKPEND applies only when REORG discards records from a parent table; otherwise, this option is ignored. NOCHECKPEND does not remove any CHECK-pending status that was set before the REORG operation.