A very common question that we get from our clients is the differentiation between the clustering architectures of Oracle vs SQL Server. Many shops are familiar with only one and when they implement the other RDBMS, the behavior is very different and to some it comes as a surprise
SQL Server supports shared nothing architecture i.e. at any given point of time, among the nodes of a cluster only one of the nodes will have ownership of the databases and hence access to the shared resources i.e. clustering in the case of SQL Server is not for load balancing – it is only for failover and high availability unlike Oracle-RAC which deploys a shared-everything architecture i.e. multiple nodes access the shared resources at the same time and hence provide load-balancing, failover and high availability.
Active-Active clustering in the case of SQL Server means that you have 2 sets of Active/Passive clusters i.e. say you have 2 machines(nodes) and the external storage is on the SAN, then you have this configuration:
Machine 1 Machine2
Active Node 1 Passive Node 1
Passive Node 2 Active Node 2
|———————————————-|
| STORAGE |
|———————————————-|
So, an OLTP application can be put on say Cluster1 and the node on machine one shares all the shared resources. Another application like say JD Edwards is also being run and this is on node 2 and the node on Machine2 owns the shared resources and is the active node while the Node on Machine 1 becomes passive node.
Having such a configuration ensures that no machine is sitting idle and that the hardware is getting utilized properly. Proper care needs to be taken though when sizing the hardware such that in the event of a failover of one of the nodes, the other machine can host both the nodes and thus processor and memory needs to be sized accordingly.
It does not provide horizontal scalability like RAC does (RAC – Real Application Clusters in Oracle has a very different architecture and we are writing a whitepaper on that which will soon be put on our site)- and the reason is that it is a shared nothing architecture. Horizontal scalability can be achieved through different means though like DPVs implementation & a proper failover scheme but requires changes to the application as well.
I hope this helps explain this difference a bit…

