ORACLE查询通用查询被锁对象以及解锁方案
锁表锁存储过程遇到过好多次,有的是代码漏洞,没有回滚事物;有的时候就是网不好,存储过程调试着就断了,关了PLSQL之后,那个session其实还在,就锁死了,必须要手动杀死才行。之前有的项目还有这种情况,处理单据时,锁住单据行,然后回滚的时候其实不是同一个数据库连接对象,回滚了也没有,更有甚者,抛出异常了没有回滚,直接gg,锁了好多行。
1、2比较简单粗暴,疗效也不错
2、3比较稳,一个个确认后再杀死
1.查询所有被锁对象
SELECT SQL_TEXTFROM V$SQLWHERE HASH_VALUE IN(SELECT SQL_HASH_VALUEFROM V$SESSIONWHERE SID IN (SELECT SESSION_ID FROM V$LOCKED_OBJECT));
2.释放所有被锁对象
DECLARECURSOR MYCUR ISSELECT B.SID, B.SERIAL# FROM V$LOCKED_OBJECT A, V$SESSION B WHERE A.SESSION_ID = B.SIDGROUP BY B.SID, B.SERIAL#;
BEGINFOR CUR IN MYCUR LOOPEXECUTE IMMEDIATE ('alter system kill session ''' || CUR.SID || ',' ||CUR.SERIAL# || ''' ');END LOOP;
END;
3.查询被锁对象详情
SELECT A.OWNER 方案名, A.OBJECT_NAME 表名, B.XIDUSN 回滚段号, B.XIDSLOT 槽号, B.XIDSQN 序列号, B.SESSION_ID 锁表SESSION_ID, B.ORACLE_USERNAME 锁表用户名, decode(D.type, 'XR', 'NULL', 'RS', 'SS(Row-S)', 'CF', 'SS(Row-S)', 'TM', 'TABLE LOCK', 'PW', 'TABLE LOCK', 'TO', 'TABLE LOCK', 'TS', 'TABLE LOCK', 'RT', 'ROW LOCK', 'TX', 'ROW LOCK', 'MR', 'S(Share)', NULL) 锁定方式, C.MACHINE 用户组, C.TERMINAL 机器名, B.OS_USER_NAME 系统用户名, B.PROCESS 系统进程id, DECODE(C.STATUS, 'INACTIVE', '不活动', 'ACTIVE', '活动') 活动情况, C.SERVER, C.SID, C.SERIAL#, C.PROGRAM 连接方式, C.LOGON_TIME FROM ALL_OBJECTS A, V$LOCKED_OBJECT B, SYS.GV_$SESSION C, v$lock d
WHERE (A.OBJECT_ID = B.OBJECT_ID) AND (B.PROCESS = C.PROCESS) and C.sid = d.sid and B.LOCKED_MODE = D.LMODE
ORDER BY 1, 2;
4.杀死session
alter system kill session '391';
ORACLE查询通用查询被锁对象以及解锁方案相关推荐
- oracle查询属主下对象,SQL优化
Oracle Index Merge 与 and_equal 的变迁 June 8, 2010 and_equal是Oracle支持的一种特定操作,可以将多个单列索引进行合并(Index Merge) ...
- oracle 查看表被锁和如何解锁
前提:该用户必须拥有DBA权限,否则提示找不到表和视图 一,oracle 查看哪些表被锁 select c.sid, c.serial#, c.username, c.osuser, b.owner, ...
- Oracle数据库账号被锁了怎么解锁
一.快速解决方法(推荐): 1.以管理员身份登录sys用户: 2.解锁用户:ALTER USER ZHB(用户名) ACCOUNT UNLOCK; 3.修改密码:alter user ZHB iden ...
- 查询Oracle正在执行的sql语句,锁表,解锁
原文出处:http://blog.csdn.net/jlds123/article/details/6572559 ----------------------- --查询Oracle正在执行的sql ...
- zbb20170728 oracle 查看被锁对象
查询Oracle正在执行和执行过的SQL语句--查询Oracle正在执行的sql语句及执行该语句的用户SELECT b.sid oracleID,b.username 登录Oracle用户名,b.se ...
- 个人总结-oracle查询锁表、解锁语句
–oracle查询锁表解锁语句 –首先要用dba权限的用户登录,建议用system,然后直接看sql吧 1. 如下语句 查询锁定的表. SELECT L.SESSION_ID SID,S.SERIAL ...
- oracle update 锁表还是锁行,for update造成的Oracle锁表与解锁
我遇到的情况: 当使用select语句查询表时,后面跟着for update , select * from table for update 当修改表中数据,但是没有commit就关掉PL/SQL, ...
- Oracle的锁表与解锁
Oracle的锁表与解锁 SELECT /*+ rule */ s.username, DECODE (l.TYPE, 'TM', 'TABLE LOCK', 'TX', 'ROW LOCK', NU ...
- oracle dba_waiters中的lockid是什么,查询Oracle中的阻塞锁(以及阻塞在哪个数据上)的SQL...
查询Oracle中的阻塞锁(以及阻塞在哪个数据上)的SQL 数据库阻塞检查处理方法 当应用服务器发生阻塞时(特别是集群1),应先按下面方法检查数据库,以判明应用服务器阻塞是否由数据库阻塞引起. 如果 ...
最新文章
- WMI技术介绍和应用——Instance/Method Provider
- 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 获取 远程 目标进程 中的 /system/lib/libc.so 动态库中的 mmap 函数地址 )
- 传说中的数据结构_JAVA
- Boost:align down向下对齐的测试程序
- 第七章|7.3并发编程|协程
- 西门子修复热门 CAD 库中的多个代码执行高危漏洞
- python转义引号的作用_在Jinja2中渲染时转义双引号
- https验证失败+Android,okhttpSSL证书验证失败有关问题
- Ubuntu系统使用罗技鼠标
- 免费开源!仿微信仿陌陌类APP源代码整项目开源,包括ADT项..
- asio几种异步编程模型
- 质量管理:PDCA循环
- 微信网页版如何给公众号发消息
- 服务器断电后可以自动开机吗,想要服务器断电后自动开机,怎么设置?
- 老李聊股:中油工程(第三篇)
- 如何使用 Django 进行分页
- 逆向学习litevm篇
- 如何把IP-GUARD发布到公网IP来管理全国分公司的终端
- 只会用 xxl-job?更强大的新一代分布式任务调度框架来了!
- 【历史上的今天】8 月 5 日:微信 5.0 发布;百度上市;LinkedIn 创始人诞生
热门文章
- 如何在回调中访问正确的“ this”?
- win11安装报错0xc1900101怎么办 Windows11安装报错0xc1900101的解决方法
- 代码查看工具_不好用打我 | 六个前端开发在线工具推荐
- python基础刷题_数据结构与算法LeetCode刷题(Python)
- 百度网页搜索无法通过域名访问_网站换域名或网页内容改版对网站的影响以及网站换域名注意事项...
- Android:一个简单的秒表实现
- 计算机能考四川司法学院吗,四川司法警官职业学院计算机文化基础课程在线考试系统...
- 陇东学院计算机学院教授有,陇东学院
- vue页面乱码_项目部署到weblogic后页面乱码问题
- 拳魂觉醒服务器维护怎么办,拳魂觉醒 哪些不为人知的的小秘密