ODC Appreciation Day 2017: Crash Recovery
Today this blog post will be my contribution to Oracle Developer Community ODC Appreciation Day (#ThanksODC). This is an idea that started in 2016 by Tim Hall (aka oracle-base). More information about it can be found on his blog. Last year it was using the old OTN name but as you can see that name has changed now to ODC. You can read my 2016 contribution here.
The one feature that I feel that all DBAs, Developers, etc should be grateful for but we probably take for granted in the Oracle database is Crash Recovery. When does crash recovery happen? After an instance (or server) crash or after issuing a SHUTDOWN ABORT command. This automatic (autonomous?) recovery process has saved many a databases.
A long time ago, when I was first starting out as a DBA, I had a non-production database on a Windows NT server. Whenever someone needed to restart the server we would just do it with the false pretense that the Oracle service would stop the instance gracefully. Boy was I wrong! It wasn’t until one day when I was checking the alert log that I saw crash recovery messages and thought…hmm…this is a bit odd. I realized my mistake right away and setup the instance to shutdown gracefully if the server ever needed to restart.
Are you curious if your sandbox database, that you don’t care much about, has had a crash recovery happen? No problem go fetch the database alert log and comb through it. You’ll probably see an entry that looks like this:
Beginning crash recovery of 1 threads parallel recovery started with 3 processes Started redo scan Completed redo scan read 133 KB redo, 50 data blocks need recovery Started redo application at Thread 1: logseq 55, block 7054 Recovery of Online Redo Log: Thread 1 Group 1 Seq 55 Reading mem 0 Mem# 0: C:\APP\ORACLE\ORADATA\ORCL\REDO01.LOG Completed redo application of 0.09MB Completed crash recovery at Thread 1: logseq 55, block 7321, scn 896284 50 data blocks read, 50 data blocks written, 133 redo k-bytes read Thread 1 advanced to log sequence 56 (thread open) Thread 1 opened at log sequence 56 Current log# 2 seq# 56 mem# 0: C:\APP\ORACLE\ORADATA\ORCL\REDO02.LOG Successful open of redo thread 1