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.