Here are a few guidelines for you to consider as you work to implement and optimize your usage of IBM's DB2 Connect gateway...
Consider
DB2 Connect PE for Single Workstation Solutions DB2 Connect PE can be a good choice for two-tier client/server
applications running on desktop workstations that need to access data from mainframe DB2 databases. However, the personal edition is not suitable for
deployment on multi-user systems and application servers.
If you have two people who
share a workstation, DB2 Connect PE is a viable solution, because each person uses the workstation individually. That is, they cannot both use the
workstation at the same time. Only one connection is required at any time for
both of these users so only one license of DB2 Connect PE is required.
On the other hand, if you set
up five workstations as dumb terminals making connections to a DB2 for z/OS
server, you would need ten licenses of DB2 Connect PE. Of course, you could use
DB2 Connect EE instead, too. Or setting up a client with a Type 4 driver can be
sufficient.
Consider
DB2 Connect EE for Multi-User Solutions DB2
Connect EE is the required solution when a middle tier connectivity server is
needed. DB2 Connect EE is suitable for environments where the number of
concurrent users can be easily determined. However, DB2 Connect UE and ASE are
preferable to EE for web-based applications and multi-tier client/server
applications where the number of concurrent users is difficult, or impossible,
to determine. This is so mostly due to the cost of licensing.
Again, using Type 4 drivers
without a DB2 Connect gateway can be a sufficient solution for many
organizations.
Setting
Up the DDF for z/OS You must set up the DDF as an
application server to connect distributed applications to DB2 for z/OS. There
are two ways of doing this:
- INSERT the LUNAME of the remote system into the SYSIBM.LUNAMES table.
- INSERT the LUNAME, SYSMODENAME, USERSECURITY, ENCRYPTPSWDS, MODESELECT, and USERNAMES values into the SYSIBM.LUNAMES table.
Be sure to perform a DDF
update to the Boot Strap Data (BSDS) after making one of these changed. Because
DDF will try to connect to VTAM you must ensure that VTAM is active when the
DDF starts.
Configure
Distributed Threads Use the DSNZPARM CMTSTAT to control the behavior of
distributed threads. CMTSTAT specifies whether a DDF thread is made active or inactive after
it successfully commits or rolls back and holds no cursors. Consider setting CMTSTAT to INACTIVE because inactive connections
consume less storage. A thread can become inactive only if it holds no cursors,
has no temporary tables defined, and executes no statements from the dynamic
statement cache.
If you specify ACTIVE, the thread remains active.
Although this can improve performance it consumes system resources. If your
installation supports a large number of connections, specify INACTIVE.
DB2 supports two different
types of inactive threads:
- An inactive DBAT, previously called a type 1 inactive thread, has the same characteristics as inactive threads prior to DB2 V8. This type of thread remains associated with the connections, but DB2 minimizes the thread’s storage use as much as possible.
- An inactive connection, previously called a type 2 inactive thread,
uses less storage than an inactive DBAT. In this case, the connections are
disassociated from the thread. The thread can be pooled and reused for other
connections, new or inactive. This provides better resource utilization because
there are typically a small number of threads that can be used to service a
large number of connections.
Although inactive connections are preferable to inactive DBATs, not every thread can become an inactive connection. If a thread is to become inactive, DB2 tries to make it an inactive connection. If DB2 cannot make it an inactive connection, it tries to make it an inactive DBAT. If neither attempt is successful, the thread remains active.
Increasing
Data Transfer Rates In addition to blocking of
rows for a query result set, DB2 can also return multiple query blocks in
response to an OPEN or FETCH request to a remote client (such as DB2 Connect). Instead of
repeatedly sending requests to DB2 for z/OS requesting one block of data at a
time, DB2 Connect can optionally request that the server send back some number
of extra query blocks. These extra query blocks allow the client to minimize
network traffic, thereby improving performance. DB2 Connect can be set up to
request extra query blocks from a mainframe DB2 server by default.
Use the EXTRA BLOCKS SRV parameter on
the DB2 DDF installation panel to enable support for extra query blocks. The
minimum value for this parameter is 0 and the maximum is 100. Favor keeping the parameter set to the default value, which is 100.
You can also set up the EXTRA BLOCK REQ installation
parameter to limit the number of extra DRDA query blocks that DB2 is to request
from a remote DRDA server. This parameter does not limit the size of the SQL
query answer set. It simply controls the total amount of data that can be
transmitted on a network exchange. The minimum value for this parameter is 0 and the maximum is 100, which is also the default.
On the client side, you
activate support on a cursor or statement basis. It is controlled by a query
rowset size for a cursor, or the value of n in the OPTIMIZE FOR n ROWS clause or FETCH FIRST n ROWS ONLY clause.
Specify
Character Data Types with Care When character
data is accessed using DB2 Connect, the choice of CHAR versus VARCHAR will impact performance. VARCHAR is more efficient if the
length varies significantly. If the size of data does not vary much, CHAR is more efficient because
each VARCHAR column
requires two bytes of length information to be transmitted along with the data.
Of course, DB2 Connect
transmission performance is but one consideration when choosing a data type.
Refer to Chapter 5 for additional considerations.
BIND
the DB2 Connect Utilities DB2 Connect
comes with several utilities that use embedded SQL, and therefore their
programs must be bound to a database server before they can be used with that
system. The list of bind files required by these utilities is contained in the
following ddcsmvs.lst file for DB2 for z/OS. If you do not use the DB2 Connect utilities, you do not have to BIND their programs to each of your
DB2 for z/OS database servers.
If DB2 Connect Enterprise
Edition is installed, the DB2 Connect utilities must be bound to each database
server once from each type of client platform, before they can be used with
that system. For example, if you have 5 Windows clients and 4 Linux clients
connecting to DB2 for z/OS using DB2 Connect EE, then BIND the programs in ddcsmvs.lst from one of the Windows
clients, as well as from one of the Linux clients, and then from the DB2
Connect server. If all the clients are not at the same service level, you might
need to BIND from each client
for each particular service level.
Beware
of SQLCODE and SQLSTATE Differences Different IBM relational DBMSs will not always produce the same SQLCODE values for the same or similar
errors. This can be troublesome in distributed applications. There are two ways of handling
this situation:
- Use SQLSTATE instead of SQLCODE. The SQLSTATE values have the same basic meaning across the IBM’s DBMS products.
- Use SQLCODE mapping.
DB2 Connect can map SQLCODEs and tokens from each IBM
mainframe or iSeries server to your appropriate DB2 UDB system. You can specify
your own SQLCODE mapping file if you want to override the default mapping or you
are using a non-IBM database server that does not have SQLCODE mapping.
SQLCODE mapping is
enabled by default. If you want to turn off SQLCODE mapping, specify NOMAP in the parameter string of the DCS directory or the DCE routing
information object.
Assign
Authids per Application Consider assigning each
distributed application a dedicated authid. This approach is superior to simply
using the same authid for all applications because:
- Each authid can be assigned only the permissions it needs.
- You can use WLM to assign each authid different priorities, as needed.
- For troubleshooting, it is easier to identify the offending application.
- You can measure application resource usage by authid.
Assure
Appropriate Distributed Logon Authority Be
sure that DB2 administrators have the required authority on the distributed
platforms that interact with DB2 for z/OS. For example, a UNIX logon should be
available for the performance analyst or DBA to view db2diag.log and web application logs.
In addition, the logon should
have sufficient authority to execute appropriate commands as needed. For
example, iostat and vmstat are useful commands that may need to be issued.
Similar considerations should
be made for Windows servers.