Oracle RAC – What causes a gcs log flush sync event?

Oracle RAC tracks wait time as a “gcs log flush sync” when a foreground process on one instance requests a block from another Oracle RAC instance that has uncommitted changes in the block requested – if those changes have not already been flushed to the local redo log.
This will also occur if a block is used in a CR (consistent read) fabrication and that block has not been flushed to redo.  There is a hidden parameter to turn off this behavior (not suggested) “_cr_server_log_flush=false”
Example:
Instance 1 requests a block, instance 2 is the resource master for that block and determines block requested has changes in it that have not yet been flushed to instance 2’s redo log.  As a result, LMS on instance 2 sends flush message to instance 2 lgwr which forces the redo log flush.  LMS on instance 2 then sends the requested block to instance one via a message on the interconnect.

set linesize 180
set pagesize 200
col BEGIN_INTERVAL_TIME format A30
col instance_number format 99 head Inst
break on BEGIN_INTERVAL_TIME
/*
define event_name=”gcs log flush sync”
define event_name=”log file sync”
*/
select snaps.begin_interval_time, snaps.instance_number,snaps.snap_id,hist.event_name , hist.wait_time_milli, hist.wait_count
from dba_hist_event_histogram hist, dba_hist_snapshot snaps
where snaps.snap_id = hist.snap_id and snaps.instance_number = hist.instance_number and
snaps.begin_interval_time > sysdate – 1/24 — from the last hour
AND hist.event_name = lower (‘&&event_name’)
order by snaps.snap_id , snaps.instance_number, wait_time_milli;

Scroll to Top