• Oracle故障排查之oracle解决锁表问题


    --step 1:查看被阻塞会话等待事件

    select sid, event, username, lockwait, sql.sql_text
      from v$session s, v$sql sql
    where s.sql_id = sql.sql_id
       and sql.sql_text like '%&sql%';

    -------------------------------------------------------------------------
        22    enq: TX - row lock contention    SCOTT    000000007F8C4DD8    update emp set ename='dbking' where empno=7369
        23    enq: TX - row lock contention    SCOTT    000000007F8C4F98    delete from emp where empno=7499

    --step 2:查找阻塞的blocker

    select sid, inst_id, blocking_instance, blocking_session
      from gv$session
    where sid = 22;

    -----------------------------------------------------------------------
        22    1    1    142

        或

    select sid, inst_id, blocking_instance, blocking_session
      from gv$session
    where sid in (22, 23);

    ----------------------------------

    22    1    1    142
    23    1    1    142


    --step 3:清除blocker

    确认要清除会话的sid和serial#:

    select sid, serial#
      from gv$session
    where inst_id = 1
       and sid = 142;

    --------------------------------------
        142    873

    清除会话:

    SQL> alter system kill session '142,873';

    System altered.

    ------------------TOP-----------------------

    select sql_text
      from v$sqltext a
    where (a.hash_value, a.address) in
           (select decode(sql_hash_value, 0, prev_hash_value, sql_hash_value),
                   decode(sql_hash_value, 0, prev_sql_addr, sql_address)
              from v$session b
             where b.paddr = (select addr from v$process c where c.pid = '&pid'))
    order by piece asc;

  • 相关阅读:
    ios入门笔记(创建隐式首选项,实现系统设置,实现文件系统存储)
    ios开发(表视图)
    Android上使用OpenglES2.0遇到的一点问题
    Android平台对H264视频硬解码
    Java GC机制和对象Finalize方法的一点总结
    JVM GC之一找出不可达对象并回收
    docker 使用Data Volume 共享文件
    sscanf函数用法详解
    va_start和va_end使用详解
    NDK 的helloworld步奏
  • 原文地址:https://www.cnblogs.com/wcwen1990/p/6652121.html
Copyright © 2020-2023  润新知