SMS stands for System Managed Storage, short for Data Facility Storage Management Subsystem (DFSMS), which is an integral part of z/OS . SMS is composed of a set of components designed to make disk storage management easier and more efficient.

SMS has many benefits including simplification of data allocation, better performance and improved data availability management. It can be very useful in “Big Data” environments where it simplifies managing storage growth, storage utilization and storage availability.

Before DB2 10, SMS was an option, but with DB2 10 it is now mandatory. To use SMS in a DB2 environment requires planning and customization. So, despite its benefits, SMS is not always in use with DB2. SMS is required  for the DB2 catalog and directory, and it can be used to manage user tablespaces, DB2 logs and the BSDS as well.

The new catalog and directory data sets created during the migration to DB2 10 Conversion Mode require SMS with Extended Format and Extended Addressability enabled. During Enabling New Function Mode some of the DB2 catalog and directory objects are converted to Partition By Grow (PBG) tablespaces with DSSIZE 64G. Additionally, VSAM objects that are bigger than 4GB must  be SMS managed.

The minimal preparation needed the implement SMS for a DB2 subsystem is reviewing or implementing Data Classes and ACS routines definitions.

Extended Format and Extended Addressability are properties of a SMS Data Class. To define a SMS Data Class with the EXTENDED ADDRESSABILITY attribute you have to specify “EXT” in the DATA SET NAME TYPE field of the DATA SET CLASS DEFINE panel in ISMF (Integrated Storage Management Facility). Additionally you have to make sure that the AUTOMATIC CLASS SELECTION (ACS) routines associate the DB2 Catalog and Directory data sets with the adequate DATA CLASS at allocation time.

These changes can be applied dynamically  to the system. Existing datasets will not see the changes until they are redefined or converted. This can be achieved  by using a REORG utility. New datasets will get the SMS properties at definition time. It is very common to convert data to SMS using different, non DB2, techniques (i.e. ADRDSSU COPY or DUMP-RESTORE). It is even possible to convert the data in place by using the ADRDSSU’s CONVERTV command. However, if you are not using SMS with DB2 today, you are not required to convert the existing datasets to SMS before migrating.

A quick validation of your environment can be done with the use of the LISTC ENT(/) ALL command on a DB2 dataset, like in this example on the ISPF 3.4 panel:

Command ===>                                                  Scroll ===> CSR
Command - Enter "/" to select action                  Message           Volume
-------------------------------------------------------------------------------
listc ent(/) all DSNDBC.DSNDB01.DBD01.I0001.A001                        *VSAM*
         DB2ACAT.DSNDBD.DSNDB01.DBD01.I0001.A001                        DB2A16
***************************** End of Data Set list ****************************

You will receive a detailed report in your terminal; check the SMSDATA and ATTRIBUTES sections. This is an example of the properties of a non-SMS defined dataset: there is no DATACLASS definition, and EXTENDED ATTRIBUTE is missing.

SMSDATA
STORAGECLASS ---SCDBP001     MANAGEMENTCLASS---(NULL)
DATACLASS --------(NULL)     LBACKUP ---0000.000.0000
EATTR-------------(NULL)
BWO STATUS------00000000     BWO TIMESTAMP---00000 00:00:00.0
BWO---------------(NULL)

ATTRIBUTES
KEYLEN-----------------0     AVGLRECL---------------0     BUFSPACE------------8192     CISIZE--------------4096
RKP--------------------0     MAXLRECL---------------0     EXCPEXIT----------(NULL)     CI/CA----------------108
SHROPTNS(3,3)   RECOVERY     UNIQUE           NOERASE     LINEAR        NOWRITECHK     NOIMBED       NOREPLICAT
UNORDERED       TEMP-EXP     REUSE         NONSPANNED

A dataset definition that is SMS defined would look something like in this example (SMSDATA names may change):

SMSDATA
STORAGECLASS -----SCDB2A     MANAGEMENTCLASS---(NULL)
DATACLASS -------DB2ACAT     LBACKUP ---0000.000.0000
EATTR-------------(NULL)
BWO STATUS------00000000     BWO TIMESTAMP---00000 00:00:00.0
BWO---------------(NULL)

ATTRIBUTES
KEYLEN-----------------0     AVGLRECL---------------0     BUFSPACE------------8192     CISIZE--------------4096
RKP--------------------0     MAXLRECL---------------0     EXCPEXIT----------(NULL)     CI/CA----------------180
STRIPE-COUNT-----------1
SHROPTNS(3,3)   RECOVERY     UNIQUE           NOERASE     LINEAR        NOWRITECHK     UNORDERED          REUSE
NONSPANNED      EXTENDED     EXT-ADDR

ISMF is quite handy for exploring, and maintaining, SMS definitions. This example shows some details of the DATA CLASS used in this example:

DATA CLASS LIST
Command ===>                                                  Scroll ===> HALF
LINE       DATACLAS LAST TIME                      EXTENDED
OPERATOR   NAME     MODIFIED   DATA SET NAME TYPE  ADDRESSABILITY
---(1)----  --(2)--- --(25)---  -------(26)-------  -----(27)-----
DB2ACAT  09:32      EXTENDED REQUIRED   YES
----------  -------- ------  BOTTOM  OF  DATA  ------  --------  ----------

DB2 offers a lot of help as well: the sample job DSNTIJSS can be used to create an SMS environment. Even if it is targeted to systems that do not  already have an SMS implementation, it can be as a template also to update your existing SMS definitions. This example shows its step STEP065 used to display details of a DATA CLASS. This DATA CLASS would be fine for DB2 10.

ISPSTART CMD(ACBQBAD1 DISPLAY SCDS('DB2ASMS.DSNSMS.SCDS') DCNAME(DCDB2CAT) )

SCDS = 'DB2ASMS.DSNSMS.SCDS'
DCNAME = DCDB2CAT
-------------------------------------------------------
CDS Name  . . . : DB2ASMS.DSNSMS.SCDS
Data Class Name : DCDB2CAT
Description : DATA CLASS FOR DB2 CATALOG AND DIRECTORY DATA SETS
…
Data Set Name Type  . . .  : EXTENDED
If Extended . . . . . .  : REQUIRED
Extended Addressability  : YES
Record Access Bias  . .  : USER
Space Constraint Relief .  : NO
Reduce Space Up To (%)   :
Dynamic Volume Count  .  :
Compaction  . . . . . . .  :
Spanned / Nonspanned  . .  :
System Managed Buffer   .  :
System Determined Blocksize: NO

This one will not work:

CDS Name  . . . : SYS1.SCDS
Data Class Name : DB2ACAT
Description : CATALOG AND DIRECTORY FOR DB2 10
…
Data Set Name Type  . . .  : EXTENDED
If Extended . . . . . .  : REQUIRED
Extended Addressability  : NO
Record Access Bias  . .  : USER
Space Constraint Relief .  : NO
Reduce Space Up To (%)   :
Dynamic Volume Count  .  :
Compaction  . . . . . . .  :
Spanned / Nonspanned  . .  :
System Managed Buffer   .  :
System Determined Blocksize: NO

If you are Googling for “DB2 10 00C200EF” then you are probably installing a new DB2 10 or migrating an existing DB2 to version 10 and you already know that you are dealing with SMS issues by now. If you receive ABEND reason code 00C200EF, your DB2’s Catalog and Directory data sets are not in a DB2 10 compliant SMS environment.

DB2 will let you continue  until the Installation step #15 before failing. The sample job DSNTIJTC tailors the DB2 Catalog to version 10 Conversion Mode by invoking the CATMAINT utility and it will fail if you are not working on an adequate SMS environment:

********************************* TOP OF DATA ********************************
DSNU000I    008 17:39:54.34 DSNUGUTC - OUTPUT START FOR UTILITY, UTILID = RELODCAT
DSNU1044I   008 17:39:54.57 DSNUGTIS - PROCESSING SYSIN AS EBCDIC
DSNU050I    008 17:39:55.04 DSNUGUTC -  CATMAINT UPDATE
DSNT500I    008 17:39:55.47 DSNUGBAC - RESOURCE UNAVAILABLE
                                       REASON 00C200EF
                                       TYPE 00000220
                                       NAME DB2ACAT.DSNDBC.DSNDB01.DBD01.I0001.A001
DSNU017I    008 17:39:55.48 DSNUGBAC - UTILITY DATA BASE SERVICES MEMORY EXECUTION ABENDED, REASON=X'00E4010A' CAUSE=X'00C200EF'
******************************** BOTTOM OF DATA ********************************

The DB2 MASTER address space provides you this feedback as well:

20.09.18 STC02063  DSNT500I  -DB2A DSNB1OST RESOURCE UNAVAILABLE  156
156                        REASON 00C200EF
156                        TYPE 00000220
156                        NAME DB2ACAT.DSNDBC.DSNDB01.DBD01.I0001.A001

Defining the correct SMS infrastructure for your DB2 environment may not be a trivial task, and it may involve planning and moving data. You should verify your SMS definitions with enough anticipation to avoid a delayed migration. The DB2 10 SMS requirements can be implemented well in advance and, if possible, take the opportunity to review and to implement best practices in DB2 storage.