Friday, February 25, 2022

Oracle RAC Deployment Options on The Cloud

 Before you read this article, please pay attention to Oracle's support policy (DocID 2688277.1which clearly mentions in the last paragraph that;
Oracle does not support Oracle RAC or Oracle RAC One Node running on Non-Oracle Public Cloud Environments.

I thought to start the article mentioning that policy to save the reader's time! As that statement has cut off my plans to consider deploying Oracle RAC on other cloud vendors for many projects!
From my point of view, the deployment of Oracle RAC on non Oracle Cloud still an option; if you don't have an Oracle support or either you don't bother about it, or in case you want to build test environments.

 Now let's move to the available options in the cloud to deploy Oracle RAC

Oracle Cloud OCI: [Supported by Oracle]

Database cloud Service on Virtual Machines (Maximum 2 Nodes)
Exadata Cloud Service ExaCS (Maximum 2 Nodes for Quarter RACK, 4 Nodes for Half RACK and 8 Nodes for Full RACK)
Autonomous Database on Exadata Infrastructure (By default all Autonomous Database whether their type is [Dedicated or Shared] are built over RAC)

Microsoft Azure: [Not supported by Oracle]

- Azure IaaS instances through FlashGrid technology.
- Azure Bare Metal
using VMWare Cloud Simple through FlashGrid technology.
- Azure Shared Disks.

Amazon Web Services AWS: [Not supported by Oracle]

- AWS Rapid Deployment Kit (RDK) which deploys RAC automatically on EC2 instances through FlashGrid.
- RAC using FlashGrid technology, where RAC nodes will be EC2 instance type + extra 1 node for FlashGrid shared storage management.

Note: FlashGrid is a 6 years old technology, it's mainly share and provision the disks as ASM disks between nodes to be ready to use for RAC, it's still not widely used by Fortune 500, but Non-Oracle Cloud vendors are heavily depend on it to share disks between cloud nodes easily.


In case you are interested in deep technical details, you can check below links in the References section.

References:

https://www.flashgrid.io/products/flashgrid-for-oracle-rac-on-azure/
https://azuremarketplace.microsoft.com/en-US/marketplace/apps/flashgrid-inc.flashgrid-skycluster
https://azure.microsoft.com/en-us/blog/announcing-the-preview-of-azure-shared-disks-for-clustered-applications/
https://support.flashgrid.io/hc/en-us/categories/1500001538041-FlashGrid-Cluster-on-AWS

Tuesday, February 22, 2022

ORA 600 [kkpo_rcinfo_defstg:objnotfound] when selecting from a table

Problem:

On a 19.5 DB, When executing a simple select statement against a table, the following internal error pops up:


Analysis:

This bug is mainly associated with the table's histograms, it's commonly happening for newly created tables, it fires when it reads histgrm$ table.
To work it around, it's recommended to gather a fresh table statistics.

SQL>  EXEC DBMS_STATS.GATHER_TABLE_STATS('PF', 'ASC_INGESTION_DATA_LOGS');

PL/SQL procedure successfully completed.

SQL>  SELECT LAST_ANALYZED ,HISTOGRAM from dba_tab_COL_STATISTICS where owner='PF' and table_name='ASC_INGESTION_DATA_LOGS';


LAST_ANALYZED         HISTOGRAM
--------------------                 ---------------
22-Feb-2022 09:55:27         NONE
22-Feb-2022 09:55:27         NONE
22-Feb-2022 09:55:27         NONE
22-Feb-2022 09:55:27         NONE
22-Feb-2022 09:55:27         NONE
22-Feb-2022 09:55:27         NONE


6 rows selected.


Solution:

I've filed bug 32827186 which is currently being worked by Oracle's development team. Until they come up with a bug fix, and as a quick workaround, you can gather fresh statistics on the underlying tables in the query as shown above.