Skip to Main Content
  • Questions
  • How to allow in-progress client work survive database corruptions that don't require a database restart.

Breadcrumb

Question and Answer

Connor McDonald

Thanks for the question, John.

Asked: January 13, 2021 - 3:17 pm UTC

Last updated: January 18, 2021 - 2:49 am UTC

Version: 19c

Viewed 100+ times

You Asked

Good Morning,

It seems like no time is spent during development efforts to assure that an application is able to survive database corruptions that don't require a database restart like say a datafile corruption or even a block corruption. If a corruption of a datafile occurs, for instance, the DBA can restore and recover the datafile, but I don't think the clients or patch processes using the application that access the corrupt datafile will survive the operation and/or the 15-60 minutes it may take to recover.

I would assume that the application developers would need to do additional work on their end to even have a chance. Is there any Oracle documentation or a book that you can point me to that an organization can use to make their applications bullet proof against database corruptions that don't require shutting down the database? I would hate to have to try to reinvent this wheel by figuring out all possible Oracle error codes, timeout settings, etc. since it seems like this is something that should be done by lots of application development efforts, but my guess is that 98%+ of the time, nothing is done to try to have in-progress client work survive database corruptions that don't require a database restart.

Thank you

and we said...

With a database corruption (unless it is servere) then a client should work without any issues as long as it is not hitting the corrupted data. If it *is* hitting it, then really there isn't any mechanism to work around that, because that data is not available.

I'm not convinced it would be a smart move for a client to then wait for the issue to be resolved because typically a data corruption or similar needs minutes (or hours) to resolve. Client programs typically expect responses in seconds.

If there is a problem with an entire *instance*, then we have our standard client failover mechanisms for that.

Product Manager Ludovico Caldara has some nice presentations on that

https://www.slideshare.net/ludovicocaldara/oracle-drivers-configuration-for-high-availability

https://www.slideshare.net/ludovicocaldara/oracle-client-failover-under-the-hood

More to Explore

Administration

Need more information on Administration? Check out the Administrators guide for the Oracle Database