[20160608]自治事务引起死锁.txt
[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;
--通过以上信息应该可以定位问题语句,以及在存储过程的位置.
相关文章:

动感效果的TAB选项卡 jquery 插件
动感效果的TAB选项卡 jquery 插件 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns"http://www.w3.org/1999/xhtml"><head><me…

Linux上隐藏进程名(初级版)
缘起 上一篇博文 模仿nginx修改进程名 中提到了一种修改进程名的方法,就像 nginx 一样,给不同进程命名为 master 以及 worker 等。那么能不能把新进程名设置为空字符串呢?如果能,又会有哪些应用场景呢? 答案可能是能…
神操作!一行Python代码搞定一款游戏?给力!
来源:pypl编程榜一直以来Python长期霸占编程语言排行榜前三位,其简洁,功能强大的特性使越来越多的小伙伴开始学习Python 。甚至K12的同学都开始学习Python 编程。新手入门的时候趣味性其实最重要的。那么一行Python 代码到底能玩出什么花样&a…

jquery对所有input type=text的控件赋值
function resetData() { $("input[typetext]").each( function() { $(this).attr("value",""); } ); }

free not return memory
个人博客:https://rebootcat.com/2020/11/05/free_mem/ 内存泄露? 观察到一台机器上的内存使用量在程序启动之后,持续增长,中间没有出现内存恢复。怀疑是不是出现了内存泄露的问题? 然后使用相关的内存分析工具进行了…

成大事必备9种能力
挑战生存的能力:善于在现实中寻找答案 1、摆正心态,敢于面对现实 对于那些不停地抱怨现实恶劣的人来说,不能称心如意的现实,就如同生活的牢笼&a…
懂语言者得天下:NLP凭什么被称为人工智能的掌上明珠?
受访者 | 简仁贤,竹间智能创始人&CEO记者 | 邓晓娟出品 | AI科技大本营(ID:rgznai100)随着技术的发展,大数据、云计算、人工智能、区块链都慢慢地为人熟知。2016 年 Google 推出 AlphaGo,让人工智能走进了大众的视…

[转]SIFT特征提取分析
SIFT(Scale-invariant feature transform)是一种检测局部特征的算法,该算法通过求一幅图中的特征点(interest points,or corner points)及其有关scale 和 orientation 的描述子得到特征并进行图像特征点匹配࿰…

博客大事记之迁移博客到香港主机
个人博客:https://rebootcat.com/2020/11/10/move_blog_hk/ 前言 之前其实已经写过一篇博文: 迁移博客到香港虚拟空间,那为什么又要写这篇博客呢? 上次其实是把我的博客迁移到一个香港的虚拟空间里,但是不到半年的时…
限时福利:腾讯高级专家手把手教你打造 OCR 神器!
OCR,英文全称即 optical characters recognition(光学字符识别),通过服务器把图片上的文字识别出来,以供大家编辑使用,比如进出火车站的时候,已经可以自动识别的身份证;在道路行驶中…

C++与.net的编译方式
C和.Net程序采用了两种不同的编译方式。 通常一个C编写的程序,都是一次编译成二进制的代码,在相应的操作系统平台上直接执行即可。 而.Net程序采用两次编译的方式,用C#,VB.Net等语言写成的程序被编译成IL代码,通过CLR在…

awk (一)
示例文件:[rootorclsrv ~]# catsample Heigh-ho! sing,heigh-ho! unto the green holly: Most friendship isfeigning, most loving mere folly: Then, heigh-ho, theholly!使用感叹号(!) 作为字段分隔符(FS)打印示例数据的第1 个字段:[rootorclsrv~]# …

TCP全连接和半连接的问题探讨
个人博客: https://rebootcat.com/2020/11/14/tcp_accept/ 从何说起 说起 tcp 的连接过程,想必 “3次握手4次挥手”是大家广为熟知的知识,那么关于更细节更底层的连接过程也许就很少人能讲清楚了。 所以本文会先简单回顾一下 tcp 的 3次握手…

[转] ASP.NET MVC3 路由和多数据集的返回
1.ASP.NET MVC3 中的路由 同前边一样本篇并不会过多的介绍理论知识,我们在Global.asax.cs文件中可以看到如下代码: routes.MapRoute("Default", // Route name"{controller}/{action}/{id}", // URL with parametersnew { controlle…
给Python代码加上酷炫进度条的几种姿势
作者 | 刘早起来源 | 早起Python(ID: zaoqi-python)大家好,在下载某些文件的时候你一定会不时盯着进度条,在写代码的时候使用进度条可以便捷的观察任务处理情况,除了使用print来打印之外,今天本文就介绍几种…

(转)mongodb分片
本文转载自:http://www.cnblogs.com/huangxincheng/archive/2012/03/07/2383284.html 在mongodb里面存在另一种集群,就是分片技术,跟sql server的表分区类似,我们知道当数据量达到T级别的时候,我们的磁盘,内…

深入浅出paxos
原文 https://rebootcat.com/2020/12/05/paxos/
Uber 前无人驾驶工程师告诉你,国内无人驾驶之路还要走多久?
受访者 | Graviti 创始人&CEO 崔运凯记者 | Aholiab,编辑 | Carol出品 | AI科技大本营(ID:rgznai100)经过数年的发展,现在的人们谈到“AI”已经不再像过去一般感到遥不可及。但 AI 在国内发挥的作用仍然只是冰山一角ÿ…

oracle服务
OracleOraDb11g_home1ClrAgent服务,在网上查找到了资料 http://download.oracle.com/docs/cd/B19306_01/win.102/b14306/install.htm Configuring Extproc Agent Using Windows Service As part of Oracle Database Extensions for .NET installation, a Windows se…

B00009 C语言分割字符串库函数strtok
切割字符串是常用的处理。 这里给出一个使用函数strtok切割字符串的例子。 使用C语言的库函数strtok来切割字符串的好处在于,可以指定任意字符作为分隔符来切割单词。使用该函数,切割字符串的分隔符可以同时指定多个,放在一个字符串数组中。 …

WEB打印大全
1、控制"纵打"、 横打”和“页面的边距。 (1)<script defer> function SetPrintSettings() { // -- advanced features factory.printing.SetMarginMeasure(2) // measure margins in inches factory.SetPageRange(false, 1, 3) // ne…
漫画 | 程序媛小姐姐带你一次了解什么是排序算法
来源 | 小齐本齐封图 | CSDN 付费下载自视觉中国插入排序借用《算法导论》里的例子,就是我们打牌的时候,每新拿一张牌都会把它按顺序插入,这,其实就是插入排序。齐姐声明:虽然我们用打牌的例子,但是可不能学…

POJ 1207 The 3n + 1 problem
题目链接:http://poj.org/problem?id1207 题目大意:给你一个数x,规定一个函数F(x),如果x为1则F(x)1,否则如果x是偶数,F(x)F(x/2),x为奇数F(x)F(3*x1)计算给定x到变换到1的步数。 注意点&#x…

PopupWindow响应返回键的问题
假设情景是这样的:在一个Activity中弹出一个PopupWindow,要求在按返回键时关闭该PopupWindow。 如果该PopupWindow是无焦点的(默认情况),那么可以在Activity中响应返回键(onBackPressed)&#x…

Unix / Linux世界里的4-2-1
Unix / Linux世界里的4-2-1 在Unix / Linux世界里,4代表可读( r ),2代表可写入 ( w ),1代表可执行 ( x ) 如果拥有7 421 的权限,即代表这个人可以对档案完全控制。 以0777为例: 去掉0,第一个7代表着拥有者…
深度学习概述:NLP vs CNN
作者 | Manish Kuwar译者 | 苏本如,责编 | 郭芮头图 | CSDN 下载自视觉中国出品 | CSDN(ID:CSDNnews)以下为译文:当今,人工智能已经不仅仅是一个技术术语了。这项技术在过去十年的时间内几乎将其影响扩展到…

oracle 求A中不存在于B的记录
oracle 求A中不存在于B的记录 select * from a minus select * from b 是求A中不存在于B的记录select * from a union select * from b 是求A和B的DISTINCT的并集select * from a union all select * from b 是求A和B的冗余并集那么A和B的交集是什么函数来的?交集是 INTERSE…

正则表达式grep、egrep--already
第一式 grep是什么 #man grepgrep(global search regular expression(RE)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。UNIX的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令…
万字长文综述目标检测领域,你要的都在这里
来源 | AI专栏(ID: pursue-Y-future)目标检测是计算机视觉中的一个重要问题,近年来传统检测方法已难以满足人们对目标检测效果的要求,随着深度学习在图像分类任务上取得巨大进展,基于深度学习的目标检测算法逐渐成为主…

ASP.net随机数应用实例
家可能都用过Chinaren的校友录,不久前它的留言簿上加了一个防止灌水的方法,就是系统每次产生一个由随机的数字和字母组成的图片,每次留言必须正确地输入这些随机产生的字符,否则不能添加留言。这是一个很好的防止恶意攻击的方法&a…