Laptop JDBC, middleware connection pools, and another DB2 subsystem all reach z/OS through the Distributed Data Facility (DDF). DDF speaks DRDA, almost always over TCP/IP, and is identified by a LOCATION, IPNAME, and ports. This page maps the DIST address space, requester versus server roles, DRDA packages, and the security knobs you will see on a DDF startup message.
A Db2 subsystem is several address spaces. For distributed SQL:
A remote request arrives on a TCP port in DIST. DIST creates or borrows a database access thread (DBAT) and passes the SQL to DBM1. You still COMMIT, still take locks, still write log records. DDF is the front door, not a second database.
IBM documents very large connection counts (CONDBAT up to 150000 with inactive connections) and a smaller number of concurrent DBATs (MAXDBAT; CTHREAD + MAXDBAT must stay within the documented cap, historically 20000). Connections and threads are not the same thing—the threads page goes deep on that.
DRDA (Distributed Relational Database Architecture) is the standard that lets a Db2 for z/OS server talk to IBM clients and to other DRDA servers. The payload is SQL, describes, and commits—not a private 3270 datastream.
TCP/IP is the network almost every new client uses: host name or DVIPA, port, optional TLS. VTAM / SNA used LU names (LUNAME, GENERICLU) and still appears in BSDS and DSNL004I. New work should assume TCP/IP. SNA matters when you inherit a partner that never moved.
Stored procedures help DDF: one network message can run many SQL statements at the server. Block fetch ships result rows in chunks. That is why a chatty row-by-row JDBC loop feels slow on z/OS compared with a single CALL.
The location name is how SQL names this server: CONNECT TO DB2PROD or DB2PROD.HR.EMPLOYEE. In a data sharing group the location usually names the group, not one member, so clients can land on any member. Location aliases can point at a subset of members (for example only the query members). Maintain aliases with DSNJU003; verify with DSNJU004. After member consolidations, remove dead members from aliases or workload balancing misbehaves.
IPNAME is the TCP/IP name Db2 uses for itself in DRDA. Combined with DOMAIN on DSNL004I it is how partners find you. Sysplex distributor / DVIPA is how you give one IP to the whole group.
| Port | Use |
|---|---|
| PORT (TCPPORT) | Inbound DRDA SQL connections |
| SECPORT | Inbound TLS/SSL DRDA connections |
| RESPORT | Two-phase commit resynchronization |
If PORT shows as unavailable, a common cause is MAXDBAT=0 (DDF will not accept SQL threads) or a BSDS PORT of 0. Members of a group should use the same DRDA port and the same SECPORT. Unique per-member secure ports break sysplex workload balancing. RESPORT may be unique per member because resync has to find the member that still owns the unit of recovery.
1234567-START DDF -STOP DDF -STOP DDF MODE(QUIESCE) -DISPLAY DDF DETAIL /* After DDF start, look for DSNL004I: LOCATION, TCPPORT, SECPORT, RESPORT, IPNAME, PKGREL */
| Role | Meaning |
|---|---|
| Requester (application requester) | The side that issues SQL toward a remote server |
| Database server | The Db2 that owns the tables and runs the SQL |
| Application server / gateway | A Db2 that accepts a client and may forward work to another server |
The same subsystem is often all three in one day: CICS is local (allied), a JDBC farm treats it as the database server, and a three-part name to a warehouse Db2 makes z/OS a requester. Communications database (CDB) tables such as SYSIBM.LOCATIONS, SYSIBM.IPNAMES, and SYSIBM.USERNAMES tell a requester how to reach a remote LOCATION.
Type 4 JDBC and ODBC do not precompile your Java. They bind IBM-supplied DRDA packages (collection NULLID is the usual example) on the server. GRANT EXECUTE on those packages to the runtime authids. When a client “cannot execute package NULLID.SYSxxx” you are missing a bind or a grant, not a table.
PKGREL on DSNL004I (BNDOPT, BNDPOOL, COMMIT) controls how DDF honors package RELEASE options when a high-performance DBAT finishes. That knob sits on the boundary between connectivity and thread pooling.
Each active remote transaction needs a DBAT. Inactive connections can wait without a DBAT (CMTSTAT INACTIVE). Allied threads (CICS, IMS, TSO, batch) are a different pool (CTHREAD). Protected CICS threads are an attachment topic; DDF has its own pool. The next two pages cover remote SQL and then DBATs in depth.
Treat the open DRDA port as a production door:
The dedicated DDF security page covers TLS setup and remote authorization in more detail. For this architecture page, remember: identity on the wire, encryption on SECPORT, then ordinary Db2 privileges.
DDF is the front desk of the Db2 library. DRDA is the language visitors speak. TCP/IP is the street they walk on; VTAM is the old tram still running for some neighbors. The LOCATION is the library’s name on the map. PORT is the public door, SECPORT is the door with a lock and a secret handshake, RESPORT is the special door for “we got cut off in the middle of returning two books at once.” DIST is the receptionist; DBM1 is the stacks. JDBC drivers bring a library card (DRDA packages) so they are allowed to ask for books without writing COBOL.
1. Which address space owns network conversations for DDF?
2. What protocol do modern DDF clients use?
3. What is LOCATION in DDF?
4. What is SECPORT for?
5. Can one Db2 forward a client request to another remote server?