实际处理后,在测试环境中模拟还原TX锁,及处理。

本篇博客目录:

1.TX锁模拟实际环境

2.登陆数据库,查询相关信息

3.确认锁源头,kill进程释放资源

一、TX锁模拟

sess_1

SQL> update yz.a set name='cc' where id=1;

1 row updated.

sess_2

SQL>  delete a where name is null;

sess_3

SQL> update a set id=5 where id=1;

······数据库tx锁达到30个,短信告警

二、DBA介入,查询相关信息

视图查询当前数据库中活跃会话状态,发现存在TX锁信息
SQL> select INST_ID,sid,serial#,USERNAME,STATUS,MACHINE,SQL_ID,EVENT,(sysdate-LOGON_TIME)* as "s",LAST_CALL_ET from gv$session where status='ACTIVE' and username is not null; INST_ID SID SERIAL# USERNAME STATUS MACHINE SQL_ID EVENT s LAST_CALL_ET
------- ------ ------- -------------------- ---------- -------------------- -------------------- ------------------------------ ------- ------------
YZ ACTIVE enmo 3xz40fnbtp8gw enq: TX - row lock contention
YZ ACTIVE enmo 9hjrz7bh8a0st enq: TX - row lock contention
SYS ACTIVE enmo 2ymxxw3mapxd9 SQL*Net message to client 0
查询被阻塞会话执行的SQL,已经阻塞会话信息

SQL> select sql_id,BLOCKING_INSTANCE,BLOCKING_SESSION,count(*) from gv$session where event='enq: TX - row lock contention' group by sql_id,BLOCKING_INSTANCE,BLOCKING_SESSION;

SQL_ID BLOCKING_INSTANCE BLOCKING_SESSION COUNT(*)
-------------------- ----------------- ---------------- ----------
9hjrz7bh8a0st 1 1094 1
3xz40fnbtp8gw 1 1094 1

查询被阻塞SQL文本

SQL>select sql_text from v$sql where sql_id='9hjrz7bh8a0st'

SQL_TEXT
----------------------------------------------------------------
update a set id=5 where id=1

通过cursor查询SQL文本

SQL> select * from table(dbms_xplan.display_cursor('&SQL_IDorSQL_HASH_VALUE',0,'advanced'));

查询源头会话信息及状态

SQL> select INST_ID,sid,serial#,USERNAME,STATUS,MACHINE,SQL_ID,EVENT,(sysdate-LOGON_TIME)*86400 as "s",LAST_CALL_ET from gv$session where inst_id=1 and sid=1094;

INST_ID SID SERIAL# USERNAME STATUS MACHINE SQL_ID EVENT s LAST_CALL_ET
------- ------ ------- -------------------- ---------- -------------------- -------------------- ------------------------------ ------- ------------
1 1094 11 SYS INACTIVE enmo SQL*Net message from client 525 504

无法找到SQL_id,源头阻塞会话

SQL> select sql_text from v$session a,v$sqltext_with_newlines b where decode(a.sql_hash_value,0,prev_hash_value,sql_hash_value)=b.hash_value and a.sid=1094;

SQL_TEXT
----------------------------------------------------------------
update yz.a set name='cc' where id=1

[分析上述SQL查询的列信息

SQL> select sql_hash_value,prev_hash_value,sql_hash_value,sql_id from v$session where sid=1094;

SQL_HASH_VALUE PREV_HASH_VALUE SQL_HASH_VALUE SQL_ID
-------------- --------------- -------------- --------------------
0 1358140474 0

SQL_HASH_VALUE=> 会话正在执行的SQL_ID

PREV_HASH_VALUE=>会话上一条执行的SQL_ID

SQL_ID=> 正在执行的SQL_ID

]

三、KILL释放资源

SQL>alter system kill session 'sid,serial#' immediate;

TX锁处理的更多相关文章

  1. 理解Oracle TM和TX锁

    在Oracle中有很多锁,通过v$lock_type视图可以查看Oracle中所有类型的锁,在本篇文章中我们熟悉一下TM和TX锁的类型 SQL> select * from v$lock_typ ...

  2. Oracle TM锁和TX锁

    CREATE TABLE "TEST6" ( "ID" ), "NAME" ), "AGE" ,), "SEX ...

  3. Oracle关于TX锁的一个有趣的问题

    前阵子有一个网友在群里问了一个关于Oracle数据库的TX锁问题,问题原文如下: 请教一个问题: 两个会话执行不同的delete语句,结果都是删除同一个行.先执行的会话里where条件不加索引走全表扫 ...

  4. 修改一行和修改全表的TX锁

    SQL> select * from v$mystat where rownum<2; SID STATISTIC# VALUE ---------- ---------- ------- ...

  5. 查询01_DML锁和DDL锁的处理

    一.摘要 Oracle的手册上关于锁的分类说明如下: 1. DML锁:Date lock.执行DML时保护数据的锁.Row Lock(TX)保护特定行,Table Lock(TM)保护整个表,可以通过 ...

  6. oracle 锁的介绍 (转)

    本文转自:http://blog.csdn.net/gyb2013/article/details/6929697 一.什么是锁: Oracle的锁机制是一种轻量级的锁定机制,不是通过构建锁列表来进行 ...

  7. Oracle锁的机制

    一.为什么要有锁的机制 我们都知道数据库是一个多用户使用的共享资源.当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确的数据,破 ...

  8. Oracle事务之一:锁和隔离

    Oracle事务之一:锁和隔离 一. 事务概述 事务管理是数据库处理的核心.数据库既要保证用户能并发地执行事务,还要保证数据库的一致性. 当第一条可执行的SQL开始执行,就隐形地开始了一个事务,直到遇 ...

  9. 【锁】Oracle锁系列

    [锁]Oracle锁系列 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ...

随机推荐

  1. 自制操作系统Antz(6)——内核初步,引入c语言

    Antz系统更新地址: https://www.cnblogs.com/LexMoon/category/1262287.html Linux内核源码分析地址:https://www.cnblogs. ...

  2. Bugku-CTF之网站被黑(这个题没技术含量但是实战中经常遇到)

    Day11   网站被黑   http://123.206.87.240:8002/webshell/    

  3. python第一阶段总结(2)

    python3第一阶段的总结 首先申明一下,本人是看网络课程“老男孩”过来写博客的,想把自己学到的东西分享一下.同时给老男孩打个广告,其教学水平真的挺好的.仅据我个人多年的学习评价. 好,接下来是我对 ...

  4. SELinux/SEAndroid 实例简述(二) TE语言规则【转】

    本文转载自:https://blog.csdn.net/shell812/article/details/54930246 版权声明:本文为博主原创文章,未经博主允许不得转载.    https:// ...

  5. TTS 语音修复 ,缺少文件的,没注册类的

    完美运行 http://bbs.nga.cn/read.php?tid=13292628&rand=492 Win7系统TTS修复-采用原生Win7提取绿色修复 一键自动修复,控制面板里有语音 ...

  6. Bytom 技术 FAQ

    比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 1.如何 ...

  7. react-native android 运行命令

    debug模式运行 sudo react-native run-android release模式运行 sudo react-native run-android --variant=release ...

  8. lib下的Jar包在项目打包的时候提示不能找不到

    maven 使用本地包 lib jar包 依赖一个lib目录 解决方法: <plugin> <groupId>org.apache.maven.plugins</grou ...

  9. 51Nod - 1384

    全排列函数解法 #include <iostream> #include <cstdio> #include <cstring> #include <cmat ...

  10. [数据结构]P2.1 二叉搜索树

    二叉树就是每个节点最多有两个分叉的树.这里我们写一写一个典型的例子二叉搜索树,它存在的实际意义是什么呢? 在P1.1链表中,我们清楚了链表的优势是善于删除添加节点,但是其取值很慢:数组的优势是善于取值 ...