Read consistency with RAC
High-end systems often use Oracle RAC as their backend. It is certainly powerful, but also a bit complex and (as usual) it pays to know what knobs to turn. One parameter in particular has caused me some grief:
max_commit_propagation_delay, which defaults to 7 seconds. The good news is that it was deprecated in 10gR2 in favour of
_immediate_commit_propagation, which defaults to true.
I have no practical experience with the new option, but the old one determines how transactions committed on one instance are propagated to the others. If it is given a non-zero value that basically means that it is acceptable with a short delay before a commit is globally visible. For a busy multi-threaded application working with a load-balancing connection pool that can spell disaster. The default value of 7 seconds is an eternity in such an application. Even a human user that saves a record and then tries to find it again can run into problems if the two operations are sent to different instances.
Setting the parameter to zero affects performance and the cost increases with the number of instances. Still, correctness is usually not optional, so if you are using Oracle RAC with an old database version be sure to check the parameter and make an informed decision. Some applications can live with delayed propagation, but most probably require a commit to be global.