文档章节

Oracle数据库数据表锁表的原理和解决办法

 牧晚春
发布于 2016/05/29 00:05
字数 488
阅读 119
收藏 0

前几天在一个项目中遇到执行update操作的时候,数据库总是没有响应,以为是数据库语句写错了,经过反复排查,发现是目标数据库中的表被锁住了,只能执行select操作,其它操作都失败。下面我就将我个人的排查数据库是否有锁,怎样排除锁,以及产生锁的原理和大家分享一下。

死锁的排查和解除:

     1.查看数据库中锁的数量(是否有锁),如果显示的数量为零,恭喜你,你的数据库没有锁。
select count(*) from v$locked_object
     2.如果有锁,查看锁的详细信息。
select * from v$locked_object
     3.查看具体的哪张表被锁。
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
    4.是哪一个session导致(会话)。
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
    5.杀掉对应的应用进程
alter system kill session'1025,41'

    其中1025为sid,41为serial#.

死锁产生的原理:

当用户对数据库中的某一条数据执行更新或删除操作时,这条数据在执行结束后,并没有提交到数据库当中,此时该记录的状态是被锁定的,当下一个用户对该数据再次进行执行类似的操作的时候,就会出现死锁。关于死锁的分类和详细解释可以参考(http://blog.sina.com.cn/s/blog_9d12d07f0102vu72.html

oracle 查询分析器中执行update操作,在没有commit操作以前,该数据是被锁定的(行锁),要想解决行锁,必须手动的commit;但是在利用数据库管理对象(后台操作数据库的对象),其中就封装了commit操作,这样就在每次执行完操作后,自动commit。

 

 

参考:

http://blog.csdn.net/rznice/article/details/6683905/

 

 

© 著作权归作者所有

粉丝 0
博文 1
码字总数 488
作品 0
宝山
程序员
私信 提问
Oracle12c数据的逻辑备份与恢复

数据库恢复是指在数据库发生故障时,使用数据库备份还原数据库,使数据库恢复到无故障状态。 根据数据库恢复时使用的备份不同,恢复分为物理恢复和逻辑恢复。所谓的物理恢复就是,利用物理备...

1027
2014/05/29
0
0
CBO对于Oracle SQL执行计划的影响(之二)

初试化参数对于执行计划的影响 有几个初试化参数对于多表连接的执行计划有重要的关系。 在Oracle 8 release 8.0.5中引入了两个参数OPTIMIZERMAXPERMUTATIONS 和 OPTIMIZERSEARCHLIMIT optim...

郑加威
2017/01/22
0
0
Oracle vs PostgreSQL,研发注意事项(1)-查询锁表

Oracle数据库,查询语句不会锁表,但PostgreSQL在开启事务后,查询数据表会锁表,在试图DROP/TRUNCATE TABLE时会一直等待。 --------------------------- Session A drop table if exists t...

EthanHe
2018/07/19
0
0
Hibernate乐观锁、悲观锁和多态

一、乐观锁和悲观锁 悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。...

jmcui
2017/05/22
0
0
Hibernate上路_19-事务的丢失更新

事务的并发问题:脏读、不可重复读、幻读。 脏读:一个事务读取另一个事务未提交的数据。 不可重复读:在一个事务中,读取到另一个事务已经提交update数据,造成两次读取不一样。 幻读:在一...

vigiles
2013/11/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【AI实战】手把手教你深度学习文字识别(文字检测篇:基于MSER, CTPN, SegLink, EAST等方法)

文字检测是文字识别过程中的一个非常重要的环节,文字检测的主要目标是将图片中的文字区域位置检测出来,以便于进行后面的文字识别,只有找到了文本所在区域,才能对其内容进行识别。 文字检...

雪饼
今天
5
0
思维导图XMind 8 Pro 绿化方法(附序列号)

按部就班: Step 1 -全新下载最新版本的 Xmind 8(注必须是英文官方的版本,中文代{过}{滤}理网站的版本修改过,无法使用pj); Step 2 -安装完毕后,点击文末的下载按钮下载pj补丁文件包,将...

一只小青蛙
今天
10
0
数据结构(ER数据库)设计规范

表命名规范 表命名的规则分为3个层级,层级之间通过_分割,例如b_r_identity、d_l_identity。规约为: [leavel]_[type]_[name] [leavel] 表示数据库表的层级和功能,分为: s:业务无关的系统...

随风溜达的向日葵
今天
5
0
阿里Sentinel控制台源码修改-对接Apollo规则持久化

https://github.com/alibaba/Sentinel/wiki/%E5%9C%A8%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8-Sentinel 动态规则扩展 https://github.com/alibaba/Sentinel/wiki......

jxlgzwh
昨天
8
0
在Linux系统中创建SSH服务器别名

如果你经常通过 SSH 访问许多不同的远程系统,这个技巧将为你节省一些时间。你可以通过 SSH 为频繁访问的系统创建 SSH 别名,这样你就不必记住所有不同的用户名、主机名、SSH 端口号和 IP 地...

老孟的Linux私房菜
昨天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部