views:

162

answers:

1

I have an application running on Oracle 10g using Hibernate. I am wondering if it is possible to make the application highly available with respect to database failures without any code changes on the application side, using Oracle RAC.

I have two Oracle RAC nodes for the application, and ideally would like to be able to pull the plug on one of the nodes and have the application continue to run, without any exceptions reaching the application code.

My application sends select, insert, update and delete queries to the database.

I have been reading about Transparent Application Failover, but the sites I have found imply that only select queries can be failed over transparently, and that all other types of queries will result in exceptions being thrown and the query having to be re-executed. I would rather avoid this as I do not want to add extra exception handling to every part of my code base which makes database queries.

+2  A: 

Sorry, but not really. You're looking at Transparent Application Failover (TAF) and Oracle doesn't currently support TAF for anything but SELECT statements. DML will need to be restarted. Take a look at this article for a good explanation of what RAC (and TAF) can do for you.

No matter what, you're going to need to be able to handle transaction failures. That's a big reason why we have transactions... so we can handle things failing gracefully. Realize, as well, that hardware failure (what RAC protects you against) is only one of a myriad of reasons a transaction may fail.

Good luck, happy coding!

Rob