IBM Support

Journal receivers are filling up - how to determine what job(s) are generating so many journal entries?

Question & Answer


Question

Journal receivers are filling up rapidly and you would like to know what job or jobs are causing an abnormal amount of changes to be deposited into the journal.

Cause

It is important to understand that journals themselves do not "generate" entries.  A journal entry is logged when a journaled object is changed in some way.  The intention of this document is to assist in identifying the job(s) that are contributing to filling up receivers faster than normal.  It is up to you to determine if the job / program / etc was working the way it should be. 

Answer

The first step is to dump the receiver or receivers in question to an OUTFILE.  There are a couple of ways to do this.  Keep in mind the OUTFILE will be similar in size to the receiver itself, so you will want limit the number of receivers dumped at once.

Here is a sample of my receiver directory:
     ==>  WRKJRNA LIBRARY/YOUR_JOURNAL
     ==>  F15=Work with receiver directory
     ==>  Document your receiver library - it may be different than your journal library
     ==>  Notes:   F17=Top,   F18=Bottom,   and   F11=Display size

                                   Attach                        Save        Receiver    Library     Number  Date      Status              Date          DZR2000012  RHDIESER    00001   12/12/17  SAVED               08/15/18   DZR2000013  RHDIESER    00002   02/23/18  SAVED               08/15/18   DZR2000014  RHDIESER    00003   04/02/18  SAVED               08/15/18   DZR2000015  RHDIESER    00004   05/01/18  SAVED               08/15/18   DZR2000016  RHDIESER    00005   05/12/18  SAVED               08/15/18   DZR2000017  RHDIESER    00006   05/18/18  SAVED               08/15/18   DZR2000018  RHDIESER    00007   05/18/18  SAVED               08/15/18   DZR2000019  RHDIESER    00008   06/21/18  ONLINE              08/15/18   DZR2000020  RHDIESER    00009   10/06/18  ONLINE              00/00/00   DZR2000021  RHDIESER    00010   10/06/18  ATTACHED            00/00/00    


Select your DSPJRN command that you will use based on the following descriptions

[  ]  DSPJRN - using the default value for  RCVRNG(*CURRENT)     

Based on the above receiver chain this command will only dump "DZR2000021".  That may be all that you are interested in, but in most cases it is a previous receiver somewhere in the receiver directory that you will want to analyze.

[  ]  DSPJRN - using RCVRNG(RHDIESER/DZR2000020 RHDIESER/DZR2000020)

Note the starting and ending receivers in this example are the same.  This will only dump the contents of receiver "DZR2000020".  I would expect most situations would fall into this command example; where you are selecting a particular receiver of interest.  You could also use this example to select more than one receiver:

RCVRNG(<Lib>/<Starting Receiver> <Lib>/<Ending Receiver>)

[  ]  DSPJRN - using  RCVRNG(*CURCHAIN)  

Do NOT use CURCHAIN unless you know there are a limited number of receivers.  CURCHAIN in this example would dump every receiver starting from DZR2000012 through the attached receiver DZR2000021.  A receiver chain can easily have hundreds of 2 GB receivers and that would create an enormous outfile.



Dumping the receiver(s) to an OUTFILE

Once you have determined your RCVRNG value you will be using - update the following command with the values from your system.  Specifically you will need to change the JRN and RCVRNG parameters.

 DSPJRN JRN(RHDIESER/DIESER)                              
        RCVRNG(RHDIESER/DZR2000020 RHDIESER/DZR2000020)   
        OUTPUT(*OUTFILE)                                  
        OUTFILE(QTEMP/JRNOUT) 

Tip:
You can run CL commands from Run SQL Scripts.  You would simply need to add:    CL:  <Your command string;

CL:  DSPJRN JRN(RHDIESER/DIESER) RCVRNG(RHDIESER/DZR2000020 RHDIESER/DZR2000020) OUTPUT(*OUTFILE) OUTFILE(QTEMP/JRNOUT);

Also in Run SQL Scripts - if you place your cursor immediately after the "CL: " you can press F4 and it will prompt the command.



Determining the job(s) that are contributing the most entries to the journal

    select count(*) as "Number of journal entries"              ,JONBR as "Job Number"              ,JOUSER as "User Name"              ,JOJOB as "Job Name"  from qtemp.jrnout  group by JONBR, JOUSER, JOJOB       order by count(*) DESC limit 100;   


My results as seen from Run SQL Scripts:

image



What work was job:  864443/RHDIESER/QPADEV0015 doing?

The next step in reviewing the receiver will be to determine what file(s) this job was touching.  I am going to use the job number (JONBR), the user (JOUSER), and job name (JOJOB) from the above results in the following SQL (be sure these values are upper case):

  select count(*) as "Number of journal Entries"          ,JOCODE as "Journal Code"          ,JOENTT as "Journal Entry Type"          ,JONBR as "Job Number"          ,JOUSER as "Job User"          ,JOJOB as "Job Name"          ,JOLIB as "Library"          ,JOOBJ as "File Name"          ,JOPGM as "Program"  from qtemp.jrnout  where JONBR = 864443        and JOUSER = 'RHDIESER'        and JOJOB = 'QPADEV0015'  group by JOCODE, JOENTT, JONBR, JOUSER, JOJOB, JOLIB, JOOBJ, JOPGM          order by COUNT(*) DESC;    

image-20181011014725-2



Now the research beings

We need to look up each of these codes and determine what is happening with this file.  The URL listed below will allow you to look up the various journal codes and entry types. 

[  ]  Journal entry information finder
     ==>  https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/rzaru/rzarujournalfinder.htm

IBM cannot tell you if the changes a user's job makes are "normal".  You will need to review the job with the end user and determine if that activity is acceptable.  Remember the system does not generate these values it is tracking changes made and the above example job caused 1,713 entries to be deposited to the journal.

                               

 

 

 

 

 

 

Related Information

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

Document Information

Modified date:
18 December 2019

UID

ibm10734563