Contention-Related Wait Events :

It is common to see the gc cr block busy and gc current block busy wait events in Oracle RAC systems. These events occur when a consistent read or current block is needed from another instance yet it is taking some time to receive that block, and the sending of the block has been delayed by the other instance.

In the first article on wait events, we discussed on Basic on Oracle RAC wait events.:- Click here to read.

cause :In general , this type of wait events results from multiple nodes requiring read or write of the same block of data or index entries.

The requester will eventually get the block via cache fusion but it is delayed due to one of the following

  • The block was being used by another session on another instance.
  • It was delayed as the holding instance could not write the corresponding redo record immediately

1.gc current block busy

Scenario :

  1. Instance A request for a data block in current mode,it sends a request to the master instance.
  2. If master is the holder of that data block and also has already modified that block.
  3. Then master instance will keep PI[past image] block for itself. Master will also flush respective redo log to log file before sending CURRENT block to requesting instance.
  4. So , the block transfer delayed on requesting instance.

2.gc cr block busy

Implies that building of the block had to wait for an event, such as log flush sync .

Example :

  1. Instance A request for a block in CR mode, request goes to master node.
  2. If the block is undergoing changes then LMS process of master instance need to create consistent version as consistent to query SCN of the block applying undo records.
  3. But LMS process must wait for log writer to do a log flush sync event before sending the block.

Note : Log flush sync event is similar to log file sync event during commit processing.

Basic Solution to resolve above two wait events

  • Tune LGWR
  • Appropriate Application Partitioning
  • Tune N/W

3. gc buffer busy acquire:

  1. If existing GC open request originated from the local instance, then current session will wait for gc buffer busy acquire. Essentially, current process is waiting for another process in the local instance to acquire GC lock, on behalf of the local instance. Once GC lock is acquired, current process can access that buffer without additional GC processing (if the lock is acquired in a compatible mode).

4. gc buffer busy release:

  1. If existing GC open request originated from a remote instance, then current session will wait for gc buffer busy release event. In this case session is waiting for another remote session (hence another instance) to release the GC lock, so that local instance can acquire buffer.

In last article, we discussed on Load Oriented Oracle Rac Wait:- Click here to read.

Stay Tuned for more detail on Oracle RAC wait events.

Thank you for giving your valuable time to read the above information.

If you want to be updated with all our articles send us the Invitation or Follow us:

Skant Gupta’s LinkedIn: www.linkedin.com/in/skantali/

Joel Perez’s LinkedIn: Joel Perez’s Profile

Anuradha’s LinkedIn: Anuradha’s Profile

LinkedIn Group: Oracle Cloud DBAAS

Facebook Page: OracleHelp

Leave a Reply