This post is a work in progress, it will be a very long post. If you are reading this, this post is not complete.
Oracle RAC Cache Fusion – describes the processes, components and structures used read and or modify database blocks and maintain integrity of these database blocks while allowing access to any database cluster node that requests it.
Foreground process requests a database block from the database.
In a single instance environment you have a Buffer Cache memory structure inside the SGA memory structure. When a foreground process needs to read a data block Oracle first checks to see if it is already in the Buffer Cache (and not being modified by another process) and if so, reads it from there.
With RAC databases, theoretically, any database instance in the cluster (they all have their own SGA/Buffer Caches) can read data from the database disks or from any SGA in the cluster.
Each RAC DB instance “Masters” or controls and keeps track of the state of a range of all database blocks in the database. This resource master database is referred to as the Global Resource Directory and it is stored in the SGA (in memory) with the Shared Pool.
So with RAC, the first thing that is done when requesting a database block is the instance that is the Resource Master is determined.