Oracle can run in a cluster, also called Oracle RAC (real application cluster - what's in a name that they need to call it a REAL cluster...). This means that at any time a machine in the cluster can be removed from the cluster, and hence all connections to it dropped. This, of course, does not give high availability... which is one of the reasons we actually have a cluster in the first place.
Oracle, in all its wisdom, considered this an let the client-side oracle driver detect this and throw an exception, which then needs to be caught and handled, and by handling it the action can be redone.
Of course, this means having a transaction being rolled back (because really, we're talking oracle and that means enterprisey), and we would want to redo that transaction.
To make this easy, the spring-data jdbc extensions has a rac failover interceptor which does this for you.
It wires itself to all transactional annotated methods, and retries a number of times.
Of course, we can also do it manually. It's all explained at the documentation.
Oracle, in all its wisdom, considered this an let the client-side oracle driver detect this and throw an exception, which then needs to be caught and handled, and by handling it the action can be redone.
Of course, this means having a transaction being rolled back (because really, we're talking oracle and that means enterprisey), and we would want to redo that transaction.
To make this easy, the spring-data jdbc extensions has a rac failover interceptor which does this for you.
It wires itself to all transactional annotated methods, and retries a number of times.
Of course, we can also do it manually. It's all explained at the documentation.
Reacties
Een reactie posten