Oracle数据库大量library cache: mutex X及latch: shared pool问题排查一例

Posted lYong90

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle数据库大量library cache: mutex X及latch: shared pool问题排查一例相关的知识,希望对你有一定的参考价值。

业务系统数据库夯住,数据库内大量的library cache: mutex X及latch: shared pool等待,alert日志信息如下

Tue Sep 26 22:10:04 2017
WARNING: inbound connection timed out (ORA-3136)
Tue Sep 26 22:10:04 2017
WARNING: inbound connection timed out (ORA-3136)
Tue Sep 26 22:10:04 2017
WARNING: inbound connection timed out (ORA-3136)
Tue Sep 26 22:10:04 2017
WARNING: inbound connection timed out (ORA-3136)

数据库历史session统计如下

201709262207                                              352 latch: shared pool                    180
201709262207                                                  library cache: mutex X                 60
201709262207                                              476 library cache: mutex X                 60
201709262207                   6hurnha5k9qb6              352 latch: shared pool                     60
201709262207                                                  latch: shared pool                     60
201709262207                   0rs4yunhszr7w              352 latch: shared pool                     60
201709262207                   b7fy2a0snpja9              476 library cache: mutex X                 60
201709262208                                                  null event                            300
201709262208                                              352 latch: shared pool                    180
201709262208                   0rs4yunhszr7w              352 latch: shared pool                     60
201709262208                                              476 library cache: mutex X                 60
201709262208                   6hurnha5k9qb6              352 latch: shared pool                     60
201709262208                   b7fy2a0snpja9              476 library cache: mutex X                 60
201709262208                                                  latch: shared pool                     60
201709262208                                                  library cache: mutex X                 60
201709262209                                                  null event                            326
201709262209                                              352 latch: shared pool                    180
201709262209                                                  latch: shared pool                     60
201709262209                   0rs4yunhszr7w              352 latch: shared pool                     60
201709262209                   b7fy2a0snpja9              476 library cache: mutex X                 60
201709262209                   6hurnha5k9qb6              352 latch: shared pool                     60
201709262209                                                  library cache: mutex X                 60
201709262209                                              476 library cache: mutex X                 60

阻塞会话明细

SQL>  select event,sql_id,USER_ID,program   from gV$active_session_history a where INST_ID=1 and SESSION_ID=476  and to_char(a.sample_time, yyyymmddHH24mi)=201709262203;
latch: shared pool             6hurnha5k9qb6          0 [email protected]39 (J002)
latch: shared pool             6hurnha5k9qb6          0 [email protected]39 (J002)
latch: shared pool             6hurnha5k9qb6          0 [email protected]39 (J002)
latch: shared pool             6hurnha5k9qb6          0 [email protected]39 (J002)
latch: shared pool             6hurnha5k9qb6          0 [email protected]39 (J002)
latch: shared pool             6hurnha5k9qb6          0 [email protected]39 (J002)
latch: shared pool             6hurnha5k9qb6          0 [email protected]39 (J002)
latch: shared pool             6hurnha5k9qb6          0 [email protected]39 (J002)
latch: shared pool             6hurnha5k9qb6          0 [email protected]39 (J002)
 
SQL>  select event,sql_id,USER_ID,program   from gV$active_session_history a where INST_ID=1 and SESSION_ID=352and to_char(a.sample_time, yyyymmddHH24mi)=201709262203;
EVENT                          SQL_ID           USER_ID PROGRAM
------------------------------ ------------- ---------- ------------------------------------------------
                                                      0 [email protected]39 (MMAN)
                                                      0 [email protected]39 (MMAN)
                                                      0 [email protected]39 (MMAN)
                                                      0 [email protected]39 (MMAN)
                                                      0 [email protected]39 (MMAN)
                                                      0 [email protected]39 (MMAN)
                                                      0 [email protected]39 (MMAN)
                                                      0 [email protected]39 (MMAN)
                                                      0 [email protected]39 (MMAN)
                                                      0 [email protected]39 (MMAN)
                                                      0 [email protected]39 (MMAN)
                                                      0 [email protected]39 (MMAN)

MMAN进程是Oracle 10g引入用于进行内存管理的进程,在进行动态内存调整时,这个进程要发挥其作用,这个进程的作用是内部数据库任务的执行者:MMAN is used for internal database tasks.
MMAN to wait and post itself for satisfying an auto-tuned memory request while trying to fully free a component‘s quiesced granules. In Release 10.1, the name of this event was ‘wait for SGA component shrink‘.
在后台转储跟踪,可以看到MMAN进程的等待:

WAIT #0: nam=SGA: MMAN sleep for component shrink ela= 10045 component id=6 current size=8 target size=7 obj#=-1 tim=9815936073
WAIT #0: nam=SGA: MMAN sleep for component shrink ela= 10581 component id=6 current size=8 target size=7 obj#=-1 tim=9815946809
WAIT #0: nam=SGA: MMAN sleep for component shrink ela= 10541 component id=6 current size=8 target size=7 obj#=-1 tim=9815957544
WAIT #0: nam=SGA: MMAN sleep for component shrink ela= 10655 component id=6 current size=8 target size=7 obj#=-1 tim=9815968290
WAIT #0: nam=SGA: MMAN sleep for component shrink ela= 10649 component id=6 current size=8 target size=7 obj#=-1 tim=9815979031

查询数据库最近内存调整记录

SQL> select COMPONENT,
  2         STATUS,
  3         OPER_TYPE,
  4         OPER_MODE,
  5         PARAMETER,
  6         round(INITIAL_SIZE/1024/1024,2) INITIAL_mb ,
  7          round(TARGET_SIZE/1024/1024,2)  TARGET_MB,
  8          round(FINAL_SIZE/1024/1024,2)  FINAL_mb,
  9         to_char(START_TIME, yyyy-mm-dd hh24:mi:ss) START_TIME,
10         to_char(END_TIME, yyyy-mm-dd hh24:mi:ss) END_TIME
11    from V$MEMORY_RESIZE_OPS
12   where START_TIME > to_date(2017092621,yyyymmddhh24)
13   order by END_TIME;
COMPONENT                      STATUS    OPER_TYPE     OPER_MODE PARAMETER                      INITIAL_MB  TARGET_MB   FINAL_MB START_TIME          END_TIME
------------------------------ --------- ------------- --------- ------------------------------ ---------- ---------- ---------- ------------------- -------------------
shared pool                    COMPLETE  SHRINK        DEFERRED  shared_pool_size                     2752       2624       2624 2017-09-26 22:01:21 2017-09-26 22:10:07
DEFAULT buffer cache           COMPLETE  GROW          DEFERRED  db_cache_size                        1536       1664       1664 2017-09-26 22:01:21 2017-09-26 22:10:07
DEFAULT buffer cache           COMPLETE  SHRINK        DEFERRED  db_cache_size                        1664       1536       1536 2017-09-26 22:23:11 2017-09-26 22:23:13
shared pool                    COMPLETE  GROW          DEFERRED  shared_pool_size                     2624       2752       2752 2017-09-26 22:23:11 2017-09-26 22:23:13

至此问题定位,是由于SGA内存自动调整导致数据库异常



以上是关于Oracle数据库大量library cache: mutex X及latch: shared pool问题排查一例的主要内容,如果未能解决你的问题,请参考以下文章

重启大法失效?详述Oracle11g因JDBC bug引发异常Library Cache Lock等

oracle library cache 啥作用

Oracle11g 密码延迟认证导致library cache lock的情况分析

oracle 基础知识----Library Cache *

Oracle单实例情况下的library cache pin的问题模拟与问题分析

[转载——故障排除:Shared Pool优化和Library Cache Latch冲突优化 (文档 ID 1523934.1)