oracle会自动解决思索问题,把响应的死锁解除。实验:create table A(id int);insert into A values(100);
insert into A values(100);
insert into A values(100);select * from A;>建立死锁机制--A用户update A set id = 1000 where id = 100;--B用户update A set id = 2000 where id = 200;--A用户去触碰B用户正在使用的id=200的数据update A set id = 1500 where id = 200;--B用户去触碰A用户正在使用的id=100的数据
update A set id = 1100 where id = 100;这样就会造成死锁,oracle会自动解除死锁。
---------------------
Oracle 10.2.0.1.0 64位 ,操作系统 AIX 6.1
近期在查看alert日志时发现如下信息
Mon Nov 5 16:02:40 2012
ORA-00060: Deadlock detected. More info in file /oradata/admin/$ORACLE_SID/udump/$ORACLE_SID_ora_6554104.trc.
Mon Nov 5 16:06:52 2012
ORA-00060: Deadlock detected. More info in file /oradata/admin/$ORACLE_SID/udump/$ORACLE_SID_ora_9961902.trc.
Mon Nov 5 16:51:21 2012
提示检查到死锁,然后查看trace文件more /oradata/admin/$ORACLE_SID/udump/$ORACLE_SID_ora_6554104.trc前面无关内容省略*** 2012-11-05 16:02:40.639
*** SERVICE NAME:(SYS$USERS) 2012-11-05 16:02:40.638
*** SESSION ID:(154.37034) 2012-11-05 16:02:40.638
DEADLOCK DETECTED
[Transaction Deadlock]
Current SQL statement for this session:
UPDATE "RZ_DLOGIN" SET "D_DATA" = :1 WHERE "G_NAME" = :2 AND "D_CODE" = :3 AND "CLASS_ID" = :4
The following deadlock is not an ORACLE error. It is a
deadlock due to user error in the design of an application
or from issuing incorrect ad-hoc SQL. The following
information may aid in determining the deadlock:
Deadlock graph:
---------Blocker(s)-------- ---------Waiter(s)---------
Resource Name process session holds waits process session holds waits
TX-00080028-0000d238 68 154 X 81 97 X
TX-0005001d-0000ac81 81 97 X 68 154 X
session 154: DID 0001-0044-00000E1E session 97: DID 0001-0051-00000BDA
session 97: DID 0001-0051-00000BDA session 154: DID 0001-0044-00000E1E
Rows waited on:
Session 97: obj - rowid = 0000D950 - AAANlQAAFAAA/ilABD
(dictionary objn - 55632, file - 5, block - 260261, slot - 67)
Session 154: obj - rowid = 0000D950 - AAANlQAAFAAA/ilAA7
(dictionary objn - 55632, file - 5, block - 260261, slot - 59)
Information on the OTHER waiting sessions:
Session 97:
pid=81 serial=21773 audsid=600338 user: 55/DB
O/S info: user: Administrator, term: name1, ospid: 1408:1296, machine: factory\name1
program: name.exe
application name: name.exe, hash value=0
Current SQL Statement:
UPDATE "RZ_DLOGIN" SET "D_DATA" = :1 WHERE "G_NAME" = :2 AND "D_CODE" = :3 AND "CLASS_ID" = :4
End of information on OTHER waiting sessions.经过与开发人员沟通,已确认 UPDATE "RZ_DLOGIN" SET "D_DATA" = :1 WHERE "G_NAME" = :2 AND "D_CODE" = :3 AND "CLASS_ID" = :4 这一语句对应的前端应用A,与程序使用者沟通了解到前端应用A确认运行较慢,一般要等待一段时间才能完成,有时也会遇到等待无反应的情况,此时关闭应用A程序,重新运行就会正常。同时将上述日志中发现的问题反映给开发人员,开发人员也证实此处程序需要优化。
现在的问题是: 既然Oracle日志中已经提示检查到死锁,为何前端应用A只是等待了一段时间(这段等待时间用户还能够接受)就能够继续使用了,此时用下列语句查询数据库中是否存在死锁
select username,lockwait,status,machine,program from v$session where sid in
(select session_id from v$locked_object)
和
select sql_text from v$sql where hash_value in
(select sql_hash_value from v$session where sid in
(select session_id from v$locked_object))
返回为空,说明查询的时候死锁已经不存在了,为什么Oracle检测到死锁后,没有任何人处理,死锁又自己消失了,难道是Oracle后台进程可以智能处理这些死锁?
另外,在百度查到关于死锁的处理方法,有这么一段话:
一般情况下,只要将产生死锁的语句提交就可以了,但是在实际的执行过程中。用户可能不知道产生死锁的语句是哪一句。可以将程序关闭并重新启动就可以了。
这个说法似乎也与前端应用A的用户遭遇的情况差不多:有时候如果等待无反应,关闭A程序,然后重新运行就正常了。
请问百度里的这个说法是不是正确的?是不是以后遇到Oracle数据库死锁都可以无视它,因为Oracle可以自己解决?
---------------------------------------------------------------
最近在写存储过程的时候,因为要测试存储过程的运行情况,中途操作失误,导致存储过程死锁,写了半天的东西编译不了了,没办法只能重新创建一个存储过程,以前的那个删也删不掉,用也用不了,很难受,最后是重启了数据库才解决这个问题。不过现在找到一种更简单的方法解决这个问题。
四步解决:
1、执行语句select object_name,machine,s.sid,s.serial#
from v$locked_object l,dba_objects o ,v$session s
where l.object_id = o.object_id and l.session_id=s.sid;
1
2
3
查出来哪些对象被锁,得到sid
2、还是执行语句
alter system kill session '24,111'; (其中24,111分别是上面查询出的sid,serial#)
kill该session (sid,serial#即为上面查出来的sid和serial#)
注:此语句只是将该存储过程的状态由active改为了killed,并没有彻底的释放该存储过程,所以还是编译不了存储过程
3、要解决这一问题只能在OS上杀死这一线程(进程)了
执行语句获得线程(进程)号select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid=24
1
2
3
(24是上面的sid)
4、在服务器上执行下列命令(数据库在哪台机子,就在哪台机子执行)orakill sid thread
1
orakill是oracle提供的命令,一般装oracle的时候,已经配上环境变量,这里可直接运行
其中sid为该存储过程所在数据库的实例名我的为orcl
thread即为线程(进程)号,即第三步查出来的spid。以上就是解决存储过程的死锁问题了,也是从别人那取经回来的东西,写出来,主要就是为了加强记忆
---------------------

oracle解除死锁相关推荐

  1. ORACLE查找并解除死锁进程

    ORACLE查找并解除死锁进程 1.查找死锁进程 select /*+RULE*/v$lock.sid, decode(v$lock.type,         'MR', 'Media Recove ...

  2. oracle 数据库死锁查询并解除死锁

    --查询死锁 Select substr(to_char(l.session_id) || ',' || to_char(s.serial#), 1, 12) sid_ser,substr(l.os_ ...

  3. 死锁产生的4个必要条件,如何检测,解除死锁

    死锁的四个必要条件  操作系统中有若干进程并发执行,它们不断申请.使用.释放系统资源,虽然系统的进 程协调.通信机构会对它们进行控制,但也可能出现若干进程都相互等待对方释放资源才能 继续运行,否则就阻 ...

  4. oracle激活锁定用户,oracle 锁用户,oracle解除用户锁定

    oracle 锁用户,oracle解除用户锁定 oracle 线上用户老是被锁: 1,查明所有的用户哪些被锁了 SQL> select username,account_status,lock_ ...

  5. Oracle查看死锁 .

    http://blog.csdn.net/sunny_kan/article/details/3476758 查看有哪些表被锁住 select b.owner,b.object_name,a.sess ...

  6. mysql加锁后怎么解除_Mysql查看死锁与解除死锁的深入讲解

    前言 前段时间遇到了一个Mysql 死锁相关的问题,整理一下. 问题描述:Mysql 的修改语句似乎都没有生效,同时使用Mysql GUI 工具编辑字段的值时会弹出异常. 什么是死锁 在解决Mysql ...

  7. 死锁的处理策略—预防死锁、避免死锁、检测和解除死锁

    一.死锁的处理策略--预防死锁 (一)破坏互斥条件 互斥条件:只有对必须互斥使用的资源的争抢才会导致死锁. 如果把只能互斥使用的资源改造为允许共享使用,则系统不会进入死锁状态.比如: SPOOLing ...

  8. 预防死锁,检测死锁,避免死锁,解除死锁....

    什么是死锁 在并发环境下,各个进程因竞争资源而造成的一种互相等待对方手里的资源,导致各个进程都阻塞,都无法向前推进的现象就是死锁.发生死锁后如果没有外力干涉就会导致任务无法向前推进. 进程死锁.饥饿. ...

  9. oracle死锁进程杀不掉,oracle杀死死锁进程

    先查看哪些表被锁住了 selectb.owner,b.object_name,a.session_id,a.locked_mode fromv$locked_objecta,dba_objectsb ...

最新文章

  1. 在JavaScript中逐个遍历数组?
  2. Dataset之RentListingInquries:RentListingInquries(Kaggle竞赛)数据集的简介、下载、案例应用之详细攻略
  3. php日志导出oracle,一个php导出oracle库的php代码
  4. C语言学习之猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。
  5. linux下线程绑定内核,多线程 – 无法将内核线程绑定到CPU
  6. python 包和模块的区别_3分钟带你搞懂Python模块、包的区别和使用
  7. mockito_Mockito和Hamcrest的试驾制造商
  8. POJ 3696 欧拉函数+快速幂
  9. 树莓派安装CentOS
  10. 杭州湾跨海大桥视频上云,夯实智慧高速“云基建
  11. 小米入住华为鸿蒙,华为鸿蒙开放,国产厂商集体失声?小米率先表态!
  12. if vue 跳出_vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
  13. 一文看尽中亦科技EVO-ITSM 3.0新品发布会
  14. fckeditor在线编辑器
  15. XRD测试常见问题及解答(一)
  16. cdr添加节点快捷键_CDR快捷键大全
  17. oracle创建用户,授权connect,resource后无法建表
  18. vue2练习五个小例子笔记
  19. 华为到底玩的哪些汽车技术?
  20. 应用程序编程接口大全_应用程序编程接口101

热门文章

  1. 个人Wordpress站点设置Windows Live writer
  2. 【CLRS】《算法导论》读书笔记(一):堆排序(Heapsort)
  3. FastAdmin 极速后台管理框架(三周年)V1.0.0.20190410_beta
  4. Ehcarts 与 百度地图结合时,如何获取bmap的实例对象?
  5. 【Alpha】Daily Scrum Meeting第八次
  6. 【百度地图API】暑假放假回老家——城市切换功能
  7. 解决PHPCMS 安装问题 Can not connect to MySQL server
  8. servlce与filter的url-pattern介绍
  9. Spring Boot 2.4.0 全新发布,还不快来实战
  10. mysql hive 内置函数_Hive 内置函数