Oracle锁表查询和解锁方法

数据库操作语句的分类

  • DDL:数据库模式定义语言,关键字:create
  • DML:数据操纵语言,关键字:Insert、delete、update
  • DCL:数据库控制语言 ,关键字:grant、remove
  • DQL:数据库查询语言,关键字:select

oracle表在什么情况下会被锁住

DML锁又可以分为,行锁、表锁、死锁

  • 行锁:当事务执行数据库插入、更新、删除操作时,该事务自动获得操作表中操作行的排它锁。

  • 表级锁:当事务获得行锁后,此事务也将自动获得该行的表锁(共享锁),以防止其它事务进行DDL语句影响记录行的更新。事务也可以在进行过程中获得共享锁或排它锁,只有当事务显示使用LOCK TABLE语句显示的定义一个排它锁时,事务才会获得表上的排它锁,也可使用LOCK TABLE显示的定义一个表级的共享锁(LOCK TABLE具体用法请参考相关文档)。

  • 死锁:当两个事务需要一组有冲突的锁,而不能将事务继续下去的话,就出现死锁。 
    如事务1在表A行记录#3中有一排它锁,并等待事务2在表A中记录#4中排它锁的释放,而事务2在表A记录行#4中有一排它锁,并等待事务1在表A中记录#3中排它锁的释放,事务1与事务2彼此等待,因此就造成了死锁。死锁一般是因拙劣的事务设计而产生。 
    死锁只能使用SQL下:alter system kill session “sid,serial#”;或者使用相关操作系统kill进程的命令,如UNIX下kill -9 sid,或者使用其它工具杀掉死锁进程。

DDL锁又可以分为:排它DDL锁、共享DDL锁、分析锁

  • 排它DDL锁:创建、修改、删除一个数据库对象的DDL语句获得操作对象的 排它锁。如使用alter table语句时,为了维护数据的完成性、一致性、合法性,该事务获得一排它DDL锁。

  • 共享DDL锁:需在数据库对象之间建立相互依赖关系的DDL语句通常需共享获得DDL锁。 
    如创建一个包,该包中的过程与函数引用了不同的数据库表,当编译此包时,该事务就获得了引用表的共享DDL锁。

  • 分析锁:Oracle使用共享池存储分析与优化过的SQL语句及PL/SQL程序,使运行相同语句的应用速度更快。一个在共享池中缓存的对象获得它所引用数据库对象的分析锁。分析锁是一种独特的DDL锁类型,oracle使用它追踪共享池对象及它所引用数据库对象之间的依赖关系。当一个事务修改或删除了共享池持有分析锁的数据库对象时,ORACLE使共享池中的对象作废,下次在引用这条SQL/PLSQL语句时,ORACLE重新分析编译此语句。

Oracle锁表查询和解锁

就由解决以下问题来说明:

在进行批量对DML操作时程序竟然中断了,不再往下执行、查询一下某张表被锁住了,因此不再往下执行了。

第一步:通过管理员权限用户查询被锁表信息

如果怀疑表被锁了,或者事务未被正常关闭,在Oracle数据库中我们可以通过以下语句进行查询获取相关信息:

select t2.username,t2.sid,t2.serial#,t3.object_name,t2.OSUSER,t2.MACHINE,t2.PROGRAM,t2.LOGON_TIME,t2.COMMAND,t2.LOCKWAIT,t2.SADDR,t2.PADDR,t2.TADDR,t2.SQL_ADDRESS,t1.LOCKED_MODEfrom v$locked_object t1, v$session t2, dba_objects t3where t1.session_id = t2.sidand t1.object_id = t3.object_idorder by t2.logon_time;

 

大家发现,上面这条SQL语句用到了Oracle的两个视图和一个表,分别是v$locked_object、v$session、dba_objects: 
v$locked_object 视图中记录了所有session中的所有被锁定的对象信息。 
v$session 视图记录了所有session的相关信息。 
dba_objects 为oracle用户对象及系统对象的集合,通过关联这张表能够获取被锁定对象的详细信息。

eg:现在我通过scott用户执行DML语句(eg:select * from emp for update;或者update scott.emp set sal = '2000' where empno='7788'; )之后一直不进行提交,然后通过system用户执行上面的查询oracle中被锁表的sql语句,就会找到如下记录: 
这里写图片描述

说明: 
username:oracle用户名 
sid:进程号 
serial#:序列号 
object_name:表名 
osuser:操作系统用户名 
machine:机器名 
program:操作工具 
logon_time:登陆时间 
lockwait:表示当前这张表是否正在等待其他用户解锁这张表 
locked_mode:锁表模式(下面详细说明)

注意:这时候如果通过system用户执行select * from scott.emp for update;语句就无法成功执行。

第二步:通过拥有管理员权限的用户解除数据库中被锁住的表(SID,SERIAL)

通过第一步查出来的信息找到被锁的表之后执行如下语句解锁该表:

alter system kill session 'sid,seial#';

 

注意:sid和seial#就是第一步中查询出来的进程号和序列号。

eg:解除第一步中表的锁

alter system kill session '10,15';

 

现在通过system再次执行DML语句(eg:select * from scott.emp for update;或update scott.emp set sal = '2000' where empno='7788';)就可以了。

循环所有解锁

  declare cursor mycur is select t2.sid,t2.serial#from v$locked_object t1, v$session t2, dba_objects t3where t1.session_id = t2.sidand t1.object_id = t3.object_id
-- and (t2.LOCKWAIT is not null or t2.LOCKWAIT <> '') --只清除冲突的记录
group by t2.sid,t2.serial#; begin for cur in mycur loop execute immediate ( 'alter system kill session '''||cur.sid || ','|| cur.serial# ||''' '); end loop; end;

 

 

锁的模式

v$locked_object中的LOCKED_MODE字段表示锁的模式,oracle中锁的模式有如下几种: 
0:none 
1:null 空 
2:Row-S 行共享(RS):共享表锁,sub share 
3:Row-X 行独占(RX):用于行的修改,sub exclusive 
4:Share 共享锁(S):阻止其他DML操作,share 
5:S/Row-X 共享行独占(SRX):阻止其他事务操作,share/sub exclusive 
6:exclusive 独占(X):独立访问使用,exclusive

数字越大锁级别越高, 影响的操作越多。

1级锁有:Select,有时会在v$locked_object出现。 
2级锁有:Select for update,Lock For Update,Lock Row Share 
select for update当对话使用for update子串打开一个游标时,所有返回集中的数据行都将处于行级(Row-X)独占式锁定,其他对象只能查询这些数据行,不能进行update、delete或select for update操作。 
3级锁有:Insert, Update, Delete, Lock Row Exclusive 
没有commit之前插入同样的一条记录会没有反应, 因为后一个3的锁会一直等待上一个3的锁, 我们必须释放掉上一个才能继续工作。 
4级锁有:Create Index, Lock Share 
locked_mode为2,3,4不影响DML(insert,delete,update,select)操作, 但DDL(alter,drop等)操作会提示ora-00054错误。 
00054, 00000, “resource busy and acquire with NOWAIT specified” 
// *Cause: Resource interested is busy. 
// *Action: Retry if necessary. 
5级锁有:Lock Share Row Exclusive 
具体来讲有主外键约束时update / delete … ; 可能会产生4,5的锁。 
6级锁有:Alter table, Drop table, Drop Index, Truncate table, Lock Exclusive

还有一条比较实用的sql:

--查某session 正在执行的sql语句,从而可以快速定位到哪些操作或者代码导致事务一直进行没有结束等.
SELECT /*+ ORDERED */ sql_textFROM v$sqltext aWHERE (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 bWHERE b.sid = '67')  /* 此处67 为SID*/ORDER BY piece ASC;

 

 

转载于:https://www.cnblogs.com/colder/p/7026799.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488101.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

揭秘5G+AI时代的机器人世界!七大核心技术改变人类生活

来源&#xff1a;世界人工智能大会 AI 和 5G 与机器人技术结合&#xff0c;正在不断催生新的消费电子品类。AI 解决机器理解世界&#xff0c;以及人机交互的问题。5G 拓展机器人的活动边界&#xff0c;并为机器人提供更大的算力和存储空间&#xff08;云协作机器人&#xff09;…

服务器热修复,热修复探究,hotfix,patch

常见场景App打包发出后1.忘了关掉Log输出了2.存在一个业务逻辑触发必崩溃3.某个本地图标忘了替换成新的遇到这些问题&#xff0c;若是Web站点&#xff0c;Mobile站点问题都不大&#xff0c;因为这些具有“持续发布”的特长&#xff0c;但是App的特点是“版本发布”&#xff0c;…

html5 填表 表单 input output 与表单验证

1.<output> Js计算结果 <form οninput"res.value num1.valueAsNumber*num2.valueAsNumber"> <input type"number" id"num1"> X <!-- 没有闭合</input> --> <input type"number" id…

人工智能如何获得知识?

原发&#xff1a;人民论坛学术前沿 2019年21期转自&#xff1a;南京大学哲学系摘要&#xff1a;人构造概念以认识世界&#xff0c;人的认知与人的身体密切相关。计算机是人类心灵的延伸&#xff1b;而人类发明的各种认知用仪器&#xff08;机器&#xff09;是人类感官的延伸&am…

报告:美国AI投资占全球56% 中国第二增长最快

来源&#xff1a;小小据外媒报道&#xff0c;由英国政府资助的科技企业家网络Tech Nation日前发布最新报告。报告显示了2015年至2019年各国企业在全球范围内获得的人工智能(AI)领域的投资情况。在这五年期间&#xff0c;美国吸引了全球56%的AI投资&#xff0c;紧随其后的是中国…

服务器图文消息发送规则,群发图文规则 - CurtainRight的个人空间 - OSCHINA - 中文开源技术交流社区...

2、上传图文接口内容信息对比&#xff1a;注意&#xff1a;除了群发图文之外&#xff0c;其余的图文消息都是没有Content&#xff0c;所以都是自己写页面&#xff0c;然后通过URL打开新的页面&#xff0c;那么你的图片就不能访问微信服务器上的图片。因为现在未经授权是不能访问…

rust怎么拆除墙壁指令_人类跌落梦境:城堡怎么过 不少玩家卡在了第六关城堡地图这里...

人类跌落梦境城堡怎么过&#xff1f;随着人类一败涂地手游上线&#xff0c;不少玩家卡在了第六关城堡地图这里。城堡怎么抓灯笼&#xff0c;这个图里风车要怎么用呢&#xff1f;这里就为大家带来人类跌落梦境第六关城堡攻略图解。人类跌落梦境城堡怎么过人类跌落梦境第六关城堡…

【工业智能】人工智能真的无所不能吗?

图1-1956年达特茅斯会议上的那些AI界大神们来源&#xff1a;产业智能官最近几年&#xff0c;随着AlphaGo逐渐干掉了人类的顶级棋手、波士顿“大狗”不断进化的能力使得人们对人工智能充满了期待&#xff0c;人工智能的热潮席卷了大学、企业&#xff0c;春风也吹进了工业这个一直…

Discuz网警过滤关键词库

积累近几年discuz关键词过滤 使用方法&#xff1a;1.进入后台/内容/词语过滤批量添加。2.打开CensorWords.txt&#xff0c;复制里面的文本信息到批量添加的输入框内&#xff0c;点击确定即可。如图&#xff1a; 关键词下载&#xff1a;Keywords.zip转载于:https://www.cnblogs.…

AI解读医学影像能力超越人类?BMJ综述:此类研究大多存在偏差

图片来源&#xff1a;Pixabay来源&#xff1a;BMJ翻译&#xff1a;阿金审校&#xff1a;戚译引许多研究宣称&#xff0c;人工智能在解读医学影像方面具备和人类专家同等甚至更强的能力。但是&#xff0c;BMJ 近期发表的一篇综述指出&#xff0c;这些研究质量堪忧&#xff0c;有…

收藏!全国31个省市区重点产业布局!

图片&#xff1a;IC photo来源&#xff1a;世界科技创新论坛一、天津优势产业﹕航空航天、石油化工、装备制造、电子信息、生物医药、新能源新材料、轻工业、国防、现代物流、海洋经济。重点招商引资产业﹕现代服务业的高端商业和电子商务&#xff0c;研发、结算中心和企业总部…

高德sdk_联手HERE,高德进军地图海外市场 | CES 2020

升级为国民出行平台之后&#xff0c;高德地图宣布进军海外市场。1月8日&#xff0c;高德与HERE 地图共同宣布&#xff0c;基于海外地图及动态信息服务展开合作。HERE地图将为高德提供中国以外地区的地图数据及交通信息等&#xff0c;高德从而可实现为用户提供全球路径规划引导、…

养成一个新习惯,只需要这个大脑区域兴奋0.5秒

图片来源&#xff1a;Pixabay文章来源&#xff1a;达特茅斯学院翻译&#xff1a;毛千芊审校&#xff1a;张毛毛每天&#xff0c;人类和动物依靠习惯完成日常起居&#xff0c;如吃饭和睡觉。习惯使我们能不加思考地做事。当大脑开始养成一种新习惯时&#xff0c;只需半秒钟&…

android 瀑布流

最终效果图 1.item_demo5.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"wrap_con…

$.ajax 加了headers报错_Springboot解决Ajax跨域的三种方式

这篇文章不华丽&#xff0c;但比较实用&#xff0c;能解决不少大家实际业务中的问题。大家可以收藏起来&#xff0c;以备用时之需&#xff01;1.同源策略 1.1 含义ajax出现请求跨域错误问题&#xff0c;主要原因就是因为浏览器的“同源策略”&#xff1b;1995年&#xff0c;同…

高精度惯性传感器如何实现全球自动化愿景?

来源&#xff1a;MEMS如果农场基于丰富的传感器内容来联合利用自动化地面车辆和航空器&#xff0c;那么地面作业将更加有效&#xff1b;如果手术室能够将经典的导引技术供精密制导机械臂使用&#xff0c;那么成功率将得到保障&#xff1b;如果救援行动中能够精准定位施救人员的…

catia怎么将特征参数化_搭建商城网站怎么将页面简洁化?这三个步骤不能少

随着用户群体的年轻化&#xff0c;消费者的习惯也会开始转变&#xff0c;简洁的风格设计能帮助商家更快的吸引到用户。制作自己的商城系统来进行产品销售是常见的方式之一&#xff0c;商家需要做好自己的网站规划&#xff0c;并向开发商提出相应的要求。那么&#xff0c;今天就…

宇宙是一个图网络?「全球最聪明的人」刚刚为物理基础理论指出了全新道路...

来源&#xff1a;机器学习研究组订阅号图片来源&#xff1a;机器之心「物理学已经很长一段时间没有出现任何显著进展了。探测引力波或许算是一个&#xff0c;」斯蒂芬沃尔夫勒姆表示。「我非常希望在纯技术层面上&#xff0c;我们所做的一切能够使理论物理学重新焕发活力。尽管…

python3字典写入excel_Python玩转Excel(第2期)~这里只有干货

第1期发布之后&#xff0c;反响特别好&#xff0c;很快通过审核&#xff0c;不到2小时推荐量2600多&#xff0c;还是挺高的&#xff0c;说明大家对此版块内容还是感兴趣的&#xff0c;激发了我创作的动力。谢谢大家&#xff0c;今天加班再更新一期。一、如何创建数据的‘’粮仓…

信息通信业(ICT)十大趋势

来源&#xff1a;中国信息通信研究院&#xff0c;原文刊载于《互联网天地》2020年2期2019年12月26日&#xff0c;中国信息通信研究院在北京发布了信息通信业&#xff08;ICT&#xff09;十大趋势。这十大趋势是&#xff1a;1、5G时代起航&#xff0c;开辟数字化转型新空间2、信…