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: