Oracle常见死锁发生的原因以及解决方法

Oracle常见死锁发生的原因以及解决方法

ID:47432270

大小:359.28 KB

页数:13页

时间:2020-01-11

Oracle常见死锁发生的原因以及解决方法_第1页
Oracle常见死锁发生的原因以及解决方法_第2页
Oracle常见死锁发生的原因以及解决方法_第3页
Oracle常见死锁发生的原因以及解决方法_第4页
Oracle常见死锁发生的原因以及解决方法_第5页
资源描述:

《Oracle常见死锁发生的原因以及解决方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Oracle常见死锁发生的原因以及解决方法Oracle常见死锁发生的原因以及解决办法一,删除和更新之间引起的死锁造成死锁的原因就是多个线程或进程对同一个资源的争抢或相互依赖。这里列举一个对同一个资源的争抢造成死锁的实例。Oracle10g,PL/SQLversion9.2CREATE TABLE testLock(  ID NUMBER, test VARCHAR(100)  ) COMMIT   INSERT INTO testLock VALUES(1,'test1'); INSERT INTO testLock VALUES(2,'t

2、est2'); COMMIT; SELECT * FROM testLock     1.        ID TEST  2.---------- ----------------------------------  3.         1 test1  4.         2 test2   死锁现象的重现:1)在sql窗口执行:SELECT*FROMtestLockFORUPDATE;--加行级锁并对内容进行修改,不要提交2)另开一个command窗口,执行:deletefromtestLockWHEREID=1;此时发生死锁(

3、注意此时要另开一个窗口,不然会提示:POSTTHECHANGERECORDTOTHEDATABASE.点yes后强制commit):3)死锁查看:1.SQL>  select s.username,l.object_id, l.session_id,s.serial#, s.lockwait,s.status,s.machine,s.program from v$session s,v$locked_object l where s.sid = l.session_id;

USERNAME    SESSION_ID  SERI

4、AL#    LOCKWAIT STATUS   MACHINE                 PROGRAM  2.----------  ----------  ---------- -------- -------- ----------------------  ------------  3.SYS         146         104                 INACTIVE WORKGROUPJ-THINK       PLSQLDev.exe  4.SYS         144         145

5、        20834474 ACTIVE   WORKGROUPJ-THINK       PLSQLDev.exe字段说明:Username:死锁语句所用的数据库用户;SID:sessionidentifier,session标示符,session是通信双方从开始通信到通信结束期间的一个上下文。SERIAL#:sid会重用,但是同一个sid被重用时,serial#会增加,不会重复。Lockwait:可以通过这个字段查询出当前正在等待的锁的相关信息。Status:用来判断session状态。Active:正执行SQL语句。Inact

6、ive:等待操作。Killed:被标注为删除。Machine:死锁语句所在的机器。Program:产生死锁的语句主要来自哪个应用程序。4)查看引起死锁的语句:SQL>  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));  1.  2.SQL_TEXT  3.-------------------------

7、-----------------------------------  1.delete from testLock where  ID = 1  5)死锁的处理:SQL> alter system kill session '144,145';  1.  2.System altered  3.  4.Executed in 1.061 seconds  此时在执行delete语句的窗口出现:SQL> delete from testLock where  ID = 1;  1.  2.delete from testLock wher

8、e  ID = 1  3.  4.ORA-00028: 您的会话己被终止  再查看一下死锁,会发现已经没有stauts为active的记录了:SQL>  select s.use

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。