[IBMi]

IBM i: Applying maintenance level updates on the latest release

How to apply maintenance level updates by stopping IBM® MQ and using the IBM i standard maintenance procedure.

Before you begin

To find out what version you have currently installed, use the following commands:
Table 1. IBM MQ commands to display the installed versions
IBM MQ Product Version command
IBM MQ Server

DSPMQMVER
IBM MQ Java IBM MQ classes for Java:

java com.ibm.mq.MQJavaLevel
Note: For this command to work, you might need to set your environment classpath to include:
  • /QIBM/ProdData/mqm/java/lib/com.ibm.mq.jar
IBM MQ classes for Java Message Service:

java com.ibm.mq.jms.MQJMSLevel
Note: For this command to work, you might need to set your environment classpath to include:
  • /QIBM/ProdData/mqm/java/lib/com.ibm.mqjms.jar

See Environment variables relevant to IBM MQ classes for Java and Environment variables relevant to IBM MQ classes for JMS.

IBM MQ Client

DSPMQMVER

About this task

Maintenance updates for IBM MQ for IBM i are supplied as PTFs (Program Temporary Fixes). They are available for download from the web as save files, which are normally stored in the QGPL library. IBM i PTF's can be found in "Fix Central" at the following location:

FixCentral.

Procedure

Prepare to quiesce queue managers:

  1. Read the cover letter carefully to see if you need to take any special actions.
  2. Sign on to a new interactive IBM i session, ensuring that you are not accessing any IBM MQ objects.
  3. Ensure that you have the following authorities:
    1. *ALLOBJ authority, or object management authority for the QMQM library.
    2. Sufficient authority to use the ENDSBS command.
  4. Warn all users that you are going to stop IBM MQ.

Quiesce all queue managers:

  1. Run the ENDMQM command:
    
    ENDMQM MQMNAME(*ALL) OPTION(*CNTRLD) ENDCCTJOB(*YES) RCDMQMIMG(*YES)
    TIMEOUT( 15 )
    
    Where 15 is a timeout value in seconds.
    If the ENDMQM command has not completed within a reasonable period (at least 10 minutes), use the WRKMQM command. This command identifies the queue managers that are still ending. Then force each one in turn to stop by issuing:
    
    ENDMQM MQMNAME( QMGRNAME ) OPTION(*IMMED)
    
    Where QMGRNAME is the name of the queue manager.
    Complete the tidying up of shared memory by issuing the command:
    
    ENDMQM MQMNAME(*ALL) OPTION(*IMMED) ENDCCTJOB(*YES) RCDMQMIMG(*NO)
    TIMEOUT( 15 )
    

If the commands in the previous step do not complete, end the subsystem immediately:

  1. Run the following command:
    
    ENDSBS SBS(QMQM) OPTION(*IMMED)
    

If the command in the previous step also does not complete, use the operating system command ENDJOB to end all jobs in the subsystem QMQM:

Note: Do not use ENDJOBABN unless you intend to perform an IPL on the machine before starting IBM MQ. Ending IBM MQ jobs using ENDJOBABN can lead to damaged semaphores, which in turn can prevent your queue manager from starting.

  1. If a QMGR must be shut down manually, end the jobs (ENDJOB) in the following order. Wait a few minutes for AMQA* or AMQZ* jobs to tidy up.
    1. RUNMQLSR - TCP listener (multi-threaded)
    2. AMQCLMAA - TCP listener (single-threaded)
    3. AMQRMPPA - Channel process pooling job
    4. RUNMQCHI - channel initiator
    5. AMQCRSTA - receiving MCA jobs
    6. RUNMQCHL - sending MCA jobs
    7. AMQCRS6B - LU62 receiver channel
    8. AMQPCSEA - command server
    9. RUNMQTRM - Application trigger monitor
    10. RUNMQDLQ - Dead letter queue handler
    11. AMQFCXBA - IBM Integration Bus Worker Job
    12. AMQFQPUB - Queued Publish/Subscribe Daemon
    13. RUNMQBRK - IBM Integration Bus Control Job
    14. AMQZMUC0 ('0' is a zero) - Utility Manager
    15. AMQZMUF0 ('0' is a zero) - Utility Manager
    16. AMQZMUR0 ('0' is a zero) - Utility Manager
    17. AMQZMGR0 ('0' is a zero) - Process Controller
    18. AMQRRMFA - cluster repository manager
    19. AMQZDMAA - deferred message manager
    20. AMQALMPX - Log Manager
    21. AMQZFUMA - object authority manager
    22. AMQZLSA0 ('0' is a zero) - LQM agents
    23. AMQZLAA0 ('0' is a zero) - LQM agents
    24. AMQZXMA0 ('0' is a zero) - Execution Controller
  2. Run the following command:
    
    ENDMQM MQMNAME( QMGRNAME ) OPTION(*IMMED)
    
  3. Run the following command:
    
    ENDMQM MQMNAME(*ALL) OPTION(*CNTRLD) ENDCCTJOB(*YES) RCDMQMIMG(*NO)
    TIMEOUT( 05 )
    
    Where 05 is a timeout value in seconds.
  4. Manually clean up shared memory.
    Run the following command:
    
    EDTF '/QIBM/UserData/mqm/qmgrs'
    
    then:
    1. Take option 5 for &SYSTEM and check that the following directories are empty: isem, esem, msem, ssem, and shmem.
    2. Take option 5 for QMGRNAME and check that the following directories are empty:- isem, esem, msem, ssem, and shmem.
    3. Take option 5 for &ipcc in the QMGRNAME directory and check that the following directories are empty:- isem, esem, msem, ssem, and shmem.
    4. Take option 5 for &qmpersist in the QMGRNAME directory and check that the following directories are empty:- isem, esem, msem, ssem, and shmem.
    5. Take option 5 for &app and check that the following directories are empty: isem, esem, msem, ssem, and shmem.

Apply a PTF:

  1. Load and apply a PTF