Database Reference
In-Depth Information
Top 5 Timed Foreground Events
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Avg
wait % DB
Event Waits Time(s) (ms) time Wait Class
------------------------------ ------------ ----------- ------ ------ ----------
log file sync 2,054 23,720 11548 45.8 Commit
gc buffer busy acquire 19,505 10,382 532 20.0 Cluster
gc cr block busy 5,407 4,655 861 9.0 Cluster
enq: SQ - contention 140 3,432 24514 6.6 Configurat
db file sequential read 38,062 1,305 34 2.5 User I/O
To troubleshoot gc buffer busy wait events, initially review events suffered by the background processes. In many
production problems, slowness in the database background processes is the root cause of gc buffer busy event waits. It
is also important to understand the difference between gc buffer busy acquire and gc buffer busy release wait
events. The following output from v$session_wait view differentiates these two events nicely:
1.
Notice that session 53 is waiting to access the block with file_id=10 and block_id=560651
and that session is currently waiting for gc current request event (a placeholder wait
event as discussed).
2.
Session 47 connected to instance 2 is waiting for log file sync event. LMS process is also
waiting for log file sync wait event (not shown in the output, though).
3.
In instance 1, all other sessions trying to access that block with file_id=10 and
block_id=560651 are waiting for gc buffer busy acquire wait event.
4.
Meanwhile, sessions connected to instance 2, which are trying to access that block, are
waiting for gc buffer busy release wait event.
INST_ID SID EVENT STATE WIS P1_P2_P3_TEXT
------- ------ ---------------------------- ------- ----- -------------------------------
1 53 gc current request WAITING 26 file# 10-block# 560651-...
1 40 gc buffer busy acquire WAITING 26 file# 10-block# 560651-class# 1
1 60 gc buffer busy acquire WAITING 26 file# 10-block# 560651-class# 1
1 59 gc buffer busy acquire WAITING 26 file# 10-block# 560651-class# 1
1 58 gc buffer busy acquire WAITING 26 file# 10-block# 560651-class# 1
...
2 1 gc buffer busy release WAITING 1 file# 10-block# 560651-class# 1
2 68 gc buffer busy release WAITING 1 file# 10-block# 560651-class# 1
2 65 gc buffer busy release WAITING 0 file# 10-block# 560651-class# 1
...
2 47 log file sync WAITING 22 buffer# 4450-sync scn 30839721-
2 43 gc buffer busy release WAITING 1 file# 10-block# 560651-class# 1
2 36 gc buffer busy release WAITING 0 file# 10-block# 560651-class# 1
...
Essentially, sessions connected to instance 1 are waiting for the global cache locks to be acquired by instance 1,
and so they account wait time to event gc buffer busy acquire . Sessions connected to instance 2 are waiting for
instance 1 to release the gc lock, and so time is accounted to gc buffer busy release event. As global cache BL
locks are considered to be owned by an instance, not by an individual session, in this example, sessions connected
to instance 1 are waiting for instance 1 to acquire the gc lock, and sessions connected to instance 2 are waiting for
instance 1 to release the gc lock.
Search WWH ::




Custom Search