Skip to main content

DB2 - CHECKPOINTING & RESTART

CHECKPOINTING & RESTART IN BATCH PROGRAMS IN CASE OF ABENDS


The Concept of Check pointing is to Save the data permanently in the database till the Last Checkpoint in case of an Abend in the Program after taking a Checkpoint. In the case of an abend the DBA will automatically back out (reverse) the changes made to the Database after the Checkpoint. So if we RESTART the Program after an abend, the program will use the Last Check pointing Information for restarting. There are various ways for Checkpoint/Restart.


1. With the Help of a Restart File: -


This type of Check pointing will need a Restart File. In this type, while taking each Checkpoint we will store the Checkpoint ID, with the Necessary Save Area in CC5DAP database. The Checkpoint ID will be usually the Time at which that particular Checkpoint was taken. For Restarting this type of Programs, there will be two Steps.


The first step will put the Stored CC5DAP data corresponding to the Last Checkpoint to a Restart File.

The Second Step will read this Restart File, correctly gets positioned in the Database where the Last Checkpoint was taken (for e.g.:- if it is a Sequential execution in a database), and starts Execution from that point.


2. With the Help of a BMP(Batch Message Processing) Record:-

This is the Latest Technique being used for taking Checkpoint. In this case NO Restart File or CC5 Database is required for Restarting the Program in case of an abend. It uses a BMP Record to get back all the information about the last Checkpoint.


Here the Checkpoint Id will be 8 characters (4 character Program Identification ID + Sequence Id).


For e.g.: - if your Program is BMD001CP, you can put the Program Identification ID as 'BMD1'. The

Sequence Id contains the number of the Last Checkpoint.

(e.g.:- if it is the 19th Checkpoint, Sequence ID will be 0019).


During Restart of the Program, it will automatically read the corresponding BMP Record and gets all stored information regarding the Last Checkpoint.


Comments

sanjuu said…
awesome explanation..!!!

we can implement this tech nick in program also rit...by using commit frequence..:)

Popular posts from this blog

Mainframe Written test @ Accenture

1. What r the 2 function we can get by using INSPECT verb? (c) A. file handling, error handling B. opening a file, closing a file. C. char counting, replacing. D. none of the above 2. Indicate which of the following is not true about the formal parameters in a subroutine? (c) A. every formal parameter must appear in the linkage section of the subroutine B. every formal parameter must appear in the using phrase of the procedure division header of the subroutine C. A formal parameter name can appear more than once in the using phrases of the procedure division header of the subroutine. D. A formal parameter can not be declared with value clause in a subroutine 3. What is the value of A? (B) 01 A pic 9(3). Move 100 to A. Perform 1000-para thru 1000-exit. Display the value of a=A Stop run. 1000-para. If A=100 Perform 1000-exit Else Move 150 to A End-if. Move 200 to A. 1000-exit. Exit. a.100 b.200 c.150 d. none of the above is correct. 4. What is the value of B? (A) Move 1 to A Evaluate tr

NULL VALUES and NULL INDICATORS in DB2

In DB2, the columns defined as NULL needs to be handled carefully else it will throw null exception error, in order to over come this error data type can be handled by using null indicator . NULL is stored using a special one-byte null indicator that is "attached" to every nullable column. If the column is set to NULL, then the indicator field is used to record this. Using NULL will never save space in a DB2 database design - in fact, it will always add an extra byte for every column that can be NULL. The byte is used whether or not the column is actually set to NULL. The indicator variable is transparent to an end user Consider below Table : Create Table SAMP_TAB SN CHAR (10) SNAME CHAR (10) STATUS CHAR (2) NOT NULL BY DEFAULT CITY CHAR (10) NOT NULL Note :: Unless you specify NOT NULL, the default is to allow for NULL In above table SN and SNAME columns holds null values by default, in order to handle these null variables we need to have NULL-INDICATORS declares in the Pro

How to Solve SOC7 Abend - with screen shots

Below process helps to find out the statement, caused the SOC7 error. Check the Sysout of RUNJCL . This shows the error statement and lists offset value Take the Offset Value 000003C0 Got to respective Compilation Job listing, check the sysprint Search for the offset value 0003C0 (delete +00 -- initial 3 letters of Offset value and search for it) check below 2 screen shots This Offset value is listed under line no 0045 – which refers to Move statement. Take this no. 045 and find for it in same sysprint. This points to the exact statement, caused SOC7 T his 045 pints to the Move statement 1526, this is the exact line in the program Check for the above line no. In source program . This points to the statement highlighted below . Check the statement, variable check-4, which is added to check-6. These are having different Picture clause. check-4 is alfhanumaric, holding some junk data, when this data is moved to Chcek-6 variable(of comp-3) creates SOC7 error. This is just an example to e