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.
John Watson
Oracle Certified Master DBA


We agree that our statements in page 99 is not consistent with what was released on Oracle 12cR1 . It is a common knowledge that a database instance must have access to the shared storage. However, it is not a common knowledge that 12c Beta version had another feature: I/O server instances and indirect Oracle ASM client . As per the design, with the use of I/O server instances, Oracle RAC database instances running on Leaf nodes are referred as indirect ASM client instances that get data from I/O server instances. As you might know that this book was written before Oracle publicly announced the Oracle 12cR1 RAC in late June 2013, the author had to refer to the Oracle 12c beta documents as well as the beta software as the technical base.
As you discovered, this feature was not complete in 12cR1 and dropped in Oracle 12cR1 release as a part of many changes between beta and the 12cR1 release. During the short time between Oracle 12cR1 release date and our book publication date, we did the extensive reviews on the technical details using the Oracle 12cR1 official released document . Apparently we didn't catch this feature was dropped in Oracle 12cR1 release .We apologize for not catching the change in our review . We will correct that in an errata page to be created shortly. We sincerely hope that feature will be completed in the next release of 12c.
However, I would really appreciate if you could tone down your comment tad bit. It is not the lack of knowledge as you implied, that lead to the statement, rather a later change in the software release cycle, outside the authors' control. I would appreciate if you could post a balanced view of the book. Judging the book by a paragraph is not much different from "judging the book by its covers".

Kai Yu

Senior Principal Engineer
Dell Oracle Solutions Engineering :
Specializing in Oracle RAC, Oracle VM/Cloud and Oracle E-Business Suite
My Oracle blog:
2011 Oracle Applications Users Group Innovator of the Year
2012 Oracle Excellence Award: Technologist of the Year for Cloud Architect
Oracle ACE Spotlight
Co-author of Expert Oracle RAC 12c - Apress

No problem - wording adjusted. I have to say that I was astounded when I read that paragraph, and it is good to have it cleared up.