Fast and Effective Db2 for z/OS Test Data Management with BCV5

By Craig Mullins


Perhaps the most significant requirement for coding successful Db2 application programs is having a reasonable set
of test data to use during the development process. Without data, there is no way to test your code to make sure
it runs. But there are many issues that must be overcome in order to have a useful test data management process.
Today we will talk about this along with a key enabling component of such a process, BCV5 from UBS Hainer.
One of the first things that organizations try is to make a copy of the production for testing. But this is easier said
than done. You cannot just stop your production databases to make a copy of them for testing. But you still want a
fast, consistent copy of the data. Consistent in terms of the units of work and referential integrity. And maybe you
just want some of the data, not all of it. And we haven’t even talked about the potential regulatory concerns if
you are copying personally identifiable information.
When you initially go to build your test data environment, the tools at your disposal are likely the utilities that
came with Db2. This means that you will start with solutions like unloading and loading the data. But the LOAD and
UNLOAD utilities are not known for their speed, so this can take a long time to accomplish – both for the initial
creation and for any subsequent refreshing of the test data. This is important because test data must be refreshed
on a regular basis as application testing is performed. Without the capability to refresh it is impossible to compare
test runs and develop your programs consistently.
So, what should you do? Well, the first step is to create a consistent test bed either from scratch or, more likely,
from production. And you want to do this efficiently and without interrupting production processing. This core bed
of test data can be manipulated to reduce its size and even to satisfy regulatory requirements. With a core set of
data you can then develop procedures to copy this data out to the various development and QA environments. To
succeed, you need a fast method of populating multiple environments, on demand, from the approved test bed.
A key to achieving such an environment is an efficient Db2 data copying tool like BCV5, which can be used to copy
and refresh Db2 data very rapidly. BCV5 copies Db2 table spaces and indexes within the same Db2 subsystem or
even between different Db2 subsystems much faster than unloading and reloading the data. Using BCV5 you can
deliver speedy copies because it works directly at the VSAM level. As BCV5 copies at the VSAM level it can replace
Db2-internal OBIDs with the correct target values. This is significantly more efficient than unloading and loading
one row at a time. And it takes away the complicated user-managed OBIDXLAT capability of DSN1COPY.
If you have used DSN1COPY in the past you know that it can be difficult to use; this is not the case with BCV5. With
DSN1COPY you must specify a series of parameters that describe the input, such as the PIECESIZE, NUMPARTS,
DSSIZE, whether it is a LOB table space or not, and more. BCV5 determines all required values automatically,
making things a lot easier and less prone to failure.
And if you use LOB and XML data, and these days who doesn’t, BCV5 handles this data like any other, copying it at
the same rate as regular table spaces.
BCV5 copies everything, not just the physical Db2 data, but also all of the associated structures including
databases, table spaces, tables, indexes, and even views, triggers, aliases, synonyms, constraints, and so on! And
you don’t need to worry if objects already exist; BCV5 will check for compatibility and keep the environment
accurate. And all of the functionality you’d expect is there, such as the ability to rename objects between
environments and to run the copy job either manually or via a job scheduler. Furthermore, you can interact with
BCV5 using either an ISPF or a GUI interface.
Using BCV5, you can even use image copies as the source for your test data. BCV5 can use the most recent image
copy, or an older image copy chosen by generation number, timestamp, or data set name pattern. BCV5 can
automatically identify the correct image copy data sets and use them as the source for the data to be copied. You
can even use BCV5 to refresh indexes using image copies of indexes if they exist.
Keeping Db2 statistics accurate can be another vexing test data issue. Generally speaking, you want to keep
statistics up-to-date, but in test you probably want test statistics to mirror production. BCV5 can copy both
RUNSTATS and RTS (Real Time Stats) directly from the source environment into the target. There is no need for a
separate RUNSTATS job or to do a REORG in order to collect an RTS baseline.
And let’s not forget the most impressive aspect of BCV5, its speed and efficiency. BCV5 runs tasks in parallel with
automatic workload balancing to further improve the performance of copying Db2 data. This efficiency comes in
three forms: less CPU consumption, less elapsed run time, and a reduction in the management steps which can be
automated instead of being done manually.
A case in point, a large automobile manufacturer uses BCV5 to manage its large Db2 test data environment
consisting of over 11,000 table space partitions, another 11,000+ index partitions, and 20 LOBs. Before deploying
BCV5 the company required hundreds of jobs that took almost 2 weeks to create, configure, and execute. After
automating the process with BCV5, the entire process requires only 6 jobs that can refresh the test environments
in 91 minutes. Impressive, no?
UBS Hainer markets other tools that augment and assist BCV5. For example, its In-Flight Copy add-on can enable
BCV5 to get up-to-the-moment accurate data by gathering information from the Db2 log to make consistent copies
of table spaces and indexes. It also offers a Reduction and Masking Data add-on to assist with enforcing privacy
regulations in your test data. And BCV4 can be used to duplicate an entire Db2 subsystem.
The bottom line is that setting up test data can be difficult and time-consuming. Without a well-thought-out
approach to gathering and refreshing test beds, application developers and quality assurance personnel will run
into issues as they try to test Db2 code with corrupted or improper data. If your organization has issues with
effectively managing test data for your Db2 for z/OS developers, take a look at UBS Hainer’s BCV5 solution for
quickly copying and refreshing Db2 data.