search cancel

OPS3781S ABEND X'000C3000' occurred at OPINBO

book

Article ID: 130384

calendar_today

Updated On:

Products

OPS/MVS Event Management & Automation

Issue/Introduction

Received this error message during OPSMVS startup after IPL and also after attempts to re-cycle OPSMVS:

OPS3781S ABEND X'000C3000' occurred at OPINBO+X'0000482C' - Browse checkpoint processing suspended      

Workaround:  OPSLOG2 was set to be the live log in option =4.13, log data started recording on OPSLOG2.

Subsequent attempts to inactivate OPSLOG1 resulted in:

OPSCTL OPSLOG error 
 address OPSCTL OPSLOG failed. RC=153

 

How can the issue with OPSLOG1 be resolved?

Cause

This abend occurs when the number of messages stored in an OPSLOG dataset reaches the maximum threshold of 2 GB (X'7FFFFFFF' or decimal 2147483647). The number of messages stored in OPSLOG can be checked by going to OPSVIEW option =4.1.1 and reviewing the BROWSECHECKNUM parameter which will show the current message count.

Environment

OPS/MVS all releases
z/OS

Resolution

When an OPSLOG dataset is allowed to exceed to 2 GB limit and stops recording, the only option available to resolve the issue requires shutting down OPS/MVS and reallocating the OPSLOG dataset having the problem. The steps necessary follow below.

1. Shut down OPS/MVS.

2. Delete the OPSLOG dataset in error.

3. Copy the following REXX exec to a member in an appropriate library and modify the fields in red to reflect the system smfid, dataset name and attributes associated with the OPSLOG in need of reallocation:

/* REXX */                                                             
/*-------------------------------------------------------------------*/
/* Set the smfid of the system in which these data sets will be      */
/* allocated. Since these data sets must be unique per system, it    */
/* is recommended that the smfid be used as part of the data set     */
/* name.                                                             */
/*-+----1----+----2----+----3----+----4----+----5----+----6----+----7*/
smfid = 'SYSA'                                                         
                                                                       
/*-------------------------------------------------------------------*/
/* Set primary OPSLOG data set attributes.                           */
/*   OPSLOG_dsn       - Name of the primary OPSLOG. Default logic    */
/*                      will create dsn of 'SYS1.OPS.smfid.OPSLOG'   */
/*                      Set to '' if not utilizing.                  */
/*   OPSLOG_volser    - Volser where the primary OPSLOG should be    */
/*                      allocated.                                   */
/*   OPSLOG_cylinders - Number of primary cylinders to allocate for  */
/*                      the primary OPSLOG. Default logic requests   */
/*                      for '790' cylinders. The setting of the      */
/*                      BROWSEMAX operand of the OPSLOG DEFINE       */
/*                      statement within the OPSSPA00 start-up       */
/*                      member for the primary OPSLOG will need      */
/*                      altered if this value is modified.           */
/*-+----1----+----2----+----3----+----4----+----5----+----6----+----7*/
OPSLOG_dsn     = 'SYS1.OPS.'smfid'.OPSLOG'   /* Data set name        */
OPSLOG_volser  = 'xxxxxx'                    /* Volser for OPSLOG    */
OPSLOG_cylinders  = '790'                    /* # of primary and...  */
                                             /* secondary cylinders  */
if OPSLOG_dsn <> '' then                                               
do                                                                     
  address TSO                                                          
  "DEFINE CLUSTER ( NAME('"OPSLOG_dsn"')",                             
                    "CYLINDERS("OPSLOG_cylinders","0")",
                    "VOL("OPSLOG_volser")",             
                    "SHAREOPTIONS(2,3)",                
                    "LINEAR )",                         
                    "DATA ( NAME('"OPSLOG_dsn".DATA') )"
   say 'DEFINE of 'OPSLOG_dsn' executed. RC = 'rc       
 end                                                    

4. Execute the REXX program in the TSO foreground via the EXECUTE command:

EXEC 'your.rexx.library(member_name)'

5. Ensure the return code is 0 upon execution. A clean, empty OPSLOG dataset has now been allocated and is ready for use.

6. Restart OPS/MVS and check that all is well in the "OPSLOG Definitions" panel, OPSVIEW option =4.13.

 

Next, to prevent OPSLOG from reaching the 2 GB limit going forward, please do the following:

1. Copy the message rule hlq.CCLXRULS(OPS3445O) to an appropriate ruleset and enable/auto-enable it.

2. Copy the member hlq.CCLXSAMP(OPS3445O) to an appropriate REXX library present in the STEPLIB concatenation of the OSF servers.

Carefully review all comments in each member for detailed instructions regarding implementation.

Within the comments, the purpose of these members is stated as follows:

Purpose    - Each event in the OPSLOG contains a message number
            that is incremented for each logged event. The  
            highest possible message number is slightly higher
            than 2 billion. The "live" OPSLOG must be     
            switched to a new OPSLOG to avoid an outage. This
            rule will fire on the early warning message of  
            this condition nearing, and perform a switch to a
            new (pre-allocated) "live" OPSLOG.