![]() |
| Journaling in IBM i (AS400) |
Introduction to Journaling
Journaling is defined as the recording activity of the object and involves the recording of the activity related to files, namely, physical files. When a file is being journaled, activities such as file opens, file closes and data updates are recorded.
Setting up Journaling
Here, we need to follow some steps for setting up Journaling
Create Journal Receiver (CRTJRNRCV)
Use the Create Journal Receiver (CRTJRNRCV) command to create a journal receiver. The journal receiver is where the journal entries are actually recorded. The journal "connects" the receiver to the file.
Create Journal Receiver (CRTJRNRCV)
Type choices, press Enter.
Journal receiver . . . . . . . . JRNRCV JRNRCV0001
Library . . . . . . . . . . . EASYCLASS1
ASP number . . . . . . . . . . . ASP *LIBASP
Journal receiver threshold . . . THRESHOLD 1500000
Text 'description' . . . . . . . TEXT *BLANK
Run command WRKOBJ JRNRCV0001 on the command line will show us the created journal receiver object of type *JRNRCV.
Work with Objects
Type options, press Enter.
2=Edit authority 3=Copy 4=Delete 5=Display authority 7=Rename
8=Display description 13=Change description
Opt Object Type Library Attribute Text
JRNRCV0001 *JRNRCV EASYCLASS1
Bottom
Parameters for options 5, 7 and 13 or command
===> wrkobj JRNRCV0001
F3=Exit F4=Prompt F5=Refresh F9=Retrieve F11=Display names and types
F12=Cancel F16=Repeat position to F17=Position to
Create Journal (CRTJRN)
Create a journal. Use the Create Journal (CRTJRN) command to create a journal and specify the receiver created in step 1. Although you can journal multiple files to the same journal.
Create Journal (CRTJRN)
Type choices, press Enter.
Journal . . . . . . . . . . . . JRN JRN0000001
Library . . . . . . . . . . . EASYCLASS1
Journal receiver . . . . . . . . JRNRCV JRNRCV0001
Library . . . . . . . . . . . EASYCLASS1
*LIBL
ASP number . . . . . . . . . . . ASP *LIBASP
Journal message queue . . . . . MSGQ QSYSOPR
Library . . . . . . . . . . . *LIBL
Manage receivers . . . . . . . . MNGRCV *SYSTEM
Delete receivers . . . . . . . . DLTRCV *NO
Receiver size options . . . . . RCVSIZOPT *SYSDFT
+ for more values
Minimize entry specific data . . MINENTDTA *NONE
Journal caching . . . . . . . . JRNCACHE *NO
Run command WRKOBJ JRN0000001 on the command line will show us the created journal object of type *JRN.
Work with Objects
Type options, press Enter.
2=Edit authority 3=Copy 4=Delete 5=Display authority 7=Rename
8=Display description 13=Change description
Opt Object Type Library Attribute Text
JRN0000001 *JRN EASYCLASS1
Bottom
Parameters for options 5, 7 and 13 or command
===> WRKOBJ JRN0000001
F3=Exit F4=Prompt F5=Refresh F9=Retrieve F11=Display names and types
F12=Cancel F16=Repeat position to F17=Position to
Start Journal Physical File (STRJRNPF)
Start journaling the file. This is done by using the Start Journal Physical File (STRJRNPF) command. This is how you associate a file to a journal. Once the association is made, the system will record in the journal receiver a copy of any record added, updated, or deleted from the file. Other activities, such as when the file is opened and closed, can also be recorded in the journal receiver if you choose by selecting the appropriate options on the STRJRNPF command.
Start Journal Physical File (STRJRNPF)
Type choices, press Enter.
Physical file to be journaled . FILE INFO
Library . . . . . . . . . . . EASYCLASS1
+ for more values
*LIBL
Journal . . . . . . . . . . . . JRN JRN0000001
Library . . . . . . . . . . . EASYCLASS1
Record images . . . . . . . . . IMAGES *BOTH
Journal entries to be omitted . OMTJRNE *NONE
Logging level . . . . . . . . . LOGLVL *ERRORS
Just run command DSPFD INFO from the command line after starting a journal on file INFO to verify whether the file is journaled. Search with "ourn" in the DSPFD report.
Display Spooled File
File . . . . . : QPDSPFD
Control . . . . .
Find . . . . . . ourn
*...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8..
Keep in memory . . . . . . . . . . . . . . : KEEPINMEM *NO
File is currently journaled . . . . . . . . : Yes
Current or last journal . . . . . . . . . . : JRN0000001
Library . . . . . . . . . . . . . . . . . : EASYCLASS1
Journal images . . . . . . . . . . . . . . : IMAGES *BOTH
Journal entries to be omitted . . . . . . . : OMTJRNE *NONE
Last journal start date/time . . . . . . . : 04/14/22 07:32:35
Access Path Description
Access path maintenance . . . . . . . . . . : MAINT *IMMED
Unique key values required . . . . . . . . : UNIQUE No
Key order . . . . . . . . . . . . . . . . . : Not specified
Access path journaled . . . . . . . . . . . : No
Access path . . . . . . . . . . . . . . . . : Keyed
Constraint Type . . . . . . . . . . . . . . : NONE
Number of key fields . . . . . . . . . . . : 1
Record format . . . . . . . . . . . . . . . : RINFO
Key field . . . . . . . . . . . . . . . . : EMPID
Sequence . . . . . . . . . . . . . . . : Ascending
Sign specified . . . . . . . . . . . . : UNSIGNED
Currently, once files are journaled just run the command DSPJRN.
DSPJRN JRN(JRN0000001)
You will see the following entries which comprise Code and Type within that Code, Object, etc. Code 'J' means it's a Journal or receiver operation and with the Code J category we have different types such as 'PR' means Previous Journal receiver operation. Then we can notice 2nd entry with Code 'D' which means it's a Database file operation being performed on file INFO and Type 'JF' means Start Journaling for files. The 3rd entry id 'F' which means Database File member operation on file INFO and type 'JM' means Start journaling for the member.
Display Journal Entries
Journal . . . . . . : JRN0000001 Library . . . . . . : EASYCLASS1
Largest sequence number on this screen . . . . . . : 00000000000000000003
Type options, press Enter.
5=Display entire entry
Opt Sequence Code Type Object Library Job Time
1 J PR QPAD065250 7:12:55
2 D JF INFO EASYCLASS1 QPAD065250 7:32:35
3 F JM INFO EASYCLASS1 QPAD065250 7:32:36
Four basic journal entry categories have different Journal Entry Types on IBM i
The most common journal entries fall into four basic categories (J, F, R, C)
Within each category, there are several different journal entry types represented by a two-character entry code (e.g. PR, NR for journal entry J).
- J (Journal and journal receiver operations)
- PR(Previous receiver)
- NR(Next Receiver)
- F(File Operations)
- OP(File Open)
- CL(Close)
- R(Record Operations)
- UP & UB(Record Updates)
- DL(Delete)
- PT & PX(Record Written)
- C( Commitment control)
- BC(Begin commitment control)
- SC(Start a Commit Cycle)
- CM(Commit Operation)
- RB( Rollback operation)
J (Journal and journal receiver operations), PR(Previous receiver), NR(Next Receiver)
These include such things as references to the previous receiver (PR) or the next receiver (NR) in a chain.
Display Journal Entries
Journal . . . . . . : JRN0000001 Library . . . . . . : EASYCLASS1
Largest sequence number on this screen . . . . . . : 00000000000000000003
Type options, press Enter.
5=Display entire entry
Opt Sequence Code Type Object Library Job Time
1 J PR QPAD065250 7:12:55
F(File Operations) OP(File Open), CL(Close)
This category includes file opens (OP) and file closes (CL).
Run UPDDTA info command from command line.
upddta info
UPDDTA screen
WORK WITH DATA IN A FILE Mode . . . . : CHANGE
Format . . . . : RINFO File . . . . : INFO
EMPID: 1
EMPADDRESS: NOIDA
EMPAGE: 26
Take F3 to exit
End Data Entry
Number of records processed
Added . . . . . : 0
Changed . . . . : 0
Deleted . . . . : 0
Type choice, press Enter.
End data entry . . . . . . . Y Y=Yes, N=No
Code F and Type OP(File Open) and CL(File Close) entries made into journal. Run the command DSPJRN JRN0000001
Display Journal Entries
Journal . . . . . . : JRN0000001 Library . . . . . . : EASYCLASS1
Largest sequence number on this screen . . . . . . : 00000000000000000011
Type options, press Enter.
5=Display entire entry
Opt Sequence Code Type Object Library Job Time
1 J PR QPAD065250 7:12:55
2 D JF INFO EASYCLASS1 QPAD065250 7:32:35
3 F JM INFO EASYCLASS1 QPAD065250 7:32:36
4 F OP INFO EASYCLASS1 QPAD063250 6:34:53
5 F OP INFO EASYCLASS1 QPAD063250 6:34:53
6 F CL INFO EASYCLASS1 QPAD063250 6:35:40
7 F CL INFO EASYCLASS1 QPAD063250 6:35:40
R(Record Operations)
Record updates (UP), deletes (DL), and new records written (PT and PX) all fall into this category.
Run UPDDTA info command from command line to update one record.
upddta info
UPDDTA screen
WORK WITH DATA IN A FILE Mode . . . . : CHANGE
Format . . . . : RINFO File . . . . : INFO
EMPID: 1
EMPADDRESS: NOIDA
EMPAGE: 26
Change EMPADDRESS
WORK WITH DATA IN A FILE Mode . . . . : CHANGE
Format . . . . : RINFO File . . . . : INFO
EMPID: 1
EMPADDRESS: NOIDA-CHG
EMPAGE: 26
Take F3 to save and exit
End Data Entry
Number of records processed
Added . . . . . : 0
Changed . . . . : 0
Deleted . . . . : 0
Type choice, press Enter.
End data entry . . . . . . . Y Y=Yes, N=No
Code R and Type UB(Update-Before Image) and UP(Update-After Image) entries made into journal including OP and CL entries since file was opened and closed during update operation. Run the command DSPJRN JRN0000001
Display Journal Entries
Journal . . . . . . : JRN0000001 Library . . . . . . : EASYCLASS1
Largest sequence number on this screen . . . . . . : 00000000000000000024
Type options, press Enter.
5=Display entire entry
Opt Sequence Code Type Object Library Job Time
20 F OP INFO EASYCLASS1 QPAD063250 6:42:06
21 F OP INFO EASYCLASS1 QPAD063250 6:42:06
22 R UB INFO EASYCLASS1 QPAD063250 6:42:14
23 R UP INFO EASYCLASS1 QPAD063250 6:42:14
24 F CL INFO EASYCLASS1 QPAD063250 6:42:15
25 F CL INFO EASYCLASS1 QPAD063250 6:42:15
Take option 5 on UB and UP entries to see what was the before change and after change image
Before Image
Display Journal Entry
Object . . . . . . . : INFO Library . . . . . . : EASYCLASS1
Member . . . . . . . : INFO
Incomplete data . . : No Minimized entry data : *NONE
Sequence . . . . . . : 22
Code . . . . . . . . : R - Operation on specific record
Type . . . . . . . . : UB - Update, before-image
Entry specific data
Column *...+....1....+....2....+....3....+....4....+....5
00001 '1 NOIDA ?'
After Image
Display Journal Entry
Object . . . . . . . : INFO Library . . . . . . : EASYCLASS1
Member . . . . . . . : INFO
Incomplete data . . : No Minimized entry data : *NONE
Sequence . . . . . . : 23
Code . . . . . . . . : R - Operation on specific record
Type . . . . . . . . : UP - Update, after-image
Entry specific data
Column *...+....1....+....2....+....3....+....4....+....5
00001 '1 NOIDA-CHG ?'
The same way you can INSERT and DELETE records which will maded respective entries to the journal.
C( Commitment control) , BC(Begin commitment control),SC(Start a Commit Cycle),CM(Commit Operation), RB( Rollback operation)
Anything related to commitment control falls into this category. Some examples are beginning commitment control (BC), start a commit cycle (SC), commit operation (CM) and rollback operation (RB).
Journaling commands on IBM i
APYJRNCHG: Uses the journal entries to apply changes that have occurred since a database file was saved or some other specified time.
CHGJRN: Use this command to change the attributes of a journal or to attach new journal receivers to a journal.
DLTJRN: Use this command to delete a journal.
DLTJRNRCV: Use this command to delete a journal receiver.
DSPJRN: This command displays or prints the journal entries that are in the journal receivers associated with the specified journal. This command has outfile support so you can list the journal entries to a database output file for further processing or analysis.
DSPJRNRCVA: Use this command to display the attributes of a journal receiver.
ENDJRNPF: This command ends journaling for the specified physical file.
RCVJRNE: This command allows a specified user program to continuously receive journal entries one at a time as they are written to the journal. The behavior is similar to an exit program.
RMVJRNCHG: Use this command to remove changes that have occurred to a database file from a specified point in time to some previous point in time (allowed only if before-images were recorded during the time).
RTVJRNE Use this command to retrieve a journal entry and place it in CL program variables.
SNDJRNE: Use this command to write user-defined entries to a journal (i.e., journal receiver).
WRKJRN: This command displays a menu from which you can perform many journal-related functions, such as the system-assisted recovery of journaled files.
Generating Outfile for Journal Entries
Outfile support has been provided to the DSPJRN command. Therefore, whatever entries made to the journal can be taken into the outfile for further processing in the program.
Run the below command to generate outfile named JRNFILE in library QTEMP.
DSPJRN JRN(JRN0000001)
OUTPUT(*OUTFILE)
OUTFILE(EASYCLASS1/JRNFILE)
Below message will appear once the outfile is created. In my case there were 25 Journal entries available and has been exported to the outfile.
Output file JRNFILE created in library EASYCLASS1. Member JRNFILE added to output file JRNFILE in library EASYCLASS1. 25 entries converted from journal JRN0000001 in EASYCLASS1.
Display outfile records
.png)