• ORACLE 查看被锁的表、导致锁表的目标机器、及对应锁表语句


    可能出现锁表场景:若一个模块日常运行一切正常,突然出现故障,比如某平台在1秒内返回的话费查询短信忽然产生了延迟,很多客户发出短信后几十分钟仍然未收到。

    为了模拟锁表,我开了几个session,分别执行update语句后,不做任何提交或回滚的操作。即产生了锁表。

    查看被锁的表是否包含程序模块对应的后台数据表。

    1、

    --查看被锁的表 
    select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;

    2、

    --查看那个用户那个进程照成死锁
    select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b 
    where a.session_id = b.sid order by b.logon_time;

    3、

    --3.查出锁定表的sid, serial#,os_user_name, machine_name, terminal,锁的type,mode
    SELECT s.sid, s.serial#, s.username, s.schemaname, s.osuser, s.process, s.machine,
    s.terminal, s.logon_time, l.type
    FROM v$session s, v$lock l
    WHERE s.sid = l.sid
    AND s.username IS NOT NULL
    ORDER BY sid;

    4、

    ---查看所标的sql_hash_value,
    SELECT object_name 被锁表 , machine 所属机器, l.ORACLE_USERNAME 表所在用户,s.sid, s.serial# ,s.LOCKWAIT ,s.SQL_HASH_VALUE
    FROM gv$locked_object l, dba_objects o, gv$session s 
    WHERE l.object_id = o.object_id 
    AND l.session_id = s.sid and o.Object_Name='QINTIAN_DATA_HEADER' ;

    5、

    --查看对应的锁表SQL
    select * from v$sql a where a.HASH_VALUE = '3023849173'

     

     6、

    --杀掉进程 sid,serial#

    alter system kill session '685,12071';
    alter system kill session '491,16923';
    alter system kill session '298,34588';
    alter system kill session '393,2388';

  • 相关阅读:
    数学图形(2.10)一种绕在球上的线圈
    数学图形(2.9) Capareda曲线
    数学图形(2.8)Viviani曲线
    数学图形(2.7)sphere sine wave
    数学图形(2.5)Loxodrome曲线
    数学图形(2.6)Satellit curve
    数学图形(2.4)网球上的曲线
    数学图形(2.3)绕在圆环上的曲线
    数学图形(2.2)N叶结
    数学图形(2.1)三叶结
  • 原文地址:https://www.cnblogs.com/eastward/p/16276052.html
Copyright © 2020-2023  润新知