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

使用V$LOCK解决enq: ST – contention的一个例子

SQL 
阅读更多
一个用来存储报表的数据库上,有一系列数据导入的进程,但在今天发现这些进程一直未执行结束,在数据导入端可以看到数据导入速度为零,查看数据库上的等待事件,发现它们的等待事件全部是enq: ST – contention(EXTENT分配或者回收的锁)。
SID MACHINE                HASH Event Name                       P1      P2
------ -------------- ------------ -------------------------- -------- ---------
  1069 gateway208063.   2384721791 enq: ST - contention     1398013958        0
   775 gateway208063.   2384721791 enq: ST - contention     1398013958        0

通过查询v$lock这个视图,可以发现某个会话一直占用着ST锁,杀掉这个进程之后,其他的进程的数据导入速度恢复正常。至于这个会话为啥会长久地占用这个锁,没有进一步追查。
SQL> select * from gv$lock where type='ST';
SID TY        ID1        ID2      LMODE    REQUEST      CTIME      BLOCK
---- -- ---------- ---------- ---------- ---------- ---------- ----------
 661 ST          0          0          0          6         73          0
 720 ST          0          0          0          6         73          0
 685 ST          0          0          0          6         72          0
 887 ST          0          0          0          6         72          0
 922 ST          0          0          0          6         72          0
1054 ST          0          0          6          0        261          2
 704 ST          0          0          0          6         75          0
 849 ST          0          0          0          6         75          0
 976 ST          0          0          0          6         75          0
 978 ST          0          0          0          6         75          0
 815 ST          0          0          0          6         75          0

以上是一个非常简单的使用v$lock解决enqueue的问题,但是在解决过程中却花费了我很长的时间,这应该是我没有按照最为直接的思维考虑这个问题导致的。对于这个问题,我们应该这么想:既然等待ST锁,那么ST锁肯定被某个会话占用着,通过V$LOCK查找到这个会话,并审查这个会话的这种行为是否正常。
分享到:
评论

相关推荐

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

    本文将详细介绍一个具体的案例——enq: IV - contention,这是一种常见的队列等待事件,在Oracle 12c版本中尤为突出。通过分析此案例,读者可以深入理解如何使用AWR来定位和解决问题。 #### 二、案例背景 在本案例...

    enq:TX index contention.txt

    并在数据块上产生一个TX锁,此时另外一个会话也需要向该数据块中插入新的索引条目,于是该事务不得不等待索引分裂完成。这时就会表现为enq: TX - index contention。本例中索引块分裂属于5-5 分裂,此分裂可以通过...

    enq PS - contention.pdf

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

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

    该事件指的是当两个或多个会话试图同时使用同一个序列时,由于序列的当前值被一个会话占用,其他会话就必须等待。如果cache值设置得过小,序列的值就会频繁请求数据库访问和更新,从而导致高竞争。竞争增加会导致enq...

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

    例如,假设在一个高并发的应用场景中出现了大量的enq:DX-contention等待,此时我们可以: - 使用V$ENQUEUE视图来确定哪些数据对象导致了这种等待。 - 分析SQL语句,看是否可以优化查询逻辑,减少对这些对象的操作。...

    oraclev$sessionv$session_wait用途详解

    1. **等待事件类型**:`EVENT`字段列出了具体的等待事件名称,如“db file sequential read”表示顺序读取数据库文件,“enq: TX - row lock contention”表示行级锁竞争。 2. **等待时长**:`TIME_WAITED`字段提供...

    序列等待事件总结

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

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

    当一个事务尝试修改一行数据但无法立即获得所需的**意向独占锁(ITL)**时,就会出现这种等待。 - **ITL (Intent To Lock)**: 在Oracle中用于支持行级锁定机制,允许并发读取操作但限制并发写入操作。 - **TX ...

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

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

    undo引起的告警.txt

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

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

    使用`DBA_HIST_SYS等待视图`或`V$SESSION_WAIT`动态视图来检测和诊断死锁。一旦发现死锁,可以通过`ALTER SYSTEM KILL SESSION 'SID, SERIAL#'`命令强制结束导致死锁的会话。 ### ITL死锁模拟与Merge语句优化 ...

    利用DTRACE定位Oracle高并发堵塞案例.pdf

    我们还发现Log file sync会话 -> Lgwr进程(enq: CF – contention)-> ARC6进程(control file sequential read),导致IO慢。 DTRACE是一个强大的工具,可以帮助我们快速定位系统瓶颈和问题根源。在本案例中,...

    Oracle10g视图的神图

    V$视图是Oracle数据库的一个重要特性,随着版本的更新而不断丰富和完善。 **新特性:** - **10g中新添加的视图:** 在Oracle 10g中新增加的视图会在名称后面加上"(10g)"标识。 - **修改过的视图:** 对于那些在...

    orcale死锁查杀PB版

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

    Oracle10g数据库最佳新特性:等待界面 (1)

    例如,对于"enq:TX - row lock contention"这类等待事件,可能需要考虑事务的并发控制策略或锁的粒度。 总之,Oracle 10g的等待界面改进极大地增强了DBAs在性能监控和问题诊断方面的能力。结合ADDM的自动化分析和...

    高级owi与oracle性能调优

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

    Oracle10g数据库最佳新特性:等待界面 (2)

    以SID为269的会话为例,如果它正等待enq:TX — row lock contention事件,意味着它在等待另一个会话释放锁。在Oracle 10g之前,找出阻塞会话可能需要编写资源密集型查询,但在10g中,只需简单查询v$session就能找到...

    oracle、应急处置、方案

    在Oracle数据库运维过程中,实例管理是非常重要的一个环节。当遇到实例管理类的问题时,正确的应急处置措施能够有效地减少对业务的影响。 **1. 实例重启** - **原因分析**:由于各种原因(如内存泄漏、系统资源...

Global site tag (gtag.js) - Google Analytics