Ads

Showing posts with label DB RECOVERY - PAGE LEVEL. Show all posts
Showing posts with label DB RECOVERY - PAGE LEVEL. Show all posts

22 February 2012

DB RECOVERY - PAGE LEVEL




STEP 1 - Check Database For corruption




We can check database integrity by using DBCC CHECKDB command, to see weather there is corruption in database of not.







Looking at error message, we can clearly identify that there is corruption on page 223 as we can see this message. Object ID 2105058535, index ID 2, partition ID 72057594038910976, alloc unit ID 72057594039828480 (type In-row data): Page (1:223) could not be processed.



STEP 2 – Restore faulty page from a GOOD Backup – PAGE Level Database Restore



Now we need to restore faulty pages from a SQL Server backup, that means restore only faulty pages. This is a new feature in SQL Server 2008, where we can restore only some corrupted pages from a good database backup.



For example you have a 100 Gb database and only 1 page is corrupted than we can save recovery time by restoring a single page instead of a 100 GB database.



SQL Command to perform a page level restore



use master

go

RESTORE DATABASE DBA PAGE = '1:223' FROM DISK = 'C:\temp\DBA_before_curruption.bak';

goSTEP 3 – Backup and Restore Current TRANSACTION LOG Backup



If you read the restore informational messages, which we received in last step states that there is difference between the LSN number.



Processed 1 pages for database ‘DBA’, file ‘DBA’ on file 1.



The roll forward start point is now at log sequence number (LSN) 43000000055600001. Additional roll forward past LSN 43000000058400001 is required to complete the restore sequence.



RESTORE DATABASE … FILE= successfully processed 1 pages in 0.098 seconds (0.079 MB/sec).



To correct this LSN number, we need to backup the current log and restore in a current database, using the following syntax.



use DBA

BACKUP LOG DBA TO DISK = 'C:\DBA_log.bak' WITH INIT;

GO



use master

GO

RESTORE LOG DBA FROM DISK = 'C:\DBA_log.bak';This is going to be pretty quick as only page level transactions will be rolled back or rolled forward, you can see that in message where backup log size was in MB’s but restore was kind of ZERO only.



Processed 5 pages for database ‘DBA’, file ‘DBA_log’ on file 1.



BACKUP LOG successfully processed 5 pages in 0.020 seconds (1.684 MB/sec).



Processed 0 pages for database ‘DBA’, file ‘DBA’ on file 1.



RESTORE LOG successfully processed 0 pages in 0.006 seconds (0.000 MB/sec).











STEP 4 – Verify corruption has been resolved and data is consistent



Re-execute DBCC CHECKDB to ensure and verify that corruption has been removed and database is health now.



OPTION 2 – The corruption example, which I took was of Index and I want to make you understand how page level restore works, if you are looking for a solution to a exact problem, which I demonstrated, can be resolved by rebuilding a non clustered index, as can afford to rebuild index which doesn’t;t result any data loss.

 


DB RECOVERY - PAGE LEVEL