注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

清风幻影的博客

Where there is love, I will be there.

 
 
 

日志

 
 
关于我

同是天涯沦落人,相逢何必曾相识. 天生我材必有用,千金散尽还复来. 天若有情天亦老,人间正道是沧桑. 月影西斜人已去, 堤上梅花情依旧, 此情故已成追忆, 美人如玉夜留香

网易考拉推荐

oracle数据表造成死锁,解决方法  

2015-02-13 14:43:18|  分类: oracle_1 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
http://ajoker.iteye.com/blog/2185357
今天早上查看数据表的时候发现,数据表中多了一条数据(这条数据不应该存在),像往常一样用delete where语句删除这条语句,中间卡了一下,然后一直显示正在执行中

先前也遇到过类似的情况,但是那时是因为,我删除数据没有提交事务,这次不一样,删除不了,一直卡在这里,点击取消后,有没有事务的提交与回滚。开 始怀疑是因为其它的人正在操作了这张数据表,造成了琐表,就等了一段时间,后来发现还是这样的情况,没办法只好百度找解决办法,问题来了到底是琐表造成的 原因,还是另有其它的原因呢?出现这种情况,大致可以分为几种:

1.因为数据量过大,造成数据删除缓慢

2.sql语句使用了for update,没有提交事务

3.其它的人正在操作这张数据表,造成琐表

排除1,2,解决办法找到琐表原因,结束进程。

一下来自百度-----------------------------

解决办法

 

-- 查出被锁的表,和锁住这个表的会话ID

Sql代码  收藏代码
  1. select a.session_id ,b.* from v$locked_object a,all_objects b  
  2. where a.object_id=b.object_id  

 

Sql代码  收藏代码
  1.    

 

-- 查出对应的SQL语句

Java代码  收藏代码
  1. select vs.SQL_TEXT,vsess.sid,vsess.SERIAL#,vsess.MACHINE,vsess.OSUSER  
  2. ,vsess.TERMINAL,vsess.PROGRAM,vs.CPU_TIME,vs.DISK_READS  
  3. from v$sql vs,v$session vsess  
  4. where vs.ADDRESS=vsess.SQL_ADDRESS  
  5. and vsess.sid=(上面查出来的会话ID)  

 

 

 

 

--查看是哪个session引起的

Sql代码  收藏代码
  1. 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;   

 

 

--杀进程

Sql代码  收藏代码
  1. ALTER SYSTEM KILL SESSION '查出的SID,查出的SERIAL#';  ---上面这条语句可以查到sid以及serial  

 

ok,现在问题搞定了

  评论这张
 
阅读(526)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018