In a single instance, to modify a data block, the process must modify it on the Current copy of the data block.
The same is true for RAC environments.
This involves a series of problems:
How to obtain the distribution chart of data block versions between cluster nodes?
How do I know which node has the current version?
How to complete the transfer process?
The solution to this series of problems relies on the memory fusion technology (cache fusion)
Cache fusion transmits data blocks between instances through high-speed private interconnect
This is the core mechanism of RAC. It virtualizes the SGA of all instances into a large SGA zone.
Each time different instances request the same data block, this data block needs to be transferred between instances.
In OPS of Oracle 7, this transfer is completed through a Disk, also known as "Disk-Based Ping"
That is, the first 1st instances must write the data block back to the disk, and then the first 2nd instances can read the data block from the disk.
This data transmission relies on disks, which greatly affects system performance.
Introducing "Net-Based Ping" in Oracle 8i and passing data blocks through Private Interconnect
However, 8i can only pass unmodified data blocks. For "Dirty blocks", they must still be transmitted through disks. This is the same as OPS.
In the cache fusion of Oracle 9i, all data blocks, whether modified or not, can be transmitted through Private Interconnect.
System systems can be greatly improved
In cache fusion, each data block is mapped into a cache fusion resource, or a PCM resource.
A pcm resource is actually a data structure. The Resource Name Is DBA (data block address)
The data requests of each process are completed step by step:
① Convert DBA to PCM Resource Name
② Submit the PCM resource request to DLM (Distributed Lock Manager)
③ DLM applies for and releases Global locks. Only when the process receives PCM locks can it proceed to the next step.
That is, the instance must first obtain the right to use data blocks.
Cache fusion consists of two services: GCS and GES.
(1) The GCS Service is responsible for transferring data blocks between instances.
Completed by the background process LMSn
(2) The GES Service is responsible for Lock management.
Coordinates the access sequence of data blocks among multiple instances to ensure consistent data access.
Completed by the background process LMD