Oracle Clusterware (RAC) Startup Procedure: Use of GPNP Profile and OLR


Oracle Clusterware (RAC) Startup Procedure

Use of GPNP Profile and OLR


Guys today's post is not MySQL but its related to Oracle Clusterware (RAC) Startup Procedure.

Till 10g it was not too difficult but starting from 11g you have possibility to store the voting disk and OCR in ASM which make it a bit difficult but no worry you will get hold of it after this post promise


Now from 11g onwords you store Voting disk and OCR in ASM since Voting disk and OCR are the primary component required to start the clusterware which further starts the clusterware resources like ASM, Listener, Database etc.

Did you notice something??   What

Which further starts the clusterware resources like ASM, what but you just told that Voting disk and OCR can be stored in ASM and clusterware starts the ASM and clusterware startup itself requires the access of Voting disk and OCR so what starts first ASM or Clusterware what the hell is going on .....I am confused......

Hold On......


Thats why you need to read this post.




What is GPNP Profile?


The GPnP profile is a XML file located at CRS_HOME/profiles/peer as profile.xml. Each node of the cluster maintains a copy of this profile locally and is maintained by ora.gpnpd (GPnP daemon) together with ora.mdnsd (mdns daemon.)

This GPNP profile (profile.xml) contains information like.

Network interfaces for public and private interconnect
ASM server parameter file,
CSS voting disks.
Clustername
Clusterid
Copy the gpnp profile to /tmp location and view it for complete content what it contains.


What is OLR?



In Oracle Clusterware 11g Release 2 an additional component related to the OCR called the Oracle Local Registry (OLR) is installed on each node in the cluster.

The OLR is a local registry for node specific resources. Location of OLR is CRS_HOME/cdata/.olr and Location of olr is stored in /etc/oracle/olr.loc

Some importent information which OLR contains

Active crs version
ORA_CRS_HOME
GPnP details
OCR latest backup time and location etc.

This is the first file red to obtain the information to start the CRS stack


Initialization and Startup of Clusterware.



Now that we have idea about GPnP and OLR, we need to understand how the Clusterware uses this information to start.

From 11g Release 2 you can store the OCR and Voting disk in ASM, but clusterware needs OCR and Voting disk to start crsd & cssd and both these files are if in ASM which itself is a resource for the node. So how does the clusterware starts, which files it accesses to get the information needed to start clusterware, to resolve this deadlock ( pahle tum pahle tum...) of CRS and ASM Startup, Oracle came up with two local operating system files OLR & GPnP.


When a node of an Oracle Clusterware cluster restarts, OHASD is started by platform-specific means eg /etc/inittab.

OHASD has access to OLR (oracle local registry). OHASD then reads the OLR content and initialize accordingly.

OHASD brings up GPnP (ora.gpnpd)Daemon and CSS (ora.cssd) Daemon.

CSS Daemon has access to the GPNP Profile stored on the local file system. I even found a copy of GPNP Profile directly stored  in OLR (in Oracle 12c release 2)

The Voting Files locations on ASM Disks are accessed by CSSD with well-known pointers in the ASM Disk headers and CSSD is able to complete initialization and start or join an existing cluster.

OHASD starts an ASM instance. The ASM instance uses special code to locate the contents of the ASM SPFILE, if it is stored in a Diskgroup.

With an ASM instance operating and its Diskgroups mounted, access to Clusterware’s OCR is available to CRS.

OHASD then starts CRSD (ora.crsd)damon with access to the OCR in an ASM Diskgroup.

And thus Clusterware completes initialization and brings up other cluster managed resources defined in OCR.

Below you can find the simplified clusterware Process Startup flow. The Chart has been taken from

http://dbaquest.blogspot.de/2014/02/rac-11gr2-clusterware-startup-sequence.html

Clusterware Process Startup Workflow

Have fun with Oracle HA. And Enjoy learning.

Please feel free to provide your comments and suggestions

Please also any corrections or better explanations are most welcomed.






21 comments:

  1. Hi Anand, How do you identify the orarootagent and oraagent started by OHASD and CRSD?

    [grid@localhost]$ ps -ef|grep oraagent
    grid 1588 1 0 2018 ? 05:42:51 /u01/app/11.2.0/grid/bin/oraagent.bin
    grid 49033 1 0 2018 ? 07:05:18 /u01/app/11.2.0/grid/bin/oraagent.bin
    [grid@localhost]$ ps -ef|grep orarootagent
    root 1592 1 1 2018 ? 20:25:55 /u01/app/11.2.0/grid/bin/orarootagent.bin
    root 48956 1 0 2018 ? 12:47:05 /u01/app/11.2.0/grid/bin/orarootagent.bin
    [grid@localhost]$

    Thanks,
    Rijesh

    ReplyDelete
    Replies
    1. Hi Rijesh,
      Since I have destroyed the setup I have no logs available, however you can check the ohasd.trc log and you will find the evidence.
      To find out more interesting posts you can checkout https://onlinedbalearning.blogspot.com/

      Delete
  2. Also, if the voting files are stored on NFS (in 11gR2 you can have them on NFS as well), then how does GpNP profile helps to identify the voting files? In case of ASM, it is true, we do have the ASM disk string in GpNP profile.

    Thanks,
    Rijesh

    ReplyDelete
    Replies
    1. Hi Rijesh,
      If you are not storing OCR+VOTING DISK in ASM oracle can access these files using the /etc/oracle/ocr.loc file.
      OLR and GPnP is not required in that case. Just think oracle 10g RAC where these (OLR and GPnP) was not there.
      To find out more interesting posts you can checkout https://onlinedbalearning.blogspot.com

      Delete
  3. Interesting ...Very clear and easy to understand RAC clusterware startup sequence. Thanks for sharing.

    ReplyDelete
  4. Hi, I read your whole blog. This is very nice. Good to know about the career in qa automation is broad in future. We are also providing various Oracle DBA & RAC Training, anyone interested can Oracle DBA & RAC Training for making their career in this field .

    ReplyDelete