in Databases recategorized by
9 votes
9 votes

Suppose a database system crashes again while recovering from a previous crash. Assume checkpointing is not done by the database either during the transactions or during recovery.

Which of the following statements is/are correct?

  1. The same undo and redo list will be used while recovering again 
  2. The system cannot recover any further
  3. All the transactions that are already undone and redone will not be recovered again 
  4. The database will become inconsistent
in Databases recategorized by

1 comment

Assuming undo/redo list are persistent, the answer should be A. while undo/redo system records any changes done. so if the system crashes during recovery, the next recovery will take DB into a consistent state

2 Answers

6 votes
6 votes
Best answer

Answer: A

Ideation/Source of the content: Navathe 6th Edition, 22.1: Recovery Concepts


Support for option A and against option C: Since check-pointing is not used we have to depend on the system logs. Let's suppose we have three transactions A, B and C. Also assume that transaction A and C commits before failure and B was started but the system crashed before it can commit. So, in the first recovery process database will redo A and C as per the system logs. Now consider that while redoing A successfully commits, the system crashed for the second time before the B can commit. So, while recovering for the second time the same system logs will be used. However, it is should be noted that the system logs will also have entry to redo transaction A since it was committed after the first failure. However, the undo/redo operations are idempotent (they are the same no matter how many time they are executed).

Against option B: If the system crashes again same logic as above can be used for recovery.

Against option D: Inconsistency refers to situations (generally) when the value of a shared variable varies in two or more transactions, but that doesn’t seem to happen here as no uncommitted transaction’s data is being read/written during the entire recovery process.

Conclusion: So, the only option of selecting the same list for undo/redo seems to be correct.

selected by
0 votes
0 votes
Answer A,C A is trival to answer as that is recovery property

Why C if we look into statement let say we have set of transaction in DBMS , while recovery again the redo and undo transactions won't be recovered because of the data be Stored in stable storage . Note: system will assume if it is being undone or redone need not to recovered further .hence not recovered from previously redo and undo. It sounds contradiction but yeah it implies this only .


edited by

see fist of all it won’t be inconsistent as pointed by @Aman Juyal,it%20is%20subject%20to%20updates.

see the definiton of inconsistency
so option D is clearly wrong

now  why not option C

option c states  :

:all  the transactions that were undone and redone   will not be recovered again  ,that’s false we have to  recover them ,as no checkpointing is present  ,so they are not stored in any stable storage as said by @PAndurangaVitthal.We have to redo  all committed trans and undo all non committed trans.

if checkpoint was present , redoning alll committed transactions before checkpointing was not needed .

so option C wrong .

Now why option A is correct :

in log files operations are idempotent , doing undo  redo multiple times yileds the same results,so even  if N no of crashes happens we will use the same undo and redo list.


and ofcourse B is  wrong

Thanks, my concept are weak I guess ,this is what one's  argue when he don't know concept . Btw how much you are getting??
Also for the record for the record. Checkpoint is a record on the system logs (which are default to the Databases). Until it's mentioned we can’t assume that check pointing is used.

Related questions