UPDATE POOL command
Use the UPDATE POOL command to dynamically add, update, or delete OSAM or VSAM subpools, or to specify values associated with storage used by the Fast Path 64-bit buffer manager.
Subsections:
Environment
The following table lists the environments (DB/DC, DBCTL, and DCCTL) in which you can use the commands and keywords.
Command / Keywords | DB/DC | DBCTL | DCCTL |
---|---|---|---|
UPDATE POOL | X | X | X |
MEMBER | X | X | |
SECTION | X | X | |
SET | X | X | X |
TYPE | X | X | X |
Restriction: The dynamic database buffer pools function
is not supported in a DBCTL warm standby environment.
|
Syntax
>>-+-UPDATE-+--POOL---------------------------------------------> '-UPD----' >--TYPE-+-(DBAS)-+-------------+-SECTION(-+-OSAMxxx---------+-)-+->< | '-MEMBER(xxx)-' +-VSAMxxx---------+ | | '-OSAMxxx,VSAMxxx-' | '-(FPBP64)-+-------------------+------------------------' '-SET(LIMIT(xxxxx))-'
Keywords
The following keywords are valid for the UPDATE POOL command:
- TYPE()
- This required keyword specifies which type of UPDATE
POOL command to issue.
- DBAS
- This option specifies that the command dynamically adds, updates,
or deletes OSAM or VSAM subpools. TYPE(DBAS) is mutually exclusive
with other options on the TYPE() keyword. The command is rejected
with a syntax error if multiple options are specified.
The UPDATE POOL TYPE(DBAS) command is not valid for DCCTL environments.
- FPBP64
- This option specifies that the command sets or changes values for storage used by the Fast Path 64-bit buffer manager. TYPE(FPBP64) is mutually exclusive with other options on the TYPE() keyword. The command is rejected with a syntax error if multiple options are specified.
- SET()
- Specifies the attribute values to be changed. This keyword is
valid only if TYPE(FPBP64) is specified.
- LIMIT
- Specifies the maximum amount of 64-bit storage used by the Fast Path 64-bit buffer manager.
- xxxxx
- You can specify the value in bytes, kilobytes, or megabytes, as
follows:
- xxxxx - Value in bytes. The maximum value is 2,147,483,647 bytes.
- xxxxxK - Value in kilobytes. The maximum value is 2,097,151 KB.
- xxxxxM - Value in megabytes. The maximum value is 2,047 MB.
The valid range is between 2GB-1 megabytes and the initial size of the buffer pool at IMS™ startup.
- MEMBER(xxx)
- This keyword is valid only if TYPE(DBAS) is specified. It is optional.
The xxx on the MEMBER keyword specifies a 1- to
3-alphanumeric character value that represents the suffix to a DFSDFxxx
member name. The identified DFSDFxxx member is read in and parsed
for OSAM and VSAM subpool definitions. If the keyword is not specified,
the DFSDFxxx member specified by the DBA on system initialization
is used as the default. The DFSDFxxx member specified on system initialization
can be determined from message DFS1929I on the system console or log.
The command fails if the MEMBER keyword is specified with an invalid xxx value
or if the DFSDFxxx member is not found.Note: This keyword is optional and by default the command will always refer to the DFSDFxxx member specified on system initialization. Normally the DFSDFxxx member specified on system initialization should be the only one available. The purpose of this keyword is to allow the capability to have the command point to an alternate DFSDFxxx member (different from the system default) for test purposes. In other cases, the MEMBER keyword is expected to be omitted.
- SECTION()
- This keyword is valid only if TYPE(DBAS) is specified. It is required
if TYPE(DBAS) is specified. This keyword specifies the section names
in the DFSDFxxx member to read in for subpool definitions. It must
be followed with a valid section name. One or both of the following
section name types can be specified with this keyword:
- OSAMxxx
- Specifies the OSAM section in the DFSDFxxx member to read and process. The xxx value is the 1- to 3-alphanumeric character suffix of the OSAM section name. The indicated OSAM section must exist in the DFSDFxxx member and must contain valid OSAM subpool definition statements. Only one OSAM section name can be specified on the command.
- VSAMxxx
- Specifies the VSAM section in the DFSDFxxx member to read and process. The xxx value is the 1- to 3-alphanumeric character suffix of the VSAM section name. The indicated VSAM section must exist in the DFSDFxxx member and must contain valid VSAM subpool definition statements. Only one VSAM section name can be specified on the command.
If you are reassigning the DBD association (for example, changing a database data set association from one subpool to another subpool), you must stop and restart the database. The reason for the stop and restart is that the subpool assignment is done during data set open time.
Usage notes for UPDATE POOL TYPE(FPBP64)
The value that can be changed by the UPDATE POOL TYPE(FPBP64) SET(LIMIT(xxxxx)) command is not recoverable.
Enter the UPDATE POOL TYPE(FPBP64) SET(LIMIT(xxxxx)) command after an IMS restart, if needed. Because this command updates the value set by FPBP64M in the DFSDFxxx member, you might want to update FPBP64M with a new value before IMS cold restart.
Usage notes for UPDATE POOL TYPE(DBAS)
Determination of success, failure, or partial success of the command
There can be multiple change requests in the OSAMxxx or VSAMxxx sections of the DFSDFxxx member of the IMS PROCLIB data set. The UPDATE POOL TYPE(DBAS) command processes the change requests serially. When the UPDATE POOL TYPE(DBAS) command is completed, the results can be success, failure, or partial success.
The UPDATE POOL TYPE(DBAS) command cannot be canceled or aborted after it is issued.
- If it completes before the TSO SPOC timeout occurs, the results are shown in the TSO SPOC with completion codes next to each requested change indicating success, failure, or partial success of the request.
- If it completes after the TSO SPOC timeout occurs, the command
continues to run in the background. The TSO SPOC is no longer available
to display the completion codes for each change requested by the command.
A series of targeted QUERY POOL TYPE(DBAS) commands can be issued to determine the success or failure of the requested changes.
You can also use the QUERY POOL TYPE(DBAS) command after an emergency restart to determine the success or failure of the requested changes.
It is also possible to use the Operations Manager (OM) audit trail to determine which changes succeed, which changes fail, and which changes succeed partially. The token rqsttkn1 can be used to associate the commands in the OM audit trail to the command responses.
Command completion if storage is unavailable
There are circumstances where the storage requested by the UPDATE POOL TYPE(DBAS) command cannot be satisfied. Because IMS cannot cancel or abort the command, it attempts to find the next best solution to satisfy the command, which means the command might result in less storage being allocated for the requested subpool change.
When the storage requested by the UPDATE POOL TYPE(DBAS) command cannot be satisfied, both OSAM and VSAM make a sequence of attempts to find a smaller amount of storage.
If a reduced amount of buffer pool storage is allocated as a result of the UPDATE POOL TYPE(DBAS) command, an X'EC' completion code is displayed to indicate the condition.
The minimum number of buffers for a VSAM buffer pool is 3. If a VSAM pool cannot allocate this minimum number of buffers, the databases that are using this pool are left without a buffer assignment. An internal /DBRECOVERY command is issued for all these databases. The UPD POOL command must be issued again to create the buffer pools. A subsequent /STA DB command must be issued to reestablish the buffer pool connection.
Effect of long-running BMPs on the command
For VSAM, a long-running batch message processing (BMP) program that does not take any checkpoint can affect the ability of the command to complete, since the command cannot be canceled or aborted. Either the subpool is eventually freed up by the BMP and the command can complete, or the subpool is not freed up by the BMP and the command waits indefinitely for the subpool to become available for the change. This effect applies to any subpool in the same VSAM local shared resource pool (that is, under the same POOLID statement).
OSAM and VSAM have different mechanisms for freeing up the target subpool. In general, OSAM waits for the target subpool to become unowned, while VSAM waits for DL/I activity for the target subpool to reach commit points. Since there is no timeout for this command, all partition specification tables (PSTs) with subpools affected by this command wait until the command completes.
Spreading database data sets across many subpools tends to lessen the impact of a change to any one of these subpools.
Buffer pool statistics and database data set reassignment
Buffer pool statistics are handled differently for VSAM and for OSAM following an UPDATE POOL TYPE(DBAS) command. For VSAM, the buffer pool statistics are reset and the old statistics are not carried over. It is advisable to issue a QUERY POOL command for the VSAM buffer pool statistics before issuing the command. The OSAM statistics are carried over and are not reset with the command.
When a database data set is reassigned from one buffer pool to a different buffer pool, the database data set must be closed and reopened. For OSAM, the closing and reopening of the database data set must be done explicitly. In other words, it is not performed as part of the command. For VSAM, the database data set must also be closed and reopened. However, if there is a corresponding change to the target buffer pool along with the reassignment of the database data set (for example, an increase in buffers), then the closing and opening of the database data set is done implicitly by the command.
Output fields
- Short label
- Contains the short label generated in the XML output.
- Long label
- Contains the column heading for the output field in the formatted output.
- SHOW parameter
- Identifies the parameter on the SHOW keyword that caused the field to be generated. N/A appears for output fields that are always returned. Error appears for output fields that are returned only in case of an error.
- Meaning
- Provides a brief description of the output field.
Short label | Long label | SHOW parameter | Meaning |
---|---|---|---|
BUFS | BufSize | Error | Buffer size |
CC | CC | N/A | Completion code. The completion code indicates whether IMS was able to process the command for the specified resource. The completion code is always returned. |
CCTXT | CCText | Error | Completion code text that briefly explains the nonzero completion code. This field is returned only for an error completion code. |
ERRT | ErrorText | Error | Error text with diagnostic information. Error text can be returned for a nonzero completion code and contains information that further explains the completion code. |
ID | PoolId | Error | OSAM subpool or VSAM shared pool ID |
MBR | MbrName | N/A | The IMSplex member that built the output line. The IMS identifier of the IMS for which the database information is displayed. The IMS identifier is always returned. |
SEC | Section | Error | Section of the DFSDFxxx member that is processed |
STMT | Stmt | Error | OSAM or VSAM definition statement |
- Output headers for a successful UPDATE POOL TYPE(DBAS) command:
Section MbrName CC -------- ------- --
- Output headers for the UPDATE POOL TYPE(DBAS) command
with errors:
Section MbrName CC CCText Stmt BufSize PooId ErrorText -------- ------- -- ------ ------ ------ ----- ---------
Return, reason, and completion codes
The following table includes the return and reason codes and a brief explanation of the codes. The return or reason code returned for the command might also indicate an error from a CSL request.
Return code | Reason code | Meaning |
---|---|---|
X'00000000' | X'00000000' | The command completed successfully. The command output contains a line for each resource, accompanied by its completion code. |
X'00000008' | X'00002004' | Invalid command keyword or invalid command keyword combination |
X'00000008' | X'00002014' | Invalid character in the member name. |
X'00000008' | X'00002040' | Invalid option was specified. |
X'00000008' | X'00002122' | Invalid PDS member name. The specified DFSDFxxx member was not found. |
X'00000008' | X'0000212B' | Invalid section name. |
X'00000008' | X'0000212C' | There was a read error on the PDS member. |
X'0000000C' | X'00003000' | At least one request was successful. |
X'0000000C' | X'00003004' | No requests were successful. |
X'00000010' | X'00004000' | IMS restart in progress. |
X'00000010' | X'0000400C' | The command failed, because it is not valid on an XRF alternate IMS. |
X'00000010' | X'00004014' | The command failed, because it is not valid on an RSR tracking IMS. |
X'00000010' | X'00004016' | The command failed, because it is not valid in a DCCTL environment. |
X'00000010' | X'0000401C' | The command failed, because it is not valid on the FDR region. |
X'00000010' | X'00004024' | The command failed, because FP=N is in the startup parameter. |
X'00000010' | X'00004404' | The command failed, because FPBP64=N is in the startup parameter. |
X'00000010' | X'0000440C' | A smaller storage usage limit than what is currently in use was specified on the command. The storage usage limit is not changed. |
X'00000014' | X'00005000' | IMODULE GETSTOR error. |
X'00000014' | X'00005004' | DFSOCMD0 GETBUF error. |
X'00000014' | X'00005FFF' | Unexpected internal error while initializing environment. |
Errors unique to the processing of this command are returned as completion codes. The following table includes an explanation of the completion codes.
Completion code | Completion code text | Meaning |
---|---|---|
0 | The command completed successfully. | |
8 | COMMAND COMPLETE FOR SOME | The command completed successfully. Duplicate parameters are ignored. |
B | A smaller storage usage limit than what is currently in use was specified on the UPDATE POOL TYPE(FPBP64) SET(LIMIT(xxxxx)) command. The storage usage limit is not changed. | |
10 | NO RESOURCES FOUND | The specified resource (subpool, DBD, or DCB) is not found or not defined. |
11 | DUPLICATE RESOURCE ALREADY EXISTS | Duplicate IOBF or POOLID statements specified. The duplicates are ignored. |
4A | IN USE | The specified subpool is currently in use. |
60 | GETMAIN STORAGE ERROR | Failed on a GETMAIN call for the subpool ID table. |
64 | GETSTOR STORAGE ERROR | Failed on a GETSTOR call for buffers, subpool, or coupling facility. |
B2 | IMS STATE ERROR | IMS is not in a state to perform an IMS shutdown. |
EA | DYNAMIC BUFFER POOL FAILURE | The hiperspace specified for the buffer size is
less than 4 KB. The DSNUM value on the DBD statement is invalid. This
resulted in one of the following:
|
EB | RESOURCE UNABLE TO BE QUIESCED | Activity against a resource was unable to be quiesced by the command. The resource can be a buffer or a subpool. |
EC | REDUCED BUFFER ALLOCATION | Unable to allocate the number of buffers specified. A reduced number of buffers is used. |
ED | MINIMUM BUFFER ALLOCATION | Unable to allocate the number of buffers specified. The minimum number of buffers is used. |
1C0 | POOLID ERROR IN DFSDF MEMBER | Unable to process the POOLID statement in the DFSDFxxx member of the IMS PROCLIB data set. Refer to the ErrorText column in the command output for further information on the error. |
1C1 | DBD ERROR IN DFSDF MEMBER | Unable to process the DBD statement in the DFSDFxxx member of the IMS PROCLIB data set. Refer to the ErrorText column in the command output for further information on the error. |
Examples
The following are examples of the UPDATE POOL command:
Example 1 for UPDATE POOL command
UPD POOL TYPE(FPBP64) SET(LIMIT(1000M))
Pool Type MbrName CC
FPBP64 SYS3 0
CMD(UPD POOL TYPE(FPBP64) SET(LIMIT(1000M)))
<imsout>
<ctl>
<omname>OM1OM </omname>
<omvsn>1.4.0</omvsn>
<xmlvsn>20 </xmlvsn>
<statime>2008.318 21:54:49.340430</statime>
<stotime>2008.318 21:54:49.340724</stotime>
<staseq>C34A9721FEE0EC72</staseq>
<stoseq>C34A9721FEF34C72</stoseq>
<rqsttkn1>USRT004 10135449</rqsttkn1>
<rc>00000000</rc>
<rsn>00000000</rsn>
</ctl>
<cmd>
<master>SYS3 </master>
<userid>USRT004 </userid>
<verb>UPD </verb>
<kwd>POOL </kwd>
<input>UPD POOL TYPE(FPBP64) SET(LIMIT(1000M)) </input>
</cmd>
<cmdrsphdr>
<hdr slbl="BTYP" llbl="Pool Type" scope="LCL" sort="a" key="1"
scroll="no" len="8" dtype="CHAR" align="left" />
<hdr slbl="MBR" llbl="MbrName" scope="LCL" sort="a" key="1"
scroll="yes" len="8" dtype="CHAR" align="left" />
<hdr slbl="CC" llbl="CC" scope="LCL" sort="n" key="0" scroll="no"
len="4" dtype="CHAR" align="right" />
<hdr slbl="CCTXT" llbl="CCText" scope="LCL" sort="n" key="0"
scroll="yes" len="*" dtype="CHAR" skipb="yes" align="left" />
</cmdrsphdr>
<cmdrspdata>
<rsp>btyp(FPBP64) MBR(SYS3 ) CC( 0)</rsp>
</cmdrspdata>
</imsout>
Explanation: The buffer usage limit for the Fast Path 64-bit buffer manager was changed to 1000M (1 GB) and the command ended successfully.
Example 2 for UPDATE POOL command
UPDATE POOL TYPE(DBAS) MEMBER(001) SECTION(OSAM001,VSAMTUE)
Section MbrName CC
OSAM001 IMS1 0
VSAMTUE IMS1 0
Explanation: This is an example of a successful invocation of the UPDATE POOL command to dynamically reconfigure OSAM and VSAM subpools using the OSAM001 and VSAMTUE sections of the DFSDFxxx member.
Example 3 for UPDATE POOL command
UPDATE POOL TYPE(DBAS) MEMBER(001) SECTION(OSAM001,VSAMTUE)
Section MbrName CC CCText Stmt BufSize PoolID ErrorTxt
OSAM001 IMS1 8 COMMAND COMPLETE FOR SOME
OSAM001 IMS1 11 RESOURCE ALREADY EXISTS IOBF 1024 OSM2 PARSED ENTRY INV
VSAMTUE IMS1 0
Explanation: This is an example of a partially successful invocation of the UPDATE POOL command to dynamically reconfigure OSAM and VSAM subpools using the OSAM001 and VSAMTUE sections of the DFSDFxxx member. Some (but not all) of the definitions within the OSAM001 section were successfully implemented.
Example 4 for UPDATE POOL command
UPDATE POOL TYPE(DBAS) MEMBER(001) SECTION(OSAM123,VSAM123)
Section MbrName CC CCText Stmt BufSize PoolID ErrorTxt
OSAM123 IMS1 0
VSAM123 IMS1 C COMMAND COMPLETE FOR NONE
VSAM123 IMS1 1C0 POOLID ERROR IN DFSDF MEMBER POOLID 4096 VB10 DLET POOL 0 INV
VSAM123 IMS1 1C0 POOLID ERROR IN DFSDF MEMBER POOLID 8192 VB10 DLET POOL 0 INV
VSAM123 IMS1 1C0 POOLID ERROR IN DFSDF MEMBER POOLID 1024 VB11 DLET POOL 0 INV
VSAM123 IMS1 1C0 POOLID ERROR IN DFSDF MEMBER POOLID 8192 VB11 DLET POOL 0 INV
VSAM123 IMS1 1C0 POOLID ERROR IN DFSDF MEMBER POOLID 2048 VB12 DLET POOL 0 INV
VSAM123 IMS1 1C0 POOLID ERROR IN DFSDF MEMBER POOLID 8192 VB12 DLET POOL 0 INV
VSAM123 IMS1 1C0 POOLID ERROR IN DFSDF MEMBER POOLID 16384 VB12 DLET POOL 0 INV
VSAM123 IMS1 1C0 POOLID ERROR IN DFSDF MEMBER POOLID 32768 VB12 DLET POOL 0 INV
Explanation: This is an example of a failed invocation of the UPDATE POOL command to dynamically reconfigure OSAM and VSAM subpools using the OSAM123 and VSAM123 sections of the DFSDFxxx member. None of the definitions within the VSAM123 section were successfully implemented.
Example 5 for UPDATE POOL command
UPDATE POOL TYPE(DBAS) MEMBER(001) SECTION(OSAMFEB,VSAMTUE)
Log for . . : UPDATE POOL TYPE(DBAS) MEMBER(001) SECTION(OSAMFEB,VSAMFEB)
IMSplex . . . . . : PLEX1
Routing . . . . . :
Start time. . . . : 2011.013 22:10:26.70
Stop time . . . . : 2011.013 22:10:26.78
Return code . . . : 0200000C
Reason code . . . : 00003004
Reason text . . . : No requests were successful.
Command master. . : IMS1
Return Reason
MbrName Code Code Reason text
-------- -------- -------- --------------
IMS1 00000008 0000212B Invalid section
Explanation: This is an example of a failed invocation of the UPDATE POOL command to dynamically reconfigure OSAM and VSAM subpools using the OSAM123 and VSAMTUE sections of the DFSDFxxx member. A failure occurred because invalid section names were specified when issuing the UPDATE POOL command.
Example 6 for UPDATE POOL command
UPDATE POOL TYPE(DBAS) MEMBER(001) SECTION(OSAM001,VSAMTUE)
Log for . . : UPDATE POOL TYPE(DBAS) MEMBER(001) SECTION(OSAM001,VSAMTUE)
IMSplex . . . . . : PLEX1
Routing . . . . . :
Start time. . . . : 2011.013 22:16:35.12
Stop time . . . . : 2011.013 22:16:35.36
Return code . . . : 0200000C
Reason code . . . : 00003008
Reason text . . . : None of the clients were successful.
Command master. . : IMS1
Return Reason
MbrName Code Code Reason text
-------- -------- -------- --------------
IMS1 00000008 0000212C PDS member read error
MbrName Messages
-------- -----------------------
IMS1 BPE0003E AN ERROR OCCURRED PARSING PROCLIB MEMBER DFSDF001
IMS1 BPE0003E AT LINE 29, CHARACTER 14
IMS1 BPE0003E FAILING TEXT: "VXRBF=(2048,9,D)"
IMS1 BPE0003E INVALID KEYWORD DETECTED
Explanation: This is an example of a failed invocation of the UPDATE POOL command to dynamically reconfigure OSAM and VSAM subpools using the OSAM001 and VSAMTUE sections of the DFSDFxxx member. A parsing error occurred while reading the DFSDFxxx member.
Example 7 for UPDATE POOL command
UPDATE POOL TYPE(DBAS) SECTION(OSAM123) MEMBER(001)
Log for . . : UPDATE POOL TYPE(DBAS) SECTION(OSAM123) MEMBER(0...
IMSplex . . . . . : PLEX1
Routing . . . . . :
Start time. . . . : 2011.014 10:28:04.48
Stop time . . . . : 2011.014 10:28:59.24
Return code . . . : 00000000
Reason code . . . : 00000000
Reason text . . . :
Command master. . : IMS1
MbrName Messages
-------- -----------------------
IMS1 DFS3127I WRITE ERROR OCCURRED ON THE RESTART DATA SET
Explanation: This is an example of a failed invocation of the UPDATE POOL command to dynamically reconfigure OSAM subpools using the OSAM123 section of the DFSDFxxx member. A write error occurred on the restart data set (RDS).
Example 8 for UPDATE POOL command
UPDATE POOL TYPE(DBAS) SECTION(VSAM003)
Section MbrName CC CCText Stmt BufSize PoolId ErrorText
-------- ------- -- ----------- ------ ------- ------ ---------
VSAM003 IMS1 8 COMMAND COMPLETE FOR SOME
VSAM003 IMS1 8 COMMAND COMPLETE FOR SOME VSRBF 1024 VSM2 DUP
Explanation: This is an example of a successful invocation of the UPDATE POOL command to dynamically reconfigure VSAM subpools using the VSAM003 section of the DFSDFxxx member. IMS received condition code 8 for one of the POOLID statements for VSM2, because a duplicate VSRBF was specified under the same POOLID. The rest of the statements are still processed. Condition code 8 is treated as a warning message in this situation.
Example 9 for UPDATE POOL command
<SECTION=OSAM001>
IOBF=(512,100,N,N)
IOBF=(1024,1000,N,Z,OSM1,Y)
IOBF=(2048,5000,Y,Y,OSM2,A)
IOBF=(4096,5000,N,Y,OSM3,N)
IOBF=(32K,32767,N,N,OSM9,N)
UPDATE POOL TYPE(DBAS) SECTION(OSAM001) MEMBER(XYZ)
Log for . . : UPDATE POOL TYPE(DBAS) SECTION(OSAM001) MEMBER(XYZ) More: >
IMSplex . . . . . : PLEX1
Routing . . . . . :
Start time. . . . : 2009.117 10:24:25.06
Stop time . . . . : 2009.117 10:24:25.07
Return code . . . : 02000008
Reason code . . . : 00002004
Reason text . . . : Invalid command keyword or invalid command keyword combination
Command master. . :
MbrName Messages
-------- -----------------------
IMS1 BPE0003E AN ERROR OCCURRED PARSING PROCLIB MEMBER DFSDFXYZ
IMS1 BPE0003E AT LINE 22, CHARACTER 18
IMS1 BPE0003E FAILING TEXT: "Z,OSM1,Y) "
IMS1 BPE0003E UNKNOWN KEYWORD VALUE DETECTED
Explanation: In this example, the OSAM001 section in the DFSDFXYZ member is parsed on invocation of the UPDATE POOL command. An invalid option of “Z” is specified for the second IOBF statement in the DFSDFXYZ member.