IBM Support

RDB (Relational Database) Setting with BRMS in High Availability Environment

Troubleshooting


Problem

This document explains how to set up BRMS to work in a High Availability environment when RDB (Relational Database) entries are not unique.

Resolving The Problem

In a High Availability environment, it is possible that *LOCAL Relational Database Directory Entry is not unique for each system.
This can create a problem with the BRMS network because correct Relational Database Directory Entries are necessary to allow BRMS to work correctly.

The easy way to set up this environment is to change the *LOCAL Relational Database Directory Entry so each system has a unique value.

Sometimes this change cannot be done; therefore, a Relational Database ALIAS needs to be used. ALIAS indicates how to connect to a system regardless of the *LOCAL RDB entry. You should take the following steps to allow this to work:
1. Set up RDB entries correctly. In particular, each system should have an RDB entry that indicates the ALIAS that should be used to communicate with the remote system.

ADDRDBDIRE RDB(remote_*LOCAL alias) RMTLOCNAME('remote_system' *IP)
where remote_system is the system name or IP address.
2.
Indicate to BRMS to use ALIAS instead of system name. This is necessary because BRMS always tries to perform CONNECT using system name. CALL Q1AOLD needs to be executed to indicate what BRMS needs to use instead of system name.

QSYS/CALL QBRM/Q1AOLD PARM('ALIASNAME' '6' '*DRDA' 'SYSTEM_NAME' 'NETWORK_ID' 'RDB_ENTRY')

More information about this CALL can be found on the BRMS Web page at the following URL: How Do I Setup an RDB Directory Entry for My BRMS Network?
3. Add a TCP/IP Host Table Entry (ADDTCPHTE) for the above listed ALIAS to resolve to the correct IP for SYSTEM_NAME

QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((ALIAS)) <- where x.x.xxx.xx is the IP of SYSTEM_NAME

Example

Customer wants to have six systems in the BRMS network. Three systems are production systems, and the other three systems are corresponding HA systems.

Each production system has the same *LOCAL RDB entry of its corresponding HA system.
 
System Name *LOCAL RDB
PRODA PRODA
PRODB PRODB
PRODC PRODC
HAPRODA PRODA
HAPRODB PRODB
HAPRODC PRODC
First step necessary is to set up the ALIAS as follows:

On PRODA
PRODA *LOCAL
ADDRDBDIRE RDB(PRODB SYSTEM2) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of PRODB
ADDRDBDIRE RDB(PRODC SYSTEM3) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of PRODC
ADDRDBDIRE RDB(PRODA SYSTEM4) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of HAPRODA
ADDRDBDIRE RDB(PRODB SYSTEM5) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of HAPRODB
ADDRDBDIRE RDB(PRODC SYSTEM6) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of HAPRODC

On PRODB
PRODB *LOCAL
ADDRDBDIRE RDB(PRODA SYSTEM1) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of PRODA
ADDRDBDIRE RDB(PRODC SYSTEM3) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of PRODC
ADDRDBDIRE RDB(PRODA SYSTEM4) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of HAPRODA
ADDRDBDIRE RDB(PRODB SYSTEM5) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of HAPRODB
ADDRDBDIRE RDB(PRODC SYSTEM6) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of HAPRODC

On PRODC
PRODC *LOCAL
ADDRDBDIRE RDB(PRODA SYSTEM1) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of PRODA
ADDRDBDIRE RDB(PRODB SYSTEM2) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of PRODB
ADDRDBDIRE RDB(PRODA SYSTEM4) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of HAPRODA
ADDRDBDIRE RDB(PRODB SYSTEM5) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of HAPRODB
ADDRDBDIRE RDB(PRODC SYSTEM6) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of HAPRODC

On HAPRODA
PRODA *LOCAL
ADDRDBDIRE RDB(PRODA SYSTEM1) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of PRODA
ADDRDBDIRE RDB(PRODB SYSTEM2) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of PRODB
ADDRDBDIRE RDB(PRODC SYSTEM3) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of PRODC
ADDRDBDIRE RDB(PRODB SYSTEM5) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of HAPRODB
ADDRDBDIRE RDB(PRODC SYSTEM6) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of HAPRODC

On HAPRODB
PRODB *LOCAL
ADDRDBDIRE RDB(PRODA SYSTEM1) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of PRODA
ADDRDBDIRE RDB(PRODB SYSTEM2) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of PRODB
ADDRDBDIRE RDB(PRODC SYSTEM3) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of PRODC
ADDRDBDIRE RDB(PRODA SYSTEM4) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of HAPRODA
ADDRDBDIRE RDB(PRODC SYSTEM6) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of HAPRODC

On HAPRODC
PRODC *LOCAL
ADDRDBDIRE RDB(PRODA SYSTEM1) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of PRODA
ADDRDBDIRE RDB(PRODB SYSTEM2) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of PRODB
ADDRDBDIRE RDB(PRODC SYSTEM3) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of PRODC
ADDRDBDIRE RDB(PRODA SYSTEM4) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of HAPRODA
ADDRDBDIRE RDB(PRODB SYSTEM5) RMTLOCNAME('x.x.xxx.xx' *IP) the IP address of HAPRODB

Second step is to configure BRMS to connect to remote system as follows:

On PRODA
QSYS/CALL QBRM/Q1AOLD PARM('ALIASNAME' '6' '*DRDA' 'PRODB' 'NETWORK_ID' 'SYSTEM2')
QSYS/CALL QBRM/Q1AOLD PARM('ALIASNAME' '6' '*DRDA' 'PRODC' 'NETWORK_ID' 'SYSTEM3')
QSYS/CALL QBRM/Q1AOLD PARM('ALIASNAME' '6' '*DRDA' 'HAPRODA' 'NETWORK_ID' 'SYSTEM4')
QSYS/CALL QBRM/Q1AOLD PARM('ALIASNAME' '6' '*DRDA' 'HAPRODB' 'NETWORK_ID' 'SYSTEM5')
QSYS/CALL QBRM/Q1AOLD PARM('ALIASNAME' '6' '*DRDA' 'HAPRODC' 'NETWORK_ID' 'SYSTEM6')

On PRODB
QSYS/CALL QBRM/Q1AOLD PARM('ALIASNAME' '6' '*DRDA' 'PRODA' 'NETWORK_ID' 'SYSTEM1')
QSYS/CALL QBRM/Q1AOLD PARM('ALIASNAME' '6' '*DRDA' 'PRODC' 'NETWORK_ID' 'SYSTEM3')
QSYS/CALL QBRM/Q1AOLD PARM('ALIASNAME' '6' '*DRDA' 'HAPRODA' 'NETWORK_ID' 'SYSTEM4')
QSYS/CALL QBRM/Q1AOLD PARM('ALIASNAME' '6' '*DRDA' 'HAPRODB' 'NETWORK_ID' 'SYSTEM5')
QSYS/CALL QBRM/Q1AOLD PARM('ALIASNAME' '6' '*DRDA' 'HAPRODC' 'NETWORK_ID' 'SYSTEM6')

On PRODC
QSYS/CALL QBRM/Q1AOLD PARM('ALIASNAME' '6' '*DRDA' 'PRODA' 'NETWORK_ID' 'SYSTEM1')
QSYS/CALL QBRM/Q1AOLD PARM('ALIASNAME' '6' '*DRDA' 'PRODB' 'NETWORK_ID' 'SYSTEM2')
QSYS/CALL QBRM/Q1AOLD PARM('ALIASNAME' '6' '*DRDA' 'HAPRODA' 'NETWORK_ID' 'SYSTEM4')
QSYS/CALL QBRM/Q1AOLD PARM('ALIASNAME' '6' '*DRDA' 'HAPRODB' 'NETWORK_ID' 'SYSTEM5')
QSYS/CALL QBRM/Q1AOLD PARM('ALIASNAME' '6' '*DRDA' 'HAPRODC' 'NETWORK_ID' 'SYSTEM6')

On HAPRODA
QSYS/CALL QBRM/Q1AOLD PARM 'ALIASNAME' '6' '*DRDA' 'PRODA' 'NETWORK_ID' 'SYSTEM1')
QSYS/CALL QBRM/Q1AOLD PARM 'ALIASNAME' '6' '*DRDA' 'PRODB' 'NETWORK_ID' 'SYSTEM2')
QSYS/CALL QBRM/Q1AOLD PARM 'ALIASNAME' '6' '*DRDA' 'PRODC' 'NETWORK_ID' 'SYSTEM3')
QSYS/CALL QBRM/Q1AOLD PARM 'ALIASNAME' '6' '*DRDA' 'HAPRODB' 'NETWORK_ID' 'SYSTEM5')
QSYS/CALL QBRM/Q1AOLD PARM 'ALIASNAME' '6' '*DRDA' 'HAPRODC' 'NETWORK_ID' 'SYSTEM6')

On HAPRODB
QSYS/CALL QBRM/Q1AOLD PARM 'ALIASNAME' '6' '*DRDA' 'PRODA' 'NETWORK_ID' 'SYSTEM1')
QSYS/CALL QBRM/Q1AOLD PARM 'ALIASNAME' '6' '*DRDA' 'PRODB' 'NETWORK_ID' 'SYSTEM2')
QSYS/CALL QBRM/Q1AOLD PARM 'ALIASNAME' '6' '*DRDA' 'PRODC' 'NETWORK_ID' 'SYSTEM3')
QSYS/CALL QBRM/Q1AOLD PARM 'ALIASNAME' '6' '*DRDA' 'HAPRODA' 'NETWORK_ID' 'SYSTEM4')
QSYS/CALL QBRM/Q1AOLD PARM 'ALIASNAME' '6' '*DRDA' 'HAPRODC' 'NETWORK_ID' 'SYSTEM6')

On HAPRODC
QSYS/CALL QBRM/Q1AOLD PARM 'ALIASNAME' '6' '*DRDA' 'PRODA' 'NETWORK_ID' 'SYSTEM1')
QSYS/CALL QBRM/Q1AOLD PARM 'ALIASNAME' '6' '*DRDA' 'PRODB' 'NETWORK_ID' 'SYSTEM2')
QSYS/CALL QBRM/Q1AOLD PARM 'ALIASNAME' '6' '*DRDA' 'PRODC' 'NETWORK_ID' 'SYSTEM3')
QSYS/CALL QBRM/Q1AOLD PARM 'ALIASNAME' '6' '*DRDA' 'HAPRODA' 'NETWORK_ID' 'SYSTEM4')
QSYS/CALL QBRM/Q1AOLD PARM 'ALIASNAME' '6' '*DRDA' 'HAPRODB' 'NETWORK_ID' 'SYSTEM5')

Third step is to add the TCP/IP Host Table Entries:

On PRODA
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM2)) <- where x.x.xxx.xx is the IP of PRODB
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM3)) <- where x.x.xxx.xx is the IP of PRODC
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM4)) <- where x.x.xxx.xx is the IP of HAPRODA
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM5)) <- where x.x.xxx.xx is the IP of HAPRODB
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM6)) <- where x.x.xxx.xx is the IP of HAPRODC

On PRODB

QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM1)) <- where x.x.xxx.xx is the IP of PRODA
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM3)) <- where x.x.xxx.xx is the IP of PRODC
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM4)) <- where x.x.xxx.xx is the IP of HAPRODA
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM5)) <- where x.x.xxx.xx is the IP of HAPRODB
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM6)) <- where x.x.xxx.xx is the IP of HAPRODC

On PRODC
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM1)) <- where x.x.xxx.xx is the IP of PRODA
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM2)) <- where x.x.xxx.xx is the IP of PRODB
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM4)) <- where x.x.xxx.xx is the IP of HAPRODA
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM5)) <- where x.x.xxx.xx is the IP of HAPRODB
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM6)) <- where x.x.xxx.xx is the IP of HAPRODC

On HAPRODA
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM1)) <- where x.x.xxx.xx is the IP of PRODA
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM2)) <- where x.x.xxx.xx is the IP of PRODB
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM3)) <- where x.x.xxx.xx is the IP of PRODC
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM5)) <- where x.x.xxx.xx is the IP of HAPRODB
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM6)) <- where x.x.xxx.xx is the IP of HAPRODC

On HAPRODB
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM1)) <- where x.x.xxx.xx is the IP of PRODA
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM2)) <- where x.x.xxx.xx is the IP of PRODB
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM3)) <- where x.x.xxx.xx is the IP of PRODC
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM4)) <- where x.x.xxx.xx is the IP of HAPRODA
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM6)) <- where x.x.xxx.xx is the IP of HAPRODC

On HAPRODC
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM1)) <- where x.x.xxx.xx is the IP of PRODA
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM2)) <- where x.x.xxx.xx is the IP of PRODB
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM3)) <- where x.x.xxx.xx is the IP of PRODC
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM4)) <- where x.x.xxx.xx is the IP of HAPRODA
QSYS/ADDTCPHTE INTNETADR(x.x.xxx.xx) HOSTNAME((SYSTEM5)) <- where x.x.xxx.xx is the IP of HAPRODB

Note: BRMS files should never be journalled or replicated using replication software. If this is done, upgrades of the product and application of PTFs may fail.

[{"Type":"MASTER","Line of Business":{"code":"LOB57","label":"Power"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SWG60","label":"IBM i"},"Platform":[{"code":"PF012","label":"IBM i"}],"Version":"7.1.0"}]

Historical Number

586304547

Document Information

Modified date:
29 January 2020

UID

nas8N1011789