12
返回列表 发新帖
楼主: woshiyiziyu

关于死锁的疑惑

[复制链接]
论坛徽章:
23
2009日食纪念
日期:2009-07-22 09:30:00秀才
日期:2015-12-21 09:48:11秀才
日期:2015-12-21 09:53:46天枰座
日期:2015-12-23 11:00:06金牛座
日期:2015-12-25 11:38:39秀才
日期:2016-01-12 11:23:27秀才
日期:2016-01-25 14:55:31双子座
日期:2016-05-06 09:49:392017金鸡报晓
日期:2017-01-10 15:33:11乌索普
日期:2017-02-18 09:05:12
11#
 楼主| 发表于 2009-9-14 21:48 | 只看该作者
终于解决了。
环境Oracle 10g(公司的生产库,呵呵)
用户:sys
实验步骤:
1.delete from scott.emp where empno=1111;(之前我插入了一条语句)
2.select a.sid,b.owner,object_name,object_type from v$lock a,all_objects b
  where TYPE = 'TM' and a.id1=b.object_id;
3.select * from v$lock where sid=829;
4.select object_id,object_name from all_objects where object_id in('51149','51151');
在这里我用的是all_objects,原文用的是user_objects,但是我查不出结果,可能跟用户sys有关吧。
操作步骤如下图:

[ 本帖最后由 woshiyiziyu 于 2009-9-14 22:01 编辑 ]

SID4.jpg (47.46 KB, 下载次数: 4)

SID4.jpg

使用道具 举报

回复
论坛徽章:
23
2009日食纪念
日期:2009-07-22 09:30:00秀才
日期:2015-12-21 09:48:11秀才
日期:2015-12-21 09:53:46天枰座
日期:2015-12-23 11:00:06金牛座
日期:2015-12-25 11:38:39秀才
日期:2016-01-12 11:23:27秀才
日期:2016-01-25 14:55:31双子座
日期:2016-05-06 09:49:392017金鸡报晓
日期:2017-01-10 15:33:11乌索普
日期:2017-02-18 09:05:12
12#
 楼主| 发表于 2009-9-14 22:04 | 只看该作者
再说一下我原来的思路,我首先想通过v$sql查询到hash值或者address值(不过据说address值有可能不准)再通过v$session查询sid,但是怎么也查不出结果。

sid3.jpg (39.09 KB, 下载次数: 139)

sid3.jpg

使用道具 举报

回复
论坛徽章:
23
2009日食纪念
日期:2009-07-22 09:30:00秀才
日期:2015-12-21 09:48:11秀才
日期:2015-12-21 09:53:46天枰座
日期:2015-12-23 11:00:06金牛座
日期:2015-12-25 11:38:39秀才
日期:2016-01-12 11:23:27秀才
日期:2016-01-25 14:55:31双子座
日期:2016-05-06 09:49:392017金鸡报晓
日期:2017-01-10 15:33:11乌索普
日期:2017-02-18 09:05:12
13#
 楼主| 发表于 2009-9-14 22:06 | 只看该作者
关于死锁的实验实在是不敢在生产机上做,等有测试机再做。

使用道具 举报

回复
论坛徽章:
47
蒙奇·D·路飞
日期:2017-03-27 08:04:23马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11一汽
日期:2013-09-01 20:46:27复活蛋
日期:2013-03-13 07:55:232013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:322012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20
14#
发表于 2009-9-15 01:44 | 只看该作者
> 我首先想通过v$sql查询到hash值或者address值(不过据说address值有可能不准)再通过v$session
> 查询sid,但是怎么也查不出结果。

If you delete and then in the same session check v$session for this delete SQL, you need to use prev_hash_value. But even that is not new enough. So the reliable way to check is from another session and leave this session that just did delete alone.

> 关于死锁的实验实在是不敢在生产机上做,等有测试机再做。

There's no danger testing deadlocks using a table you create for testing purposes, on whatever database. Just don't test on the table applications are using.

Yong Huang

使用道具 举报

回复
论坛徽章:
23
2009日食纪念
日期:2009-07-22 09:30:00秀才
日期:2015-12-21 09:48:11秀才
日期:2015-12-21 09:53:46天枰座
日期:2015-12-23 11:00:06金牛座
日期:2015-12-25 11:38:39秀才
日期:2016-01-12 11:23:27秀才
日期:2016-01-25 14:55:31双子座
日期:2016-05-06 09:49:392017金鸡报晓
日期:2017-01-10 15:33:11乌索普
日期:2017-02-18 09:05:12
15#
 楼主| 发表于 2009-9-17 19:47 | 只看该作者
原帖由 Yong Huang 于 2009-9-15 01:44 发表
> 我首先想通过v$sql查询到hash值或者address值(不过据说address值有可能不准)再通过v$session
> 查询sid,但是怎么也查不出结果。

If you delete and then in the same session check v$session for this delete SQL, you need to use prev_hash_value. But even that is not new enough. So the reliable way to check is from another session and leave this session that just did delete alone.

> 关于死锁的实验实在是不敢在生产机上做,等有测试机再做。

There's no danger testing deadlocks using a table you create for testing purposes, on whatever database. Just don't test on the table applications are using.

Yong Huang

又做了一下实验,结果如下:
在同一窗口中使用prev_hash_value查不出我想要的结果
再开一个窗口,使用prev_hash_value可以查出我想要的结果

[ 本帖最后由 woshiyiziyu 于 2009-9-17 19:49 编辑 ]

同一个窗口.jpg (27.16 KB, 下载次数: 5)

同一个窗口.jpg

新开一个窗口.jpg (45.78 KB, 下载次数: 5)

新开一个窗口.jpg

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表