My Oracle Support Banner

Database Hangs with High "gc freelist" wait (Doc ID 2055409.1)

Last updated on AUGUST 04, 2018

Applies to:

Oracle Database - Enterprise Edition - Version 11.2.0.3 to 12.1.0.2 [Release 11.2 to 12.1]
Information in this document applies to any platform.

Symptoms

RacOneNode database, it becomes slow to hang with many sessions waiting for "gc freelist".

ASH report covering the problem time shows very high wait for "gc freelist":

          Analysis Begin Time:   27-Aug-15 12:00:00
            Analysis End Time:   27-Aug-15 12:20:00
                 Elapsed Time:        20.0 (mins)

Top User Events                  DB/Inst: ORCL/ORCL_1  (Aug 27 12:00 to 12:20)

                                                               Avg Active
Event                               Event Class        % Event   Sessions
----------------------------------- --------------- ---------- ----------
gc freelist                         Cluster              41.37       8.61
CPU + Wait for CPU                  CPU                  18.06       3.76
db file sequential read             User I/O             12.54       2.61
read by other session               User I/O              6.45       1.34
Streams AQ: enqueue blocked on low  Queueing              3.88       0.81

Hanganalyzer trace (ORCL_1_diag_4964.trc) shows:

HANG ANALYSIS:

Chains most likely to have caused the hang:
 [a] Chain 1 Signature: 'gc freelist'<='read by other session'
     Chain 1 Signature Hash: 0xe5b3039a
 [b] Chain 2 Signature: 'gc freelist'<='enq: TM - contention'
     Chain 2 Signature Hash: 0xbe67818a
 [c] Chain 3 Signature: 'gc freelist'<='enq: TX - row lock contention'
     Chain 3 Signature Hash: 0xc6efcd59

One of the wait chain example:

-------------------------------------------------------------------------------
Chain 1:
-------------------------------------------------------------------------------
    Oracle session identified by:
    {
                instance: 1 (ORCL.ORCL_1)
                   os id: 22050
              process id: 388, oracle@ORCL-1
              session id: 645
        session serial #: 9221
    }
    is waiting for 'read by other session' with wait info:
    {
                      p1: 'file#'=0xe
                      p2: 'block#'=0xbbdb8
                      p3: 'class#'=0x1
            time in wait: 0.073371 sec
           timeout after: never
                 wait id: 13034
                blocking: 0 sessions
             current sql: INSERT INTO ......
             short stack: ksedsts()+380<-ksdxfstk()+52<-ksdxcb()+3592<-sspuser()+140<-__sighndlr()+12<-call_user_handler()+992<-sigacthandler()+104<-_syscall6()+32<-sskgpwwait()+236<-
skgpwwait()+176<-ksliwat()+1952<-kslwaitctx()+144<-kcbzwb()+1880<-kcbgtcr()+27792<-ktrget3()+752<-ktrget2()+60<-kdifxs1()+2768<-qerixtFetch()+396<-rwsfcd()+116<-qerhjFetch()+524<-
rwsfcd()+116<-qerhjFetch()+524<-rwsfcd()+116<-qerhjFetch()+524<-qerflFetch()+144<-qerflFetchOutside()+132<-rwsfcd()+116<-qerltcFetch()+964<-insexe()+784<-opiexe()+6268<-opipls()+1856<
...
    and is blocked by
 => Oracle session identified by:
    {
                instance: 1 (ORCL.ORCL_1)
                   os id: 14682
              process id: 330, oracle@ORCL-1
              session id: 1554
        session serial #: 7577
    }
    which is waiting for 'gc freelist' with wait info:
    {
            time in wait: 0.073352 sec
           timeout after: 0.126648 sec
                 wait id: 43136
                blocking: 1 session
             current sql: INSERT INTO ......
             short stack: ksedsts()+380<-ksdxfstk()+52<-ksdxcb()+3592<-sspuser()+140<-__sighndlr()+12<-call_user_handler()+992<-sigacthandler()+104<-_syscall6()+32<-sskgpwwait()+236<-
skgpwwait()+176<-ksliwat()+1952<-kslwaitctx()+144<-kcbzwb()+1880<-kcbgtcr()+27792<-ktrget3()+752<-ktrget2()+60<-kdifxs1()+2768<-qerixtFetch()+396<-rwsfcd()+116<-qerhjFetch()+524<-
rwsfcd()+116<-qerhjFetch()+524<-rwsfcd()+116<-qerhjFetch()+524<-qerflFetch()+144<-qerflFetchOutside()+132<-rwsfcd()+116<-qerltcFetch()+964<-insexe()+784<-opiexe()+6268<-opipls()+1856<
            wait history:
              * time between current wait and wait #1: 0.000092 sec
              1.       event: 'read by other session'
                 time waited: 0.400463 sec (last interval)
                 time waited: 0.801125 sec (total)




 

Cause

To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!


In this Document
Symptoms
Cause
Solution
References


My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.