Oracle 12c new feature: Flex Clusters, what they are (and what they are not)
I have seen articles that misrepresent a Flex Cluster, even this book Expert Oracle RAC 12c which is written by people who know better (Oracle ACE directors, an OCM, an Oak Table member) gets it wrong, because of a reliance on beta documentation.
A Flex Cluster has hub nodes and leaf nodes. A hub node is the cluster node we all know: it mounts the shared storage, it is attached to the cluster interconnect, it may or may not run database instances, it runs an ASM instance. A leaf node does not mount the shared strage, and therefore it cannot run ASM or a database instance. It is however attached to the interconnect and is part of the cluster. It does run Grid Infrastructure.
The problem is that people think leaf nodes can run database instances. From that book I referenced above:
Oracle RAC database instance can also run on Leaf nodes. Since these Leaf nodes do not have direct access to the shared storage, the RAC database instances on the Leaf nodes will need to get the database through the Hub nodes.
Wrong! The authors have explained that this statement was based on incorrect information in pre-release versions of the docs, but unfortunately it is out there in public and believed by readers. It is impossible for a database instance to run on a machine that has no access to the shared discs. How would a session server process read files from a disc mounted on another machine? How would the DBWn and the LGWR write to them? The Oracle docs Clusterware Admin and Deployment Guide describe it like this:
Hub Nodes are similar to Oracle Grid Infrastructure nodes in an Oracle Clusterware standard Cluster configuration: they are tightly connected, and have direct access to shared storage. In an Oracle Flex Cluster configuration, shared storage can be provisioned to leaf nodes independent of the Oracle Grid Infrastructure.
Leaf Nodes are different from standard Oracle Grid Infrastructure nodes, in that they do not require direct access to shared storage, but instead request data through Hub Nodes. Hub Nodes can run in an Oracle Flex Cluster configuration without having any Leaf Nodes as cluster member nodes, but Leaf Nodes must be members of a cluster that includes at least one Hub Node.
This description does not make it clear what the applications are that run on the leaf nodes and "request data through Hub Nodes", but they are certainly not database instances. What they are is your application severs. The topology could be that your database instances run on the hubs, your WebLogic instances run on the leaves, and Grid Infrastructure takes care of fault tolerance for both. If all the nodes are in fact connected to the shared storage, than GI can take this a step further: it can change a node's role from hub to leaf and vice versa, starting appropriate services, in response to priorities and server availability.
I think the confusion comes from the fact that you can also deploy Flex ASM. Flex ASM means that you do not need to run an ASM instance on every hub node. Database instances on the hub nodes can connect to any ASM instance (by default, there will be three) using TCP, they are not restricted (as in earlier releases) to using IPC to connect to a local ASM instance. But just because file extent maps can now be served by remote ASM instances, does not mean that a database instance can run on a leaf and read blocks from a disc on a hub. That is impossible.
Overall, Flex Clusters enhance the ability of Grid Infrastructure to manage the complete server environment: application servers as well as database servers. But at any given moment one node is either a hub or leaf, and these roles have very different functions and capabilities.
Oracle Certified Master DBA