TX锁处理
实际处理后,在测试环境中模拟还原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锁处理的更多相关文章
- 理解Oracle TM和TX锁
在Oracle中有很多锁,通过v$lock_type视图可以查看Oracle中所有类型的锁,在本篇文章中我们熟悉一下TM和TX锁的类型 SQL> select * from v$lock_typ ...
- Oracle TM锁和TX锁
CREATE TABLE "TEST6" ( "ID" ), "NAME" ), "AGE" ,), "SEX ...
- Oracle关于TX锁的一个有趣的问题
前阵子有一个网友在群里问了一个关于Oracle数据库的TX锁问题,问题原文如下: 请教一个问题: 两个会话执行不同的delete语句,结果都是删除同一个行.先执行的会话里where条件不加索引走全表扫 ...
- 修改一行和修改全表的TX锁
SQL> select * from v$mystat where rownum<2; SID STATISTIC# VALUE ---------- ---------- ------- ...
- 查询01_DML锁和DDL锁的处理
一.摘要 Oracle的手册上关于锁的分类说明如下: 1. DML锁:Date lock.执行DML时保护数据的锁.Row Lock(TX)保护特定行,Table Lock(TM)保护整个表,可以通过 ...
- oracle 锁的介绍 (转)
本文转自:http://blog.csdn.net/gyb2013/article/details/6929697 一.什么是锁: Oracle的锁机制是一种轻量级的锁定机制,不是通过构建锁列表来进行 ...
- Oracle锁的机制
一.为什么要有锁的机制 我们都知道数据库是一个多用户使用的共享资源.当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确的数据,破 ...
- Oracle事务之一:锁和隔离
Oracle事务之一:锁和隔离 一. 事务概述 事务管理是数据库处理的核心.数据库既要保证用户能并发地执行事务,还要保证数据库的一致性. 当第一条可执行的SQL开始执行,就隐形地开始了一个事务,直到遇 ...
- 【锁】Oracle锁系列
[锁]Oracle锁系列 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ...
随机推荐
- Dijkstra双栈算术表达式求值
在看algs4的时候偶然发现了这个算法,又回顾了一遍当时数据结构课程里讲过的知识,当时很不在意.迟早是要还的,哎 用python实现了,比较麻烦的是我现在没有解决bash传参的问题,''(" ...
- poj 3294 Life Forms - 后缀数组 - 二分答案
题目传送门 传送门I 传送门II 题目大意 给定$n$个串,询问所有出现在严格大于$\frac{n}{2}$个串的最长串.不存在输出'?' 用奇怪的字符把它们连接起来.然后求sa,hei,二分答案,按 ...
- Learning-MySQL【6】:视图、触发器、存储过程、函数、流程控制
一.视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次用的直接使用即可.使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的 SQL 语句了 ...
- Anaconda环境下安装库
使用anaconda环境下使用pycharm后,有些其他库也想安装,但开始在python.exe目录下安装没成功,因为pycharm用的环境已经不是原始的python.exe解释器了.就总结了一些安装 ...
- linux下使用maven修改hbase源码并重新编译
一.准备 maven已配置 JDK已配置 二.修改相关hbase代码 三.使用maven编译hbase-2.0.0 在hbase src根目录下,执行以下命令 mvn clean package -D ...
- 两个python安装模块后 ImportError: No module named
问题描述:我的电脑安装了默认的arcgis自带的python,还自己安装了anaconda,所以有两个位置的python2.7 我自己使用arcgis的程序的时候,调用默认的那些是可以用的,但想使用d ...
- webpack不同版本导致的promise不存在问题
之前采用的axios是基于promise的,但是IE并没有内置promise,所以要提前install一个promise插件: npm install promise import Promise f ...
- Http头:Expires,Cache-Control,Last-Modified,ETag
Expires:过期时间 el:Expirse:Fri,30 Oct 1998 14:19:41 Cache-Control:缓存控制 el:Cache-Contro ...
- form标签的 enctype属性
1.enctype的定义: enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码. 默认地,表单数据会编码为 "application/x-www-form-urlencod ...
- yii2框架中获取添加元素的主键
控制器层: 模型层: 返回结果是: