Re: Basic question about internal process flow in Oracle 11g R2 rac enviroment

  • From: Hans Forbrich <fuzzy.graybeard@xxxxxxxxx>
  • To: oracle-l@xxxxxxxxxxxxx
  • Date: Mon, 18 Jan 2016 13:58:35 -0700

On 18/01/2016 9:13 AM, Sandip Mukhopadhyay wrote:

Hi All,

I am posting a basic question of internal process flow in a 2 node 11g r2 rac environment(ASM is obvious storage here),suppose a user has entered below SQL from his Client terminal
select * from tab

What is the internal process flow i.e how data is fetched and provided to the user .

This is truly the longest and most involved topic and THE reason why Oracle RAC is 1) useful, 2) reliable, 3) and extra cost. To get the details, you want to take the Oracle University course on RAC, and/or read the APress Oracle RAC 11g book, or a number of other reliable books on the topic.

I assume you have a good and complete understanding how Oracle's single node parses an SQL statement, figures out which blocks it needs, interrupts to push those blocks into SGA from disk, etc.

Ultra-simplified, and therefore missing some important details, and not reflecting any of the many optimizations under the covers:

- in RAC, every block has a defined 'state owner' - one node that always knows the state (and location) of that block
    - the state owner can be derived by an easy algorithm
- the block state info is allocated when a node joins or leaves the cluster
- when a database operation occurs, the server process (client's proxy) knows which blocks it needs
- the server process basically asks the state owner what the state is for each block it wants to use
    - this is done on the RAC interconnect network
- the state owner basically responds with one of
    - it is on disk, get it from there
    - it is on node X, ask him
- that node might be willing to send the block via network to the server process
- when a node gets a block *for update*, it tells the state owner where the block is and how it's being used

The above is basically interjected where, in a single node, the server process would simply get the block from disk.

More depth (and accuracy) than that is worthy of many, many hours of discussion.

/Hans
Disclaimer: The opinions and mistakes I post are my own, not those of my employer.
--
//www.freelists.org/webpage/oracle-l


Other related posts: