By Mike Dietrich-Oracle on Mar 22, 2016
One of the best things in my job:
I learn from you folks out there. Everyday.
Credits here go to Maciej Tokar who did explain the below topic to me via LinkedIn - thanks a lot, Maciej!
Locks are not being closed fast enough, resulting in gc freelist waits
You can find a reference for Global Cache Freelist in the Oracle Documentation. This issue here can or will lead to database being slow, up to complete hangs. Based on my research it looks as the issue is not related to RAC only but a general thing. In your session waits you'll spot this:
Event Event Class % Event Sessions
----------------------------------- --------------- ---------- ----------
gc freelist Cluster 41.37 8.61
This has been logged as a bugs 21352465 (public) and 18228629 (not public). It causes locks are not being closed fast enough, resulting in gc freelist waits. In conjunction the default for _gc_element_percent seemed to be too low at 120 (or 110 in 126.96.36.199).
Actually the issue can affect not only Oracle Database 188.8.131.52 but also Oracle Database 184.108.40.206 and 220.127.116.11.
See MOS Note:2055409.1 (Database Hangs with High "gc
freelist" wait ) for further details.
- Apply the patch for bug 18228629 on top of a PSU or BP where available
- See the drop-down list to the right labeled "Release" to access the correct patch for your release
- Unlike the above MOS Note states in Oracle Database 18.104.22.168 it is only available on top of the January 2016 PSU and BP and two other Exadata BPs - and on Linux only!
- Use the workaround and set _gc_element_percent = 200
- This will require an instance restart as the parameter can't be changed dynamically:
alter system set "_gc_element_percent"=200 scope=spfile;
We've had a lot of discussions about underscore parameter in the past weeks. And I'm not a big fan of underscores especially when it comes to upgrades as experiences has shown that having underscores set one day may make it hard to remove them the other day - and underscores can significantly impact the upgrade duration in a negative way.
But on the other hand, if an issue is seriously affecting many customers, and there's no patch available for your platform and environment right now, what else can one do?