暂无图片
更新表时出现此数据库错误:ORA-00054:资源正忙并且正在使用指定的NOWAIT进行获取,或者超时已过期,怎么解决?
我来答
分享
Tom
2021-09-16
更新表时出现此数据库错误:ORA-00054:资源正忙并且正在使用指定的NOWAIT进行获取,或者超时已过期,怎么解决?

更新表时出现此数据库错误:ORA-00054:资源正忙并且正在使用指定的NOWAIT进行获取,或者超时已过期,怎么解决?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
JiekeXu
暂无图片

有锁,别人占用了,等他提交或者回滚,或者找出来 杀掉他。用下面语句查查看。

select s.SID,s.SERIAL#,s.MACHINE,s.TYPE,l.TYPE,l.CTIME,l.BLOCK,l.REQUEST,l.LMODE,
       decode(l.lmode,
              0,
              'None',
              1,
              'Null',
              2,
              'Row-S (SS)',
              3,
              'Row-X (SX)',
              4,
              'Share',
              5,
              'S/Row-X (SSX)',
              6,
              'Exclusive',
              substr(to_char(l.lmode), 1, 13)) as "Locked Mode",
       DECODE(L.TYPE,
              'MR',
              'File_ID:' || L.ID1,
              'TM',
              t.NAME,
              'TX',
              'USN:' || to_char(TRUNC(L.ID1 / 65536)) || 'RWO:' ||
              nvl(r.NAME, 'None'),
              L.ID1) as LOCK_ID1,
       'alter system kill session ''' || s.SID || ',' || s.SERIAL# || ''';' as "Kill"
  from v$process p
 inner join v$session s
    on s.PADDR = p.ADDR
 inner join v$lock l
    on l.SID = s.SID
  left join sys.obj$ t
    on l.ID1 = t.obj#
  left join sys.obj$ r
    on s.ROW_WAIT_OBJ# = r.obj#
 where 1 = 1
   and l.TYPE != 'MR' 
-- and l.TYPE  = 'TM'
   and l.lmode = 3
 order by s.SID;

暂无图片 评论
暂无图片 有用 0
暂无图片
Uncopyrightable

找个漆黑无人打扰的夜晚进行操作,好使~

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏