In an Oracle Data Guard configuration, the primary and standby databases can have different configurations. It’s very common to have a smaller server for the standby database (less CPUs, less memory, etc.) and it’s quite trivial to configure. But what about RAC?
Recently I had to check different single-instance/RAC configurations in Data Guard environment. As far as I could remember, Oracle supports all combinations (where the primary can be single-instance or RAC and the standby can be single-instance or RAC). The trivial configurations are single-instance primary with single-instance standby, and RAC primary with RAC standby. A little bit less standard is a RAC primary with single-instance standby. I actually installed and managed all 3 configurations without any issue. However, I’ve never installed the last available configuration: single-instance primary with RAC standby. In this case, we wanted to convert a single-instance database to RAC, so this configuration was what we wanted to check.
Again, as far as I remembered, Oracle supports all combinations, and the 12.1 documentation confirms that. But it seemed a bit strange to be. When you convert a single-instance database to RAC you need to run catclust.sql and set some parameters, so you can’t really create a RAC standby until you do that on the single-instance primary. Then I checked the 12.2 doc, and here Oracle clearly realized that and removed the support of this strange combination. Even though in this case we have 12.1, we decided not to try it, but take the primary and convert it.
So just to sum it up:
Single-instance primary – single-instance standby -> no problem
RAC primary – single-instance standby -> no problem
RAC primary – RAC standby -> no problem
Single-instance primary – RAC standby -> not supported in 12.2, but officially supported in 12.1 (and before). I’ve never tried it and probably never will.