Now, with version 8, the RBA has been extended to 8 bytes, virtually eliminating the possibility of running out of RBA log range. Using a 6 byte RBA gave us a 256 terabyte log range. Now, with 8 bytes, we have 16 exabytes of log range, or 64K times more. A queue manager running at 100MB per second, would take over 5000 years to run out of RBA log range.
So how do we convert to the 8 byte RBA. If you are a standalone queue manager, you just need to be on MQ version 8 running in the NEWFUNC OPMODE. If you are a queue manager running in a Queue Sharing Group (QSG), all of the members of the QSG need to be running version 8 using the NEWFUNC OPMODE.
Steps to convert your bootstrap to version 2 (8 byte):
1.) Stop queue manager cleanly.
2). Allocate a new bootstrap or set of bootstrap data sets using a different name than the currently used by the queue manager..
3). Run the CSQJUCNV conversion utility using the correct PARM.
Standalone Queue Manager:
PARM=('NOQSG')
Queue Sharing Group Queue Manager:
PARM=('INQSG,QSGroupName,DataSharingGroupName,DB2Member')
4). Rename the current bootstraps to another name...i.e. V1.
5). Rename the new V2 bootstraps to the names used by the queue manager.
6). Start the queue manager.
7). Verify that the new RBA range is shown in the JES.
CSQJ034I <MQM1 CSQJW007 END OF LOG RBA RANGE IS FFFFFFFFFFFFFFFF
The previous message showed the RBA as 0000FFFFFFFFFFFF
Below is some sample JCL using just a single bootstrap dataset.
Step 1: Allocate a new bootstrap with a different name:
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DELETE (COM.MQM1.V8.BSDS01) <=== NOTICE V8, New name
DEFINE CLUSTER -
(NAME(COM.MQM1.V8.BSDS01) -
VOLUMES(DCPSMS) -
UNIQUE -
SHAREOPTIONS(2 3) ) -
DATA -
(NAME(COM.MQM1.V8.BSDS01.DATA) -
RECORDS(850 60) -
RECORDSIZE(4089 4089) -
CONTROLINTERVALSIZE(4096) -
FREESPACE(0 20) -
KEYS(4 0) ) -
INDEX -
(NAME(COM.MQM1.V8.BSDS01.INDEX) -
RECORDS(5 5) -
CONTROLINTERVALSIZE(1024) )
Step 2: Run the bootstrap conversion utility:
//STEP3 EXEC PGM=CSQJUCNV,REGION=32M
//* PARM=('INQSG,++QSGNAME++,++DSGNAME++,++DB2SSID++') *QSG*
// PARM=('NOQSG') *NOQSG*
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=COM.MQM1.BSDS01,DISP=SHR <== current BSDS01
//*SYSUT2 DD DSN=COM.MQM1.BSDS02,DISP=SHR <== current BSDS02
//SYSUT3 DD DSN=COM.MQM1.V8.BSDS01,DISP=OLD <== new BSDS01
//*SYSUT4 DD DSN=COM.MQM1.V8.BSDS02,DISP=OLD <== new BSDS02
In the above JCL, SYSUT2 and SYSUT 4 are commented out
since we are only doing a queue manager with a single BSDS.
If you are converting a queue manager running DUAL bootstraps,
then all 4 SYSUT# will be used.
Step 3: Rename the current bootstraps to a V71 name to move them out of the way:
//STEP4 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
ALTER 'COM.MQM1.BSDS01' NEWNAME('COM.MQM1.V71.BSDS01')
ALTER 'COM.MQM1.BSDS01.DATA' NEWNAME('COM.MQM1.V71.BSDS01.DATA')
ALTER 'COM.MQM1.BSDS01.INDEX' NEWNAME('COM.MQM1.V71.BSDS01.INDEX')
//*
//STEP4 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
ALTER 'COM.MQM1.V8.BSDS01' NEWNAME('COM.MQM1.BSDS01')
ALTER 'COM.MQM1.V8.BSDS01.DATA' NEWNAME('COM.MQM1.BSDS01.DATA')
ALTER 'COM.MQM1.V8.BSDS01.INDEX' NEWNAME('COM.MQM1.BSDS01.INDEX')
//*
CSQJ034I <MQM1 CSQJW007 END OF LOG RBA RANGE IS FFFFFFFFFFFFFFFF
That's it!!
Happy messaging.