[20160608]自治事务引起死锁.txt

--链接http://www.itpub.net/thread-2060966-2-1.html上的讨论,很久以前也遇到过
--(http://blog.itpub.net/267265/viewspace-721262/),时间有点久远,自己重复测试看看:

1.环境:
SCOTT@test> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- ----------------------------------------------------------------
x86_64/Linux 2.4.xx            10.2.0.4.0     Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi

create table t (id number,name varchar2(10));
create unique index i_t_i on t(id);

CREATE  PROCEDURE test1( l_id number,l_name varchar2,flag VARCHAR2) AS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
    commit ;
    IF flag = 'INSERT' THEN
        insert into t values(l_id,l_name);
    END IF;
    IF flag = 'UPDATE' THEN
        update t set id=l_id,name=l_name where id=l_id;
    END IF;
    IF flag = 'DELETE' THEN
        delete from t where id=l_id;
    END IF;
    commit;
    dbms_output.put_line (flag);
END;
/

insert into t values(1,'a');
insert into t values(2,'b');
commit;

2.测试:
打开会话1,执行如下:
SCOTT@test> @ &r/spid
       SID    SERIAL# SPID       PID  P_SERIAL# C50
---------- ---------- ------ ------- ---------- --------------------------------------------------
       152      19213 17197       17        209 alter system kill session '152,19213' immediate;

SCOTT@test> set SERVEROUT on
SCOTT@test> update t set name='aaa' where id=1;
1 row updated.

SCOTT@test> exec test1(1,'A','UPDATE');
BEGIN test1(1,'A','UPDATE'); END;

*
ERROR at line 1:
ORA-00060: deadlock detected while waiting for resource
ORA-06512: at "SCOTT.TEST1", line 9
ORA-06512: at line 1

--检查跟踪文件:
DEADLOCK DETECTED ( ORA-00060 )
[Transaction Deadlock]
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-0004001b-00000553        17     152     X             17     152           X
session 152: DID 0001-0011-0000F28B session 152: DID 0001-0011-0000F28B
Rows waited on:
Session 152: obj - rowid = 00013558 - AAATVYAAEAAAAGmAAA
  (dictionary objn - 79192, file - 4, block - 422, slot - 0)
Information on the OTHER waiting sessions:
End of information on OTHER waiting sessions.
Current SQL statement for this session:
UPDATE T SET ID=:B1 ,NAME=:B2 WHERE ID=:B1
----- PL/SQL Call Stack -----
  object      line  object
  handle    number  name
0x76e908a8         9  procedure SCOTT.TEST1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0x74d27968         1  anonymous block
===================================================
PROCESS STATE
-------------
Process global information:
     process: 0x7ce63c10, call: 0x7cfab610, xact: 0x7b3209d0, curses: 0x7cf796f8, usrses: 0x7cf796f8
  ----------------------------------------
  SO: 0x7ce63c10, type: 2, owner: (nil), flag: INIT/-/-/0x00
  (process) Oracle pid=17, calls cur/top: 0x7cfab610/0x7cfa89b0, flag: (0) -
            int error: 0, call error: 0, sess error: 0, txn error 0
  (post info) last post received: 109 0 4
              last post received-location: kslpsr
              last process to post me: 7ce5f4e8 1 6
              last post sent: 0 0 24
              last post sent-location: ksasnd
              last process posted by me: 7ce5f4e8 1 6
    (latch info) wait_event=0 bits=0
    Process Group: DEFAULT, pseudo proc: 0x7cea6ac8
    O/S info: user: oracle, term: pts/4, ospid: 17197
    OSD pid info: Unix process pid: 17197, image: oracle@icaredg (TNS V1-V3)

--提示很明确,甚至行号也指出来了.看~~~

--没有看到zergduan提到的“Autonomous Transaction Frames”信息.估计是版本问题,11g才会出现.

select * from x$kglob where kglnaobj='TEST1' and kglnaown='SCOTT';

Record View
As of: 2016/6/8 9:34:56

ADDR:       00002B8ADBEB0AC8
INDX:       6215
INST_ID:    1
KGLHDADR:   0000000076E908A8
KGLHDPAR:   0000000076E908A8
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
KGLHDCLT:   23
KGLNAOWN:   SCOTT
KGLNAOBJ:   TEST1
KGLFNOBJ:   TEST1
KGLNADLK:  
KGLNAHSH:   1942837727
KGLNAHSV:   df25314504e786643e240bf673cd59df
KGLNATIM:   2016/6/8 8:54:35
KGLNAPTM:  
KGLHDNSP:   1
KGLHDLMD:   1
KGLHDPMD:   0
KGLHDFLG:   33554432
KGLHDOBJ:   0000000077BDEE38
KGLHDLDC:   1
KGLHDIVC:   0
KGLHDEXC:   1
KGLHDLKC:   1
KGLHDKMK:   0
KGLHDDMK:   29
KGLHDAMK:   0
KGLOBFLG:   5
KGLOBSTA:   1
KGLOBTYP:   7
KGLOBHMK:   0
KGLOBHS0:   1675
KGLOBHS1:   0
KGLOBHS2:   36864
KGLOBHS3:   0
KGLOBHS4:   4096
KGLOBHS5:   0
KGLOBHS6:   0
KGLOBHS7:   0
KGLOBHD0:   0000000074C89A10
KGLOBHD1:   00
KGLOBHD2:   0000000077BDF150
KGLOBHD3:   00
KGLOBHD4:   000000006CFD22B8
KGLOBHD5:   00
KGLOBHD6:   00
KGLOBHD7:   00
KGLOBPC0:   0
KGLOBPC6:   0
KGLOBTP0:   00
KGLOBT00:   0
KGLOBT01:   0
KGLOBT02:   0
KGLOBT03:  
KGLOBT04:   0
KGLOBT05:   0
KGLOBT35:   0
KGLOBT06:   0
KGLOBT07:   0
KGLOBT08:   0
KGLOBT09:   0
KGLOBT10:   0
KGLOBT11:   0
KGLOBT12:   0
KGLOBT13:   0
KGLOBT14:   0
KGLOBT15:   0
KGLOBT16:   0
KGLOBT17:   0
KGLOBT18:   0
KGLOBT19:   0
KGLOBT20:   0
KGLOBT21:   0
KGLOBT22:   0
KGLOBT23:   0
KGLOBT24:   0
KGLOBT25:   0
KGLOBT26:   0
KGLOBT28:   0
KGLOBT29:   0
KGLOBT30:   0
KGLOBT31:   0
KGLOBT27:   0
KGLOBT32:   0
KGLOBT33:   0
KGLOBWAP:   0
KGLOBWCC:   0
KGLOBWCL:   0
KGLOBWUI:   0
KGLOBWDW:   0
KGLOBT42:   0
KGLOBT43:   0
KGLOBT44:   0
KGLOBT45:   0
KGLOBT46:   0
KGLOBT47:   0
KGLOBT49:   0
KGLOBT50:   0
KGLOBTL0:   0
KGLOBTL1:   0
KGLOBTS0:  
KGLOBTS1:  
KGLOBTN0:  
KGLOBTN1:  
KGLOBTN2:  
KGLOBTN3:  
KGLOBTN4:  
KGLOBTN5:  
KGLOBTS2:  
KGLOBTS3:  
KGLOBTS5:  
KGLOBTT0:  
KGLOBCCE:  
KGLOBCCEH:  0
KGLOBCLA:  
KGLOBCLC:   0
KGLOBCCC:   0
KGLOBTS4:  
KGLOBCBCA: 
KGLOBT48:   0
KGLOBDSO:   0
KGLOBDEX:   0
KGLOBDPX:   0
KGLOBDLD:   0
KGLOBDIV:   0
KGLOBDPS:   0
KGLOBDDR:   0
KGLOBDDW:   0
KGLOBDBF:   0
KGLOBDRO:   0
KGLOBDCP:   0
KGLOBDEL:   0
KGLOBDFT:   0
KGLOBDEF:   0
KGLOBDUI:   0
KGLOBDCL:   0
KGLOBDAP:   0
KGLOBDCC:   0
KGLOBDPL:   0
KGLOBDJV:   0

SYS@test> @ &r/sharepool/shp4 0000000074D27968 1
old  17:  WHERE kglobt03 = '&1'  or kglhdpar='&1' or kglhdadr='&1' or KGLNAHSH= &2
new  17:  WHERE kglobt03 = '0000000074D27968'  or kglhdpar='0000000074D27968' or kglhdadr='0000000074D27968' or KGLNAHSH= 1
TEXT           KGLHDADR         KGLHDPAR         C40                                      KGLOBHD0         KGLOBHD6           KGLOBHS0   KGLOBHS6   KGLOBT16   N0_6_16        N20   KGLNAHSH KGLOBT03        KGLOBT09
-------------- ---------------- ---------------- ---------------------------------------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ----------
子游标句柄地址 0000000074D27968 0000000076D7F590 BEGIN test1(1,'A','UPDATE'); END;        0000000076DCEA10 000000006F03D0C8       3664      12400       1804     17868      17868 4157711603 8y01d1rvx397m          0

--shp4.sqlj脚本如下:
$ cat shp4.sql
column N0_6_16 format 99999999
SELECT DECODE (kglhdadr,
               kglhdpar, '父游标句柄地址',
               '子游标句柄地址')
          text,
       kglhdadr,
       kglhdpar,
       substr(kglnaobj,1,40) c40,
       kglobhd0,
       kglobhd6,
       kglobhs0,kglobhs6,kglobt16,
       kglobhs0+kglobhs6+kglobt16 N0_6_16,
           kglobhs0+kglobhs1+kglobhs2+kglobhs3+kglobhs4+kglobhs5+kglobhs6+kglobt16 N20,
           kglnahsh,
           kglobt03 ,
           kglobt09
  FROM x$kglob
WHERE kglobt03 = '&1'  or kglhdpar='&1' or kglhdadr='&1' or KGLNAHSH= &2;

--通过以上信息应该可以定位问题语句,以及在存储过程的位置.

[20160608]自治事务引起死锁.txt相关推荐

  1. oracle 自治事物,自治事务 - 努力创造未来! - BlogJava

    自治事务前的事务管理(一般事务管理) 像 DML 这样的数据库扣作都是在事务的上下文环境中执行的.事务是一个或多个 SQL 语句的序列,执行一定的工作逻辑单元.事务.定义的特定会话可以由 commit ...

  2. PLSQL_自治事务和嵌套事物的理解和用法(案例)

    2014-06-01 Created By BaoXinjian 一.摘要 嵌套事物:指在一个Parent事务中嵌套的一个或多个Sub Transaction.并且主事务与其相互影响,这种事务就称为嵌 ...

  3. Oracle之自治事务

    昨天处理项目中的一个业务需求要用到触发器实现,触发器中涉及到在inserting.deleting.updating之后来触发对表的操作,对于inserting.updating中的操作都可以正常实现 ...

  4. PostgreSQL Oracle兼容性之 - plpgsql 自治事务(autonomous_transaction)补丁

    PostgreSQL Oracle兼容性之 - plpgsql 自治事务(autonomous_transaction)补丁 作者 digoal 日期 2016-11-04 标签 PostgreSQL ...

  5. Oracle自治事务

    本文章来自http://hi.baidu.com/sqlercn/item/10f170c96fbbfad7964452b8 Oracle自治事务介绍 在正常情况下一但发出commit或是rollba ...

  6. oracle自治事务的写法_Oracle的自治事务

    自治事务(autonomous transaction)允许你创建一个"事务中的事务",它能独立于其父事务提交或回滚.利用自治事务,可以挂起当前执行的事务,开始一个新事务,完成一些 ...

  7. 关于Oracle AUTONOMOUS TRANSACTION(自治事务)的介绍

    AUTONOMOUS TRANSACTION(自治事务)的介绍 在基于低版本的ORACLE做一些项目的过程中,有时会遇到一些头疼的问题,比如想在执行当前一个由多个DML组成的transaction(事 ...

  8. ORACLE中的自治事务

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 这是一个 ...

  9. Oracle提供的自治事务记录日志的方法

    平时在存储过程或者触发器中,想对过程中出现的异常进行记录,但是又存在一个问题,就是异常的时候,之前的DML操作要回滚,那么对异常的记录的insert语句也要被回滚掉,怎么办?这个时候就可以用到Orac ...

最新文章

  1. time datetime
  2. Linux epoll
  3. 经典的代码风格-来自微软
  4. java arcgis server_ArcGIS Server Java 开发实战---自定义command
  5. 【转】Java开发必须要知道的知识体系
  6. EntityFramework和EntityFramework.Extended使用说明——性能,语法和产生的sql
  7. 时间序列模式识别_空气质量传感器数据的时间序列模式识别
  8. Vue 3.0 Beta
  9. 实现购物车的Session
  10. win10录屏怎么用_怎么用Win10电脑系统进行录音教你两种简单实用的方法
  11. LastPass 的开源替代品
  12. Android上Sensor移植的总结
  13. 御坂搜索引擎_MisakaTranslator下载|MisakaTranslator御坂翻译器 v2.1 正式整合版下载
  14. 读书百客:《渔家傲·天接云涛连晓雾》评赏
  15. java 实验室预约系统_基于Java的实验室预约管理系统
  16. CSS盒模型居中方法,零基础学习web前端
  17. python异步和进程_浅谈python异步IO,同步IO,线程与进程~
  18. 【二分图匹配】矩阵游戏
  19. java实现商品sku_商品SKU功能设计与优化
  20. 闲谈 bypass AV

热门文章

  1. for语句内嵌例题与个人理解
  2. Swift项目引入第三方库的方法
  3. Clojure程序设计
  4. Eclipse基金会发布Eclipse Photon IDE
  5. ArrayList的subList方法
  6. npm你不知道的8个快捷键
  7. 配置Exchange OWA和Sharepoint网站单点登录
  8. 读django文档——Managing static files (e.g. images, JavaScript, CSS)
  9. mysql中leave和_MySQL数据库之Mysql存储过程使用LEAVE实现MSSQL存储过程中return语法
  10. GUI编程之tkinter