一个奇怪的锁定对象

[复制链接]
查看11 | 回复9 | 2007-10-20 08:38:44 | 显示全部楼层 |阅读模式
SELECT l.session_id sid, s.serial#, l.locked_mode, l.oracle_username, s.user#,
l.os_user_name,s.machine, s.terminal,a.sql_text, a.action
FROM v$sqlarea a,v$session s, v$locked_object l
WHERE l.session_id = s.sid
AND s.prev_sql_addr = a.address;
问题1:
查询出来的结果是
selectseq_test.NEXTVAL FROM DUAL;
问题2:
select /*+ rule */
lpad('--', decode(b.BLOCK, 1, 0, 4)) || s.username user_name,
b.TYPE,
o.owner || '.' || o.object_name object_name,
s.sid,
s.serial#,
decode(b.REQUEST, 0, 'BLOCKED', 'WAITING') status,
s.SQL_HASH_VALUE,
sq.SQL_TEXT
FROM dba_objects o, v$session s, v$lock v, v$lock b, v$sqlarea sq
WHERE v.ID1 = o.object_id
AND v.SID = s.sid
and v.SID = b.SID
and (b.BLOCK = 1 or b.REQUEST > 0)
and v.TYPE = 'TM'
and s.SQL_HASH_VALUE = sq.HASH_VALUE(+)
order by b.ID2, v.ID1, User_name desc;
查询结果是:INSERT INTO 语句
会有什么情况能阻塞insertinto 的执行呢?(排除空间不够的问题)?

说明一下:insertinto 的插入值是根据selectseq_test.NEXTVAL FROM DUAL获取到值。
猜测: 1 、 难道是执行insert into 的时候获取不上selectseq_test.NEXTVAL FROM DUAL的值。造成的insert into的等待?
2、又有什么情况下导致selectseq_test.NEXTVAL FROM DUAL不能获取seqence号呢?

谢谢!
[ 本帖最后由 aiyuewbl 于 2009-9-23 17:03 编辑 ]
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层


怎么没人解答一下啊
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
在 WAIT 什么呢?
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
能不能把v$locked_object这个表的数据贴出来看看locked_mode是什么
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
oracle中有大量的等待事件:
db file sequential read
SQL*Net break/reset to client
SQL*Net message from client
造成链接丢失。
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
能说说,你是如何知道此进程被堵塞了?被谁堵塞了?
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
做一个awr的报告看看
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
回复ZALBB
select /*+ rule */
lpad('--', decode(b.BLOCK, 1, 0, 4)) || s.username user_name,
b.TYPE,
o.owner || '.' || o.object_name object_name,
s.sid,
s.serial#,
decode(b.REQUEST, 0, 'BLOCKED', 'WAITING') status,
s.SQL_HASH_VALUE,
sq.SQL_TEXT
FROM dba_objects o, v$session s, v$lock v, v$lock b, v$sqlarea sq
WHERE v.ID1 = o.object_id
AND v.SID = s.sid
and v.SID = b.SID
and (b.BLOCK = 1 or b.REQUEST > 0)
and v.TYPE = 'TM'
and s.SQL_HASH_VALUE = sq.HASH_VALUE(+)
order by b.ID2, v.ID1, User_name desc;
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
ITL?
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
把seq得cache放大点.
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行