`
itspace
  • 浏览: 981659 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Oracle enq: CF - contention导致数据挂起

阅读更多
接到客户电话,数据库失去响应,所有业务挂起
数据库版本为

引用
SQL> select * from v$version where rownum=1;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi

主机版本为
引用
$ uname -a
HP-UX rp7410 B.11.23 U 9000/800 1943000290 unlimited-user license

查看数据库等待信息,可以看到enq: CF - contention导致数据挂起
引用
SQL> select sid,event from v$session_wait where event not like '%rdbms%' and event not like '%SQL%';
       SID EVENT
---------- ----------------------------------------------------------------
       164 control file sequential read
       200 Streams AQ: qmn slave idle wait
       205 Streams AQ: qmn coordinator idle wait
       206 Streams AQ: waiting for time management or cleanup tasks
       211 enq: CF - contention
       212 enq: CF - contention
       216 enq: CF - contention
       219 smon timer
       221 enq: CF - contention
       225 pmon timer


于是马上查看阻塞会话信息
引用
SQL> select SID,SERIAL#  from v$session where sid in (select sid from v$lock where block=1);

       SID    SERIAL#
---------- ----------
       164       7097
       220          1

首先在数据库层面将会话杀死
引用
SQL> alter system kill session '220,1';  
alter system kill session '220,1'
*
ERROR at line 1:
ORA-00029: session is not a user session

提示会话220不是用户会话,那它是什么呢?
引用
SQL> select SID,AUDSID,USERNAME,TYPE,PROGRAM
  2  FROM V$SESSION WHERE SID='220';

       SID     AUDSID USERNAME                       TYPE
---------- ---------- ------------------------------ ----------
PROGRAM
------------------------------------------------
       220          0                                BACKGROUND
oracle@rp4440 (CKPT)

可以看到是Oracle后台CKPT进程。
引用
SQL>  alter system kill session '164,7097';
alter system kill session '164,7097'
*
ERROR at line 1:
ORA-00031: session marked for kill


进一步查看操作系统进程
引用
SQL>  select SPID from v$process where addr=(select PADDR from v$session where sid=164);

SPID
------------
24660

SQL> !ps -ef|grep 24660
  oracle 24660     1  0 12:49:16 ?         0:00 oraclexxxi (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
  oracle 24706 24701  0 12:56:33 pts/ta    0:00 /usr/bin/sh -c ps -ef|grep 24660
  oracle 24708 24706  0 12:56:33 pts/ta    0:00 grep 24660


红色标注进程为引起数据库挂住的元凶,只要将其杀死,数据库恢复正常
引用
$ kill -9 24660


事后检查alert日志发现客户创建standby controlfile至nfs目录,导致数据库挂起。进一步检查nfs参数
引用
rw,bg,hard,nointr,rsize=32768,wsize=32768,vers=3,timeo=600,actimeo=0 0 2

发现并无异样,通过metalink解释,此为Oracle 10.2.0.1写nfs文件系统bug,Oracle号称通过添加nfs参数可以解决,但事实证明,至少在HP-UX 11.21上又是一句空话。
我们来看看control file sequential read的官方解释
引用
Reading from the control file. This happens in many cases. For example, while:

    *Making a backup of the control files
    *Sharing information (between instances) from the control file
    *Reading other blocks from the control files
    *Reading the header block




1
2
分享到:
评论

相关推荐

    BLOG_【AWR分析】Oracle_lhr_队列等待之enq IV - contention案例.pdf

    ### Oracle AWR 分析之 enq: IV - Contention 案例解析 #### 一、概述 在Oracle数据库管理中,AWR (Automatic Workload Repository) 是一个非常重要的工具,用于诊断性能瓶颈并帮助优化数据库操作。本文将详细介绍...

    enq PS - contention.pdf

    【故障处理】enq: PS - contention 是一个Oracle数据库中常见的等待事件,通常与并行服务器(Parallel Server)的资源竞争有关。这篇博客主要讲解如何解决这类问题,并提供了详细的故障分析和解决步骤。 1. **等待...

    enq:TX index contention.txt

    cause:当插入新的索引条目时,发现索引块中没有足够的空间容纳新的索引条目,索引块就会产生分裂(分为5-5分裂...这时就会表现为enq: TX - index contention。本例中索引块分裂属于5-5 分裂,此分裂可以通过awr报告观察

    BLOG_【故障处理】Oracle_lhr_序列cache值过小导致CPU利用率过高.pdf

    竞争增加会导致enq:SQ-contention事件发生次数增多,进而增加CPU使用率。 同时,DFSlockhandle等待事件也是由于数据文件锁定而造成的等待。它通常与数据库文件的锁定和解锁操作有关。当多个事务试图同时访问同一...

    BLOG_Oracle_lhr_ 【等待事件】等待事件系列(5.1)--Enqueue(队列等待) .pdf

    - **enq:DX-contention**:涉及数据对象的独占锁定竞争。 - **enq:SQ-contention**:序列对象的等待,常见于序列值的获取过程中。 ##### 2.3 Enqueue队列等待的解决策略 针对不同的Enqueue队列等待类型,可以采取...

    BLOG_【故障处理】Oracle_lhr_队列等待之TX - allocate ITL entry案例.pdf

    这种等待事件通常是由于大量的并发事务竞争同一个数据块内的ITL资源导致的。解决此类问题的关键在于理解ITL的工作原理,并通过合理的参数调整和优化SQL执行计划来减少ITL的竞争。此外,定期监控数据库性能并及时调整...

    【故障处理】队列等待之TX 等待事件处理.docx

    - **Direct path read**:这是Oracle的快速路径插入,如果造成等待,可能是由于数据导入或大量DML操作。使用批量插入,或者在低并发时段进行大操作,可以减少等待。 ### 队列等待的基本知识 队列等待是数据库系统...

    ASCII码简介对照表

    6. **询问(ENQ)** - 十进制:5 - 八进制:005 - 十六进制:05 - 二进制:00000101 - HTML实体:`` - 描述:用于请求对方发送确认或响应。 7. **收到通知(ACK)** - 十进制:6 - 八进制:006 - ...

    undo引起的告警.txt

    当系统activity增加或者降低的时候,oracle SMON进程会自动ONLINE或者OFFLINE rollback segments。这样导致某些与undo segments相关的latch或者enqueue被...导致系统很多活跃session都开始等待enq: US - contention。

    ASCII码表 0 255 pdf

    - **解释**:在数据传输中用于特殊字符的转义。 18. **设备控制1(DC1)** - **二进制**:00010001 - **八进制**:21 - **十进制**:17 - **十六进制**:11 - **字符**:DC1 (device control 1) - **解释**...

    ASCII编码-控制字符[文].pdf

    **ENQ (Enquiry, 请求)** - **二进制**: 0000101 - **十进制**: 5 - **十六进制**: 05 - **说明**: 用于请求对方发送确认信息。 ##### 7. **ACK (Acknowledgment, 收到通知)** - **二进制**: 0000110 - **十进制...

    BLOG_【故障处理】Oracle_lhr_队列等待之TX - row lock contention

    ### 故障处理:Oracle_lhr_队列等待之TX - row lock contention #### 一、概述 在Oracle数据库管理中,“enq:TX-rowlockcontention”是一种常见的队列等待事件,通常与行级别的锁定冲突有关。这种冲突可能会导致...

    ASCII码 精美版

    ENQ (Enquiry) - 询问字符 - **ASCII值**: 5 - **用途**: 请求对方发送确认信号。常用于通讯协议中。 ##### 7. ACK (Acknowledgement) - 承认 - **ASCII值**: 6 - **用途**: 表示已成功接收消息。用于通讯协议中...

    序列等待事件总结

    本篇博客主要聚焦于四种特定的序列等待事件:enq SQ - contention、row cache lock、DFS lock handle和enq SV - contention。 1. **enq SQ - contention**: 这个等待事件发生在多个会话尝试获取对序列(sequence...

    oracledb-exporter.0.2.9-ora18.5.linux-amd64.tar.gz

    - 锁等待情况(如ENQ: TX - ROW LOCK contention) Prometheus会定期抓取oracledb-exporter提供的这些指标,并根据预设的规则进行报警和可视化展示。你可以利用Prometheus的Alertmanager设置告警规则,当特定指标...

    orcale死锁查杀PB版

    - 使用`v$session_wait`视图查找等待类型的`ENQ: TX - row lock contention`或`ENQ: TX - deadlock`。 - 查询`v$deadlock`和`v$deadlock_monitor`视图获取死锁信息。 - 执行`DBMS_LOCK.MONITOR`过程来监控死锁...

    ASCIL 码表:ascil 编码对照表

    - **解释**:ENQ用于发送方询问接收方是否准备好接收数据。 7. **回应(ACK)** - 二进制: 00000110 | 十进制: 06 | 十六进制: 06 - **解释**:ACK表示接收方已经成功接收到数据并确认无误。 8. **响铃(BEL)** - ...

    高级owi与oracle性能调优

    - 等待资源:比如enq: TM - contention和library cache lock。 - 用户进程等待:比如log file parallel write和log file sync。 ### OWI性能调优方法 针对Oracle等待事件进行调优,通常需要一系列的分析和诊断步骤...

Global site tag (gtag.js) - Google Analytics